aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ansible/roles/cloudkitty/defaults/main.yml6
-rw-r--r--ansible/roles/cloudkitty/tasks/config.yml20
-rw-r--r--ansible/roles/cloudkitty/templates/cloudkitty-api.json.j219
3 files changed, 38 insertions, 7 deletions
diff --git a/ansible/roles/cloudkitty/defaults/main.yml b/ansible/roles/cloudkitty/defaults/main.yml
index 1da04420e..c5c093571 100644
--- a/ansible/roles/cloudkitty/defaults/main.yml
+++ b/ansible/roles/cloudkitty/defaults/main.yml
@@ -8,6 +8,7 @@ cloudkitty_services:
volumes: "{{ cloudkitty_api_default_volumes + cloudkitty_api_extra_volumes }}"
dimensions: "{{ cloudkitty_api_dimensions }}"
healthcheck: "{{ cloudkitty_api_healthcheck }}"
+ wsgi: "cloudkitty.wsgi.api:application"
haproxy:
cloudkitty_api:
enabled: "{{ enable_cloudkitty }}"
@@ -228,3 +229,8 @@ cloudkitty_database_enable_tls_internal: "{{ database_enable_tls_internal | bool
# Copy certificates
###################
cloudkitty_copy_certs: "{{ kolla_copy_ca_into_containers | bool or cloudkitty_database_enable_tls_internal | bool }}"
+
+#######
+# WSGI
+#######
+cloudkitty_wsgi_provider: "uwsgi"
diff --git a/ansible/roles/cloudkitty/tasks/config.yml b/ansible/roles/cloudkitty/tasks/config.yml
index 1a3492b0a..e5f95f301 100644
--- a/ansible/roles/cloudkitty/tasks/config.yml
+++ b/ansible/roles/cloudkitty/tasks/config.yml
@@ -76,6 +76,22 @@
become: true
with_dict: "{{ cloudkitty_services | select_services_enabled_and_mapped_to_host }}"
+- name: "Configure uWSGI for cloudkitty-api"
+ ansible.builtin.include_role:
+ name: service-uwsgi-config
+ vars:
+ project_services: "{{ cloudkitty_services }}"
+ service: "{{ cloudkitty_services['cloudkitty-api'] }}"
+ service_name: "cloudkitty-api"
+ service_uwsgi_config_http_port: "{{ cloudkitty_api_listen_port }}"
+ service_uwsgi_config_log_file_chmod: "644"
+ service_uwsgi_config_module: "{{ service.wsgi }}"
+ service_uwsgi_config_uid: "cloudkitty"
+ service_uwsgi_config_workers: "{{ cloudkitty_api_workers }}"
+ when:
+ - service | service_enabled_and_mapped_to_host
+ - cloudkitty_wsgi_provider == "uwsgi"
+
- name: Copying over wsgi-cloudkitty.conf
vars:
service: "{{ cloudkitty_services['cloudkitty-api'] }}"
@@ -84,7 +100,9 @@
dest: "{{ node_config_directory }}/cloudkitty-api/wsgi-cloudkitty.conf"
mode: "0660"
become: true
- when: service | service_enabled_and_mapped_to_host
+ when:
+ - cloudkitty_wsgi_provider == "apache"
+ - service | service_enabled_and_mapped_to_host
- name: Copying over existing policy file
ansible.builtin.template:
diff --git a/ansible/roles/cloudkitty/templates/cloudkitty-api.json.j2 b/ansible/roles/cloudkitty/templates/cloudkitty-api.json.j2
index 3ba9b7221..c6fcca90e 100644
--- a/ansible/roles/cloudkitty/templates/cloudkitty-api.json.j2
+++ b/ansible/roles/cloudkitty/templates/cloudkitty-api.json.j2
@@ -1,20 +1,27 @@
-{% set cloudkitty_cmd = 'apache2' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd' %}
-{% set cloudkitty_dir = 'apache2/conf-enabled' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd/conf.d' %}
+{% 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 cloudkitty_wsgi_provider == 'apache' else 'uwsgi /etc/cloudkitty/cloudkitty-api-uwsgi.ini' %}
{
- "command": "{{ cloudkitty_cmd }} -DFOREGROUND",
+ "command": "{{ command }}",
"config_files": [
{
"source": "{{ container_config_directory }}/cloudkitty.conf",
"dest": "/etc/cloudkitty/cloudkitty.conf",
"owner": "cloudkitty",
"perm": "0600"
- },
+ }{% if cloudkitty_wsgi_provider == "apache" %},
{
"source": "{{ container_config_directory }}/wsgi-cloudkitty.conf",
- "dest": "/etc/{{ cloudkitty_dir }}/wsgi-cloudkitty.conf",
+ "dest": "/etc/{{ apache_conf_dir }}/wsgi-cloudkitty.conf",
"owner": "cloudkitty",
"perm": "0600"
- }{% if cloudkitty_policy_file is defined %},
+ }{% elif cloudkitty_wsgi_provider == "uwsgi" %},
+ {
+ "source": "{{ container_config_directory }}/cloudkitty-api-uwsgi.ini",
+ "dest": "/etc/cloudkitty/cloudkitty-api-uwsgi.ini",
+ "owner": "cloudkitty",
+ "perm": "0600"
+ }{% endif %}{% if cloudkitty_policy_file is defined %},
{
"source": "{{ container_config_directory }}/{{ cloudkitty_policy_file }}",
"dest": "/etc/cloudkitty/{{ cloudkitty_policy_file }}",