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 }}"
dimensions: "{{ ironic_api_dimensions }}"
healthcheck: "{{ ironic_api_healthcheck }}"
wsgi: "ironic.wsgi:application"
haproxy:
ironic_api:
enabled: "{{ enable_ironic }}"
@@ -411,3 +412,8 @@ ironic_database_enable_tls_internal: "{{ database_enable_tls_internal | bool }}"
# Copy certificates
###################
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"
mode: "0660"
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_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": [
{
"source": "{{ container_config_directory }}/ironic.conf",
"dest": "/etc/ironic/ironic.conf",
"owner": "ironic",
"perm": "0600"
},
}{% if ironic_wsgi_provider == "apache" %},
{
"source": "{{ container_config_directory }}/ironic-api-wsgi.conf",
"dest": "/etc/{{ apache_conf_dir }}/ironic-api-wsgi.conf",
"owner": "ironic",
"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 }}",
"dest": "/etc/ironic/{{ ironic_policy_file }}",

View File

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

View File

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