Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
dde26b9
ansible-lint: Fix fqcn[actions-core] for mistral
mnasiadka Mar 20, 2026
417cd99
ansible-lint: Fix fqcn[actions-core] for memcached
mnasiadka Mar 20, 2026
524fb5f
ansible-lint: Fix fqcn[actions-core] for module-load
mnasiadka Mar 20, 2026
f08c210
ansible-lint: Fix fqcn[actions-core] for multipathd
mnasiadka Mar 20, 2026
da2811e
ansible-lint: Fix fqcn[actions-core] for neutron
mnasiadka Mar 20, 2026
3f18eff
Restart only changed iterable containers
dougszumski Feb 12, 2026
15d10bd
ansible-lint: Fix fqcn[actions-core] for nova
mnasiadka Mar 20, 2026
0277192
ansible-lint: Fix fqcn[actions-core] for octavia
mnasiadka Mar 20, 2026
fcd570d
ansible-lint: Fix fqcn[actions-core] for opensearch
mnasiadka Mar 20, 2026
b9199f5
ansible-lint: Fix fqcn[actions-core] for openvswitch/ovn
mnasiadka Mar 20, 2026
8fe70c6
ansible-lint: Fix fqcn[actions-core] for placement
mnasiadka Mar 23, 2026
c4d984c
ansible-lint: Fix fqcn[actions-core] for prechecks
mnasiadka Mar 23, 2026
5a82ae6
ansible-lint: Fix fqcn[actions-core] for prune-images
mnasiadka Mar 23, 2026
24c2d5b
ansible-lint: Fix fqcn[actions-core] for prometheus
mnasiadka Mar 23, 2026
f7a8e76
ansible-lint: Fix fqcn[actions-core] for proxysql-config
mnasiadka Mar 23, 2026
bb91eca
ansible-lint: Fix fqcn[actions-core] for rabbitmq
mnasiadka Mar 23, 2026
aa32662
ansible-lint: Fix fqcn[actions-core] for service-*
mnasiadka Mar 23, 2026
add8f4f
ansible-lint: Fix fqcn[actions-core] for skyline
mnasiadka Mar 23, 2026
79d9cdd
ansible-lint: Fix fqcn[actions-core] for sysctl
mnasiadka Mar 23, 2026
1c59a00
ansible-lint: Fix fqcn[actions-core] for tacker
mnasiadka Mar 23, 2026
420f576
ansible-lint: Fix fqcn[actions-core] for telegraf
mnasiadka Mar 23, 2026
40cc373
ansible-lint: Fix fqcn[actions-core] for trove
mnasiadka Mar 23, 2026
dfaf255
ansible-lint: Fix fqcn[actions-core] for valkey
mnasiadka Mar 23, 2026
6d5ec89
ansible-lint: Fix fqcn[actions-core] for watcher
mnasiadka Mar 23, 2026
3b57121
ansible-lint: Fix fqcn[actions-core] for zun
mnasiadka Mar 23, 2026
4b4636b
ansible-lint: Fix fqcn[actions-core] for roles/cephadm
mnasiadka Mar 23, 2026
c242412
ansible-lint: Fix fqcn[actions-core] for internal roles
mnasiadka Mar 23, 2026
4c733b6
ansible-lint: Fix fqcn[actions]
mnasiadka Mar 23, 2026
79da1f2
ansible-lint: Disable comment checks in etc/kolla/globals.yml
mnasiadka Mar 23, 2026
203b8c2
Fix ulimit defaults for Debian family container engines
saha96 Dec 25, 2025
9309087
ovn-db: add support for ovn-northd extra command-line arguments
antonym Feb 20, 2026
07d9246
Ensure neutron_bridge_name and neutron_external_interface have the sa…
Mar 7, 2025
0fff962
blazar: Switch to uWSGI
mnasiadka Mar 20, 2026
fd29aa4
manila: Switch to uWSGI
mnasiadka Mar 20, 2026
5da3270
mistral: Switch to uWSGI
mnasiadka Mar 20, 2026
e1e7f05
zun: Switch to uWSGI
mnasiadka Mar 20, 2026
c216f15
trove: Switch to uWSGI
mnasiadka Mar 20, 2026
f947417
cyborg: Switch to uWSGI
mnasiadka Mar 20, 2026
ed0e8d2
cloudkitty: Switch to uWSGI
mnasiadka Jan 7, 2026
8c201b8
RabbitMQ: document handling stream replicas
MoteHue Jan 13, 2026
b7ae956
kolla-ansible: Add RabbitMQ 4.2 support and dynamic upgrade paths
vurmil Nov 4, 2025
bc8c463
ironic: Add uWSGI support for prometheus-exporter
mnasiadka Mar 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 1 addition & 3 deletions .ansible-lint
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,10 @@ rulesdir:
- .ansible-lint-rules/
# NOTE(mnasiadka): Switched to false due to rules skipped via .ansible-lint-ignore causing
# failures
strict: false
strict: true
skip_list:
# disable experimental rules
- experimental
# FQCNs again, now for module actions
- fqcn[action]
# Role names
- role-name
- var-naming[no-role-prefix]
Expand Down
412 changes: 0 additions & 412 deletions .ansible-lint-ignore

