ironic: Add support for using uWSGI

Change-Id: I2b72712479a05a73b82d8e30235333db2c92ebfd
Signed-off-by: Michal Nasiadka <mnasiadka@gmail.com>
This commit is contained in:
Michal Nasiadka
2025-04-01 16:29:57 +13:00
parent 6d2a47d644
commit fd2f14cbae
5 changed files with 40 additions and 5 deletions

View File

@@ -8,6 +8,7 @@ ironic_services:
volumes: "{{ ironic_api_default_volumes + ironic_api_extra_volumes }}" volumes: "{{ ironic_api_default_volumes + ironic_api_extra_volumes }}"
dimensions: "{{ ironic_api_dimensions }}" dimensions: "{{ ironic_api_dimensions }}"
healthcheck: "{{ ironic_api_healthcheck }}" healthcheck: "{{ ironic_api_healthcheck }}"
wsgi: "ironic.wsgi:application"
haproxy: haproxy:
ironic_api: ironic_api:
enabled: "{{ enable_ironic }}" enabled: "{{ enable_ironic }}"
@@ -411,3 +412,8 @@ ironic_database_enable_tls_internal: "{{ database_enable_tls_internal | bool }}"
# Copy certificates # Copy certificates
################### ###################
ironic_copy_certs: "{{ kolla_copy_ca_into_containers | bool or ironic_enable_tls_backend | bool or ironic_database_enable_tls_internal | bool }}" ironic_copy_certs: "{{ kolla_copy_ca_into_containers | bool or ironic_enable_tls_backend | bool or ironic_database_enable_tls_internal | bool }}"
############
# WSGI
############
ironic_wsgi_provider: "uwsgi"

View File

@@ -262,4 +262,24 @@
dest: "{{ node_config_directory }}/ironic-api/ironic-api-wsgi.conf" dest: "{{ node_config_directory }}/ironic-api/ironic-api-wsgi.conf"
mode: "0660" mode: "0660"
become: true become: true
when: service | service_enabled_and_mapped_to_host when:
- service | service_enabled_and_mapped_to_host
- ironic_wsgi_provider == "apache"
- name: "Configure uWSGI for ironic-api"
include_role:
name: service-uwsgi-config
vars:
project_services: "{{ ironic_services }}"
service: "{{ ironic_services['ironic-api'] }}"
service_name: "ironic-api"
service_uwsgi_config_http_port: "{{ ironic_api_listen_port }}"
service_uwsgi_config_log_file_chmod: "644"
service_uwsgi_config_module: "{{ service.wsgi }}"
service_uwsgi_config_tls_backend: "{{ ironic_enable_tls_backend | bool }}"
service_uwsgi_config_tls_cert: "/etc/ironic/certs/ironic-cert.pem"
service_uwsgi_config_tls_key: "/etc/ironic/certs/ironic-key.pem"
service_uwsgi_config_uid: "ironic"
when:
- service | service_enabled_and_mapped_to_host
- ironic_wsgi_provider == "uwsgi"

View File

@@ -1,20 +1,27 @@
{% set apache_binary = 'apache2' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd' %} {% set apache_binary = 'apache2' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd' %}
{% set apache_conf_dir = 'apache2/conf-enabled' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd/conf.d' %} {% set apache_conf_dir = 'apache2/conf-enabled' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd/conf.d' %}
{% set command = ('/usr/sbin/' + apache_binary + ' -DFOREGROUND') if ironic_wsgi_provider == 'apache' else 'uwsgi /etc/ironic/ironic-api-uwsgi.ini' %}
{ {
"command": "/usr/sbin/{{ apache_binary }} -DFOREGROUND", "command": "{{ command }}",
"config_files": [ "config_files": [
{ {
"source": "{{ container_config_directory }}/ironic.conf", "source": "{{ container_config_directory }}/ironic.conf",
"dest": "/etc/ironic/ironic.conf", "dest": "/etc/ironic/ironic.conf",
"owner": "ironic", "owner": "ironic",
"perm": "0600" "perm": "0600"
}, }{% if ironic_wsgi_provider == "apache" %},
{ {
"source": "{{ container_config_directory }}/ironic-api-wsgi.conf", "source": "{{ container_config_directory }}/ironic-api-wsgi.conf",
"dest": "/etc/{{ apache_conf_dir }}/ironic-api-wsgi.conf", "dest": "/etc/{{ apache_conf_dir }}/ironic-api-wsgi.conf",
"owner": "ironic", "owner": "ironic",
"perm": "0600" "perm": "0600"
}{% if ironic_policy_file is defined %}, }{% elif ironic_wsgi_provider == "uwsgi" %},
{
"source": "{{ container_config_directory }}/ironic-api-uwsgi.ini",
"dest": "/etc/ironic/ironic-api-uwsgi.ini",
"owner": "ironic",
"perm": "0600"
}{% endif %}{% if ironic_policy_file is defined %},
{ {
"source": "{{ container_config_directory }}/{{ ironic_policy_file }}", "source": "{{ container_config_directory }}/{{ ironic_policy_file }}",
"dest": "/etc/ironic/{{ ironic_policy_file }}", "dest": "/etc/ironic/{{ ironic_policy_file }}",

View File

@@ -4,7 +4,7 @@ auth_strategy = noauth
{% endif %} {% endif %}
debug = {{ ironic_logging_debug }} debug = {{ ironic_logging_debug }}
log_dir = /var/log/kolla/ironic log_file = /var/log/kolla/ironic/{{ service_name }}
transport_url = {{ rpc_transport_url }} transport_url = {{ rpc_transport_url }}

View File

@@ -11,5 +11,7 @@ features:
- Variable - Variable
* - Heat * - Heat
- heat_wsgi_provider - heat_wsgi_provider
* - Ironic
- ironic_wsgi_provider
* - Octavia * - Octavia
- octavia_wsgi_provider - octavia_wsgi_provider