diff --git a/ansible/roles/cinder/defaults/main.yml b/ansible/roles/cinder/defaults/main.yml index 90bbd2d8a0..8528a4375a 100644 --- a/ansible/roles/cinder/defaults/main.yml +++ b/ansible/roles/cinder/defaults/main.yml @@ -8,6 +8,7 @@ cinder_services: volumes: "{{ cinder_api_default_volumes + cinder_api_extra_volumes }}" dimensions: "{{ cinder_api_dimensions }}" healthcheck: "{{ cinder_api_healthcheck }}" + wsgi: "cinder.wsgi.api:application" haproxy: cinder_api: enabled: "{{ enable_cinder }}" @@ -355,3 +356,8 @@ cinder_copy_certs: "{{ kolla_copy_ca_into_containers | bool or cinder_enable_tls ############ cinder_cluster_name: "" cinder_cluster_skip_precheck: false + +############ +# WSGI +############ +cinder_wsgi_provider: "uwsgi" diff --git a/ansible/roles/cinder/tasks/config.yml b/ansible/roles/cinder/tasks/config.yml index 5e7485a032..b4eb6f801d 100644 --- a/ansible/roles/cinder/tasks/config.yml +++ b/ansible/roles/cinder/tasks/config.yml @@ -64,7 +64,27 @@ - "{{ node_custom_config }}/cinder/{{ inventory_hostname }}/cinder-wsgi.conf" - "{{ node_custom_config }}/cinder/cinder-wsgi.conf" - "cinder-wsgi.conf.j2" - when: service | service_enabled_and_mapped_to_host + when: + - service | service_enabled_and_mapped_to_host + - cinder_wsgi_provider == "apache" + +- name: "Configure uWSGI for Cinder" + include_role: + name: service-uwsgi-config + vars: + project_services: "{{ cinder_services }}" + service: "{{ cinder_services['cinder-api'] }}" + service_name: "cinder-api" + service_uwsgi_config_http_port: "{{ cinder_api_listen_port }}" + service_uwsgi_config_log_file_chmod: "644" + service_uwsgi_config_module: "{{ service.wsgi }}" + service_uwsgi_config_tls_backend: "{{ cinder_enable_tls_backend | bool }}" + service_uwsgi_config_tls_cert: "/etc/cinder/certs/cinder-cert.pem" + service_uwsgi_config_tls_key: "/etc/cinder/certs/cinder-key.pem" + service_uwsgi_config_uid: "cinder" + when: + - service | service_enabled_and_mapped_to_host + - cinder_wsgi_provider == "uwsgi" - name: Copying over cinder.conf vars: diff --git a/ansible/roles/cinder/templates/cinder-api.json.j2 b/ansible/roles/cinder/templates/cinder-api.json.j2 index a5ae5a3e9e..04bb6781a5 100644 --- a/ansible/roles/cinder/templates/cinder-api.json.j2 +++ b/ansible/roles/cinder/templates/cinder-api.json.j2 @@ -1,20 +1,27 @@ {% set cinder_cmd = 'apache2' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd' %} {% set cinder_dir = 'apache2/conf-enabled' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd/conf.d' %} +{% set command = '/usr/sbin/{{ apache_binary }} -DFOREGROUND' if cinder_wsgi_provider == 'apache' else 'uwsgi /etc/cinder/cinder-api-uwsgi.ini' %} { - "command": "/usr/sbin/{{ cinder_cmd }} -DFOREGROUND", + "command": "{{ command }}", "config_files": [ { "source": "{{ container_config_directory }}/cinder.conf", "dest": "/etc/cinder/cinder.conf", "owner": "cinder", "perm": "0600" - }, + }{% if cinder_wsgi_provider == 'apache' %}, { "source": "{{ container_config_directory }}/cinder-wsgi.conf", "dest": "/etc/{{ cinder_dir }}/cinder-wsgi.conf", "owner": "cinder", "perm": "0600" - }{% if cinder_policy_file is defined %}, + }{% elif cinder_wsgi_provider == 'uwsgi' %}, + { + "source": "{{ container_config_directory }}/cinder-api-uwsgi.ini", + "dest": "/etc/cinder/cinder-api-uwsgi.ini", + "owner": "cinder", + "perm": "0600" + }{% endif %}{% if cinder_policy_file is defined %}, { "source": "{{ container_config_directory }}/{{ cinder_policy_file }}", "dest": "/etc/cinder/{{ cinder_policy_file }}", diff --git a/releasenotes/notes/uwsgi-aef85ccbc76dab3e.yaml b/releasenotes/notes/uwsgi-aef85ccbc76dab3e.yaml index a591c125b2..d579af5fbb 100644 --- a/releasenotes/notes/uwsgi-aef85ccbc76dab3e.yaml +++ b/releasenotes/notes/uwsgi-aef85ccbc76dab3e.yaml @@ -9,6 +9,8 @@ features: * - Service - Variable + * - Cinder + - cinder_wsgi_provider * - Nova - nova_wsgi_provider * - Placement