This file was deleted.

29 changes: 22 additions & 7 deletions ansible/group_vars/all/common.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,20 +86,35 @@ run_default_volumes_podman:
- "/run/openvswitch:/run/openvswitch:shared"

run_default_volumes_docker: []

####################
# Dimensions options
####################
# Dimension options for Docker Containers
# NOTE(mnasiadka): Lower 1073741816 nofile limit on EL9 (RHEL9/CentOS Stream 9/Rocky Linux 9)
# fixes at least rabbitmq and mariadb
default_container_dimensions: "{{ default_container_dimensions_el9 if ansible_facts.os_family == 'RedHat' else {} }}"
default_container_dimensions_el9: "{{ default_docker_dimensions_el9 if kolla_container_engine == 'docker' else default_podman_dimensions_el9 }}"
default_docker_dimensions_el9:
# Dimension options for container runtimes
#
# NOTE(amir58118): Some container runtimes do not apply ulimits by default unless they
# are explicitly configured. Defining file descriptor and process
# limits at the container level helps ensure stable operation of
# services that are sensitive to resource limits (e.g. message brokers
# and databases).
#
default_container_dimensions: >-
{{
default_container_dimensions_docker
if kolla_container_engine == 'docker'
else default_container_dimensions_podman
}}

default_container_dimensions_docker:
ulimits:
nofile:
soft: 1048576
hard: 1048576
default_podman_dimensions_el9:

# NOTE(amir58118): Podman currently lowers RLIMIT_NOFILE and RLIMIT_NPROC
# in kolla_podman_worker.py. These constants are retained here
# for documentation and potential future use.
default_container_dimensions_podman:
ulimits:
RLIMIT_NOFILE:
soft: 1048576
Expand Down
2 changes: 2 additions & 0 deletions ansible/roles/blazar/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ blazar_services:
volumes: "{{ blazar_api_default_volumes + blazar_api_extra_volumes }}"
dimensions: "{{ blazar_api_dimensions }}"
healthcheck: "{{ blazar_api_healthcheck }}"
wsgi: "blazar.wsgi.api:application"
haproxy:
blazar_api:
enabled: "{{ enable_blazar }}"
Expand Down Expand Up @@ -151,6 +152,7 @@ blazar_keystone_user: "blazar"

openstack_blazar_auth: "{{ openstack_auth }}"

blazar_api_workers: "{{ openstack_service_workers }}"

#####################
## Kolla
Expand Down
15 changes: 15 additions & 0 deletions ansible/roles/blazar/tasks/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,21 @@
become: true
with_dict: "{{ blazar_services | select_services_enabled_and_mapped_to_host }}"

- name: "Configure uWSGI for blazar-api"
ansible.builtin.include_role:
name: service-uwsgi-config
vars:
project_services: "{{ blazar_services }}"
service: "{{ blazar_services['blazar-api'] }}"
service_name: "blazar-api"
service_uwsgi_config_http_port: "{{ blazar_api_listen_port }}"
service_uwsgi_config_log_file_chmod: "644"
service_uwsgi_config_module: "{{ service.wsgi }}"
service_uwsgi_config_uid: "blazar"
service_uwsgi_config_workers: "{{ blazar_api_workers }}"
when:
- service | service_enabled_and_mapped_to_host

- name: Copying over blazar.conf
vars:
service_name: "{{ item.key }}"
Expand Down
8 changes: 7 additions & 1 deletion ansible/roles/blazar/templates/blazar-api.json.j2
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
{
"command": "blazar-api --config-file /etc/blazar/blazar.conf",
"command": "uwsgi /etc/blazar/blazar-api-uwsgi.ini",
"config_files": [
{
"source": "{{ container_config_directory }}/blazar.conf",
"dest": "/etc/blazar/blazar.conf",
"owner": "blazar",
"perm": "0600"
},
{
"source": "{{ container_config_directory }}/blazar-api-uwsgi.ini",
"dest": "/etc/blazar/blazar-api-uwsgi.ini",
"owner": "blazar",
"perm": "0600"
}{% if blazar_policy_file is defined %},
{
"source": "{{ container_config_directory }}/{{ blazar_policy_file }}",
Expand Down
6 changes: 6 additions & 0 deletions ansible/roles/cloudkitty/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}"
Expand Down Expand Up @@ -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"
20 changes: 19 additions & 1 deletion ansible/roles/cloudkitty/tasks/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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'] }}"
Expand All @@ -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:
Expand Down
19 changes: 13 additions & 6 deletions ansible/roles/cloudkitty/templates/cloudkitty-api.json.j2
Original file line number Diff line number Diff line change
@@ -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 }}",
Expand Down
3 changes: 3 additions & 0 deletions ansible/roles/cyborg/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ cyborg_services:
volumes: "{{ cyborg_api_default_volumes + cyborg_api_extra_volumes }}"
dimensions: "{{ cyborg_api_dimensions }}"
healthcheck: "{{ cyborg_api_healthcheck }}"
wsgi: "cyborg.wsgi.api:application"
haproxy:
cyborg_api:
enabled: "{{ enable_cyborg }}"
Expand Down Expand Up @@ -170,6 +171,8 @@ cyborg_keystone_user: "cyborg"

openstack_cyborg_auth: "{{ openstack_auth }}"

cyborg_api_workers: "{{ openstack_service_workers }}"

####################
# Kolla
####################
Expand Down
15 changes: 15 additions & 0 deletions ansible/roles/cyborg/tasks/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,21 @@
become: true
with_dict: "{{ cyborg_services | select_services_enabled_and_mapped_to_host }}"

- name: "Configure uWSGI for cyborg-api"
ansible.builtin.include_role:
name: service-uwsgi-config
vars:
project_services: "{{ cyborg_services }}"
service: "{{ cyborg_services['cyborg-api'] }}"
service_name: "cyborg-api"
service_uwsgi_config_http_port: "{{ cyborg_api_listen_port }}"
service_uwsgi_config_log_file_chmod: "644"
service_uwsgi_config_module: "{{ service.wsgi }}"
service_uwsgi_config_uid: "cyborg"
service_uwsgi_config_workers: "{{ cyborg_api_workers }}"
when:
- service | service_enabled_and_mapped_to_host

- name: Copying over cyborg.conf
vars:
service_name: "{{ item.key }}"
Expand Down
8 changes: 7 additions & 1 deletion ansible/roles/cyborg/templates/cyborg-api.json.j2
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
{
"command": "cyborg-api --config-file /etc/cyborg/cyborg.conf",
"command": "uwsgi /etc/cyborg/cyborg-api-uwsgi.ini",
"config_files": [
{
"source": "{{ container_config_directory }}/cyborg.conf",
"dest": "/etc/cyborg/cyborg.conf",
"owner": "cyborg",
"perm": "0600"
},
{
"source": "{{ container_config_directory }}/cyborg-api-uwsgi.ini",
"dest": "/etc/cyborg/cyborg-api-uwsgi.ini",
"owner": "cyborg",
"perm": "0600"
},
{
"source": "{{ container_config_directory }}/api-paste.ini",
"dest": "/etc/cyborg/api-paste.ini",
Expand Down
3 changes: 3 additions & 0 deletions ansible/roles/cyborg/templates/cyborg.conf.j2
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
[DEFAULT]
auth_strategy = keystone
log_dir = /var/log/kolla/cyborg
{% if service_name == 'cyborg-api' %}
log_file = /var/log/kolla/cyborg/cyborg-api.log
{% endif %}
debug = {{ cyborg_logging_debug }}

transport_url = {{ rpc_transport_url }}
Expand Down
2 changes: 1 addition & 1 deletion ansible/roles/haproxy-config/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
- enable_haproxy | bool

- name: "Configuring firewall for {{ project_name }}"
firewalld:
ansible.posix.firewalld:
immediate: true
offline: true
permanent: true
Expand Down
1 change: 1 addition & 0 deletions ansible/roles/ironic/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,7 @@ ironic_logging_debug: "{{ openstack_logging_debug }}"
openstack_ironic_auth: "{{ openstack_auth }}"

ironic_api_workers: "{{ openstack_service_workers }}"
ironic_prometheus_exporter_workers: "{{ openstack_service_workers }}"

#########
# Ironic
Expand Down
15 changes: 10 additions & 5 deletions ansible/roles/ironic/tasks/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,9 @@
- "{{ node_config_directory }}/ironic/{{ inventory_hostname }}/ironic-prometheus-exporter-wsgi.conf"
- "{{ node_config_directory }}/ironic/ironic-prometheus-exporter-wsgi.conf"
- "ironic-prometheus-exporter-wsgi.conf.j2"
when: service | service_enabled_and_mapped_to_host
when:
- service | service_enabled_and_mapped_to_host
- ironic_wsgi_provider == "apache"

- name: Copying over existing Ironic policy file
vars:
Expand Down Expand Up @@ -199,16 +201,19 @@
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: "{{ ironic_services[item.name] }}"
service_name: "{{ item.name }}"
service_uwsgi_config_http_port: "{{ item.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"
service_uwsgi_config_workers: "{{ ironic_api_workers }}"
service_uwsgi_config_workers: "{{ item.workers }}"
when:
- service | service_enabled_and_mapped_to_host
- ironic_wsgi_provider == "uwsgi"
loop:
- { name: "ironic-api", port: "{{ ironic_api_listen_port }}", workers: "{{ ironic_api_workers }}" }
- { name: "ironic-prometheus-exporter", port: "{{ ironic_prometheus_exporter_port }}", workers: "{{ ironic_prometheus_exporter_workers }}" }
Original file line number Diff line number Diff line change
@@ -1,20 +1,27 @@
{% set ironic_prometheus_exporter_cmd = 'apache2' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd' %}
{% set ironic_prometheus_exporter_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-prometheus-exporter-uwsgi.ini' %}
{
"command": "/usr/sbin/{{ ironic_prometheus_exporter_cmd }} -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-prometheus-exporter-wsgi.conf",
"dest": "/etc/{{ ironic_prometheus_exporter_dir }}/ironic-prometheus-exporter-wsgi.conf",
"owner": "ironic",
"perm": "0600"
},
}{% elif ironic_wsgi_provider == 'uwsgi' %},
{
"source": "{{ container_config_directory }}/ironic.conf",
"dest": "/etc/ironic/ironic.conf",
"source": "{{ container_config_directory }}/ironic-prometheus-exporter-uwsgi.ini",
"dest": "/etc/ironic/ironic-prometheus-exporter-uwsgi.ini",
"owner": "ironic",
"perm": "0600"
}{% if kolla_copy_ca_into_containers | bool %},
}{% endif %}{% if kolla_copy_ca_into_containers | bool %},
{
"source": "{{ container_config_directory }}/ca-certificates",
"dest": "/var/lib/kolla/share/ca-certificates",
Expand Down
1 change: 1 addition & 0 deletions ansible/roles/manila/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ manila_services:
volumes: "{{ manila_api_default_volumes + manila_api_extra_volumes }}"
dimensions: "{{ manila_api_dimensions }}"
healthcheck: "{{ manila_api_healthcheck }}"
wsgi: "manila.wsgi.api:application"
haproxy:
manila_api:
enabled: "{{ enable_manila }}"
Expand Down
15 changes: 15 additions & 0 deletions ansible/roles/manila/tasks/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,21 @@
when:
- manila_copy_certs | bool

- name: "Configure uWSGI for cloudkitty-api"
ansible.builtin.include_role:
name: service-uwsgi-config
vars:
project_services: "{{ manila_services }}"
service: "{{ manila_services['manila-api'] }}"
service_name: "manila-api"
service_uwsgi_config_http_port: "{{ manila_api_listen_port }}"
service_uwsgi_config_log_file_chmod: "644"
service_uwsgi_config_module: "{{ service.wsgi }}"
service_uwsgi_config_uid: "manila"
service_uwsgi_config_workers: "{{ manila_api_workers }}"
when:
- service | service_enabled_and_mapped_to_host

- name: Copying over config.json files for services
ansible.builtin.template:
src: "{{ item.key }}.json.j2"
Expand Down
Loading
Loading