We are delighted to announce the release of: kolla-ansible 10.4.0: Ansible Deployment of Kolla containers This release is part of the ussuri stable release series. The source is available from: https://opendev.org/openstack/kolla-ansible Download the package from: https://tarballs.openstack.org/kolla-ansible/ Please report issues through: https://bugs.launchpad.net/kolla-ansible/+bugs For more details, please see below. 10.4.0 ^^^^^^ New Features ************ * Add new option prometheus_openstack_exporter_timeout to override default scrape_timeout for openstack exporter job. * Adds support for elasticsearch storage backend with cloudkitty: That feature let you store cloudkitty rating documents directly within your elasticsearch cluster. If you already have an elasticsearch cluster running for logging it create a new cloudkitty specific index. That let you use kibana, grafana or any other interface to browse your rating data and create appropriate dashboard or build an appropriate billing service over it. Adds support for prometheus as a fetcher/collector for cloudkitty: That feature let you use prometheus metrics as your source of rating. Using prometheus let you rate pretty much any openstack object directly from the kolla provided exporters (Openstack_exporter) or your own customs exporters. * Adds config parameter "haproxy_nova_spicehtml5_proxy_tunnel_timeout" to configure the "Tunnel TimeOut" directive for spicehtml5proxy haproxy service. * Adds a new variable, "disable_firewall", which defaults to "true". If set to "false", then the host firewall will not be disabled during "kolla-ansible bootstrap-servers". * Adds two new variables "service_images_pull_retries" and "service_images_pull_delay" which control the behaviour of image pulling tasks. These are useful if your registry is not 100% reliable (usually due to load). The defaults have been set to 3 retries and 5 seconds delay to ensure a better default experience (these are actually Ansible defaults when task retries are enabled). * Adds support for configuring the "filter" and "gather_subset" arguments for the "setup" module via "kolla_ansible_setup_filter" and "kolla_ansible_setup_gather_subset" respectively. These can be used to reduce the number of facts, which can have a significant effect on performance of Ansible. * New variable "ironic_enable_keystone_integration" was added. It helps to add keystone connection information into "ironic.conf" if we want to connect to existing keystone (not installing it at the same time). Upgrade Notes ************* * Updates all references to Ansible facts within Kolla Ansible from using individual fact variables to using the items in the "ansible_facts" dictionary. This allows users to disable fact variable injection in their Ansible configuration, which may provide some performance improvement. Check for facts referenced in local configuration files, and update to use "ansible_facts" before disabling fact variable injection. * Modifies the default value of "ceph_nova_user" from "nova" to the value of "ceph_cinder_user", in line with the default for "ceph_nova_keyring". Users who have overridden "ceph_nova_keyring" to use separate keyrings for Nova and Cinder should also override "ceph_nova_user" to match the Nova keyring. LP#1934145 * Modifies the default value of "rabbitmq_server_additional_erl_args" from an empty string to "+S 2:2 +sbwt none +sbwtdcpu none +sbwtdio none". Security Issues *************** * Fixes "net.ipv4.ip_forward" not to be enabled by Kolla Ansible on the default network namespace. It was enabled on hosts with Neutron L3 Agent (thus in most common setups with OVS and/or Linux Bridge, but not OVN) and allowed, unless users had extra iptables rules to avoid that, any traffic to be accepted for forwarding (as long as it was routable and passed other checks). Users of existing setups are advised to re-evaluate whether they need this sysctl enabled and disable if not necessary. Kolla Ansible will simply no longer try to set this sysctl at all. Neutron L3 Agent handles forwarding enablement per managed namespace. LP#1945453 Bug Fixes ********* * Fixes monasca-thresh to correctly submit the topology to Storm. The previous container ran the topology in local mode (within the container), and didn't use the Storm cloud. The new container handles submitting the topology to Storm and also handles killing and replaces the topology when it's configuration has changed. As a result, the monasca-thresh container is only used for submission, and exits after that's completed. The logs for the topology will now be available in the storm worker-artifact logs. LP#1808805 * Fixes an issue where configuration in containers could become stale. This prevented containers with updated configuration from being restarted, e.g., if the "kolla-ansible genconfig" and "kolla- ansible deploy-containers" commands were used together. LP#1848775 * Fixes elasticsearch fluentd output being enabled when elasticsearch is not enabled. LP#1927880 * Fixes an issue seen when customising the Docker Yum repository URL on CentOS, where the "docker_yum_gpgkey" variable is not used consistently. LP#1934913 * Fixes an issue where spice console is freezed after while, see LP#1938549. * Fixed broken "kolla-toolbox" container when RabbitMQ is disabled and IPv6 is used. LP#1939883 * Fixes "mariadb-clustercheck" not to run when there is no HAProxy. LP#1944114 * No longer creates directories for haproxy and swift logs where they are not needed. LP#1945070 * Fixes an error in placement role which prevents to deploy the placement service when custom policy file is used. LP#1948835 * Fixes missing current Ansible version in the error message. LP#1948979 * Fixes an issue with Cyborg deployment. LP#1937911 * Fixes an issue with "config.json" for "neutron-server" when a VMware plugin agent is used. * Fixes an issue with Neutron "linuxbridge" ML2 agent when "neutron_external_interface" includes multiple interfaces. LP#1863935 * Fixes an issue with Manila configuration which was missing a "[glance]" section, preventing some drivers from operating. * Fixes an issue with default Nova configuration for Ceph where the RBD user is set to "nova", but only a "cinder" keyring is copied. The default value of "ceph_nova_user" is changed to the value of "ceph_cinder_user", in line with the default for "ceph_nova_keyring". LP#1934145 * Fixes an issue where RabbitMQ consumes a large amount of CPU, particularly on multi-core systems. The default RabbitMQ tuning assumes that RabbitMQ is running on a dedicated host, which is the opposite of a typical Kolla Ansible container setup. For more details on tuning RabbitMQ in your environment, please see: https://www.rabbitmq.com/runtime.html#busy-waiting https://www.rabbitmq.com/runtime.html#scheduling Other Notes *********** * Optimised image pulling to avoid looping over disabled services. Changes in kolla-ansible 10.3.0..10.4.0 --------------------------------------- 3c21a5391 Stop creating unused cron/logrotate directory 5253da3c0 Fix broken deploy of placement service cddc4e1f5 Fix missing Ansible version in the error message 7ddaf4550 Add support for Ironic inspection through DHCP-relay 58f7f95de Correctly create the dhcp_agent.ini and l3_agent.ini efb580ef8 Do not set net.ipv4.ip_forward sysctl d4153db70 Do not create haproxy and swift log dirs needlessly 73859a3d8 Docs: Update to opendev.org domain 7a55c46ee Do not enable mariadb-clustercheck when not needed 4d24556b9 Do not become root when searching for custom prometheus alert rules files 85e31d2b3 CI: stop setting ceph_nova_user 307ac600a Add disable_firewall variable 6c865d39e Add override timeout for openstack exporter de70a8424 Fix neutron upgrade using host limit without controllers df92cb4f6 Zun: Temporarily skip capsule test for ubuntu 36280dd5e Fix kolla-toolbox with IPv6 and disabled RabbitMQ 59df4974c Remove an unused file dd8fad8b1 Add ability to retry image pulling 313a6580c Fix regression in image pull action v2 3279637a7 Use more RMQ flags for less busy wait 16fe223bc Fix regression in image pull action 3f440ab10 Set changed_when to false for group_by tasks 97804e484 Fix the Tempest image url variable c65e1035b fluentd: Fix check for external elasticsearch a552f93cd ironic: Follow up for ironic_enable_keystone_integration ec4afcafb Refactor and optimise image pulling d79d0d3b3 monasca-thresh: Fix topology submission to storm 3bcc754fe Extra var ironic_enable_keystone_integration added. 3acfef48f baremetal: use docker_yum_gpgkey to fetch docker GPG key 998186750 Fix release note for ansible_facts 90c3cdc0a neutron: fix neutron-server config.json with VMware 8a9480661 Blazar: Fix support for external keystone in multiregion deploy fcad47657 nova: Use cinder user for Ceph 2b353889a Elevated privileges required to set owner/group/mode by ansible 70ad1ea10 Fix config action when OVN is enabled a43ca2673 Check config when checking the containers 608f92669 Fix nova deployment failure when rabbitmq is disabled a9a8f6d49 Fix freezed spice console in horizon 5e7ac8702 watcher: add missing become for copying configs f6f2c1352 Fix incorrect config of linuxbridge multiple external networks a2ac590fc Make setup module arguments configurable 80c0cee82 cyborg: add missing become for api-paste.ini ae3b709ca Add missing elasticsearch cloudkitty storage and prometheus collector backend support. 0ccd665be Use ansible_facts to reference facts da591982a docs: Add information on tuning Ansible 43c81db1c manila: add glance section in manila-share.conf 95de85025 Reduce RabbitMQ busy waiting, lowering CPU load Diffstat (except docs and test files) ------------------------------------- ansible/gather-facts.yml | 14 +- ansible/group_vars/all.yml | 27 ++- ansible/library/kolla_docker.py | 44 ++++- ansible/post-deploy.yml | 4 +- ansible/roles/aodh/defaults/main.yml | 8 +- ansible/roles/aodh/tasks/pull.yml | 12 +- ansible/roles/barbican/defaults/main.yml | 6 +- ansible/roles/barbican/tasks/pull.yml | 12 +- ansible/roles/baremetal/defaults/main.yml | 11 +- ansible/roles/baremetal/tasks/install.yml | 72 ++++---- ansible/roles/baremetal/tasks/post-install.yml | 18 +- ansible/roles/baremetal/tasks/pre-install.yml | 16 +- ansible/roles/blazar/defaults/main.yml | 4 +- ansible/roles/blazar/tasks/pull.yml | 12 +- ansible/roles/blazar/templates/blazar.conf.j2 | 2 +- ansible/roles/ceilometer/defaults/main.yml | 8 +- ansible/roles/ceilometer/tasks/pull.yml | 12 +- ansible/roles/chrony/defaults/main.yml | 2 +- ansible/roles/chrony/tasks/pull.yml | 12 +- ansible/roles/cinder/defaults/main.yml | 8 +- ansible/roles/cinder/tasks/pull.yml | 12 +- ansible/roles/cloudkitty/defaults/main.yml | 47 +++++- ansible/roles/cloudkitty/tasks/bootstrap.yml | 30 ++++ ansible/roles/cloudkitty/tasks/pull.yml | 12 +- .../roles/cloudkitty/templates/cloudkitty.conf.j2 | 34 +++- ansible/roles/collectd/defaults/main.yml | 2 +- ansible/roles/collectd/tasks/pull.yml | 12 +- ansible/roles/common/defaults/main.yml | 6 +- ansible/roles/common/tasks/config.yml | 9 +- ansible/roles/common/tasks/inspect.yml | 6 - ansible/roles/common/tasks/pull.yml | 21 ++- .../templates/conf/input/03-rabbitmq.conf.j2 | 2 +- .../common/templates/conf/output/00-local.conf.j2 | 4 + ansible/roles/common/templates/fluentd.json.j2 | 4 + .../roles/common/templates/kolla-toolbox.json.j2 | 4 +- ansible/roles/congress/defaults/main.yml | 6 +- ansible/roles/congress/tasks/pull.yml | 12 +- ansible/roles/cyborg/defaults/main.yml | 6 +- ansible/roles/cyborg/tasks/config.yml | 1 + ansible/roles/cyborg/tasks/pull.yml | 12 +- ansible/roles/designate/defaults/main.yml | 14 +- ansible/roles/designate/tasks/pull.yml | 12 +- ansible/roles/elasticsearch/defaults/main.yml | 4 +- ansible/roles/elasticsearch/tasks/pull.yml | 12 +- ansible/roles/etcd/defaults/main.yml | 6 +- ansible/roles/etcd/tasks/pull.yml | 12 +- ansible/roles/freezer/defaults/main.yml | 4 +- ansible/roles/freezer/tasks/pull.yml | 12 +- ansible/roles/glance/defaults/main.yml | 8 +- ansible/roles/glance/tasks/pull.yml | 12 +- ansible/roles/gnocchi/defaults/main.yml | 6 +- ansible/roles/gnocchi/tasks/pull.yml | 12 +- ansible/roles/grafana/defaults/main.yml | 2 +- ansible/roles/grafana/tasks/pull.yml | 9 +- .../templates/haproxy_single_service_listen.cfg.j2 | 2 +- .../templates/haproxy_single_service_split.cfg.j2 | 2 +- ansible/roles/haproxy/defaults/main.yml | 4 +- ansible/roles/haproxy/tasks/precheck.yml | 6 +- ansible/roles/haproxy/tasks/pull.yml | 12 +- ansible/roles/haproxy/tasks/upgrade.yml | 2 +- ansible/roles/heat/defaults/main.yml | 6 +- ansible/roles/heat/tasks/pull.yml | 12 +- ansible/roles/horizon/defaults/main.yml | 2 +- ansible/roles/horizon/tasks/pull.yml | 12 +- ansible/roles/influxdb/defaults/main.yml | 2 +- ansible/roles/influxdb/tasks/pull.yml | 9 +- ansible/roles/ironic/defaults/main.yml | 13 +- ansible/roles/ironic/tasks/deploy.yml | 2 +- ansible/roles/ironic/tasks/pull.yml | 12 +- .../ironic/templates/ironic-inspector.conf.j2 | 4 +- ansible/roles/ironic/templates/ironic.conf.j2 | 8 +- ansible/roles/iscsi/defaults/main.yml | 4 +- ansible/roles/iscsi/tasks/precheck.yml | 2 +- ansible/roles/iscsi/tasks/pull.yml | 12 +- ansible/roles/kafka/defaults/main.yml | 2 +- ansible/roles/kafka/tasks/pull.yml | 12 +- ansible/roles/karbor/defaults/main.yml | 6 +- ansible/roles/karbor/tasks/pull.yml | 12 +- ansible/roles/keystone/defaults/main.yml | 6 +- ansible/roles/keystone/tasks/bootstrap_service.yml | 1 + ansible/roles/keystone/tasks/pull.yml | 12 +- ansible/roles/kibana/defaults/main.yml | 2 +- ansible/roles/kibana/tasks/pull.yml | 12 +- ansible/roles/kuryr/defaults/main.yml | 2 +- ansible/roles/kuryr/tasks/pull.yml | 8 +- ansible/roles/magnum/defaults/main.yml | 4 +- ansible/roles/magnum/tasks/pull.yml | 12 +- ansible/roles/manila/defaults/main.yml | 8 +- ansible/roles/manila/tasks/pull.yml | 12 +- .../roles/manila/templates/manila-share.conf.j2 | 14 +- ansible/roles/mariadb/defaults/main.yml | 8 +- ansible/roles/mariadb/tasks/lookup_cluster.yml | 3 + ansible/roles/mariadb/tasks/pull.yml | 12 +- ansible/roles/mariadb/templates/galera.cnf.j2 | 6 +- ansible/roles/masakari/defaults/main.yml | 6 +- ansible/roles/masakari/tasks/pull.yml | 12 +- ansible/roles/memcached/defaults/main.yml | 4 +- ansible/roles/memcached/tasks/pull.yml | 13 +- ansible/roles/mistral/defaults/main.yml | 8 +- ansible/roles/mistral/tasks/pull.yml | 12 +- ansible/roles/monasca/defaults/main.yml | 23 +-- ansible/roles/monasca/handlers/main.yml | 33 +++- ansible/roles/monasca/tasks/check-containers.yml | 1 + ansible/roles/monasca/tasks/config.yml | 4 +- ansible/roles/monasca/tasks/pull.yml | 12 +- ansible/roles/monasca/tasks/upgrade.yml | 13 ++ .../monasca-agent-collector/agent-collector.yml.j2 | 2 +- .../monasca-agent-forwarder/agent-forwarder.yml.j2 | 2 +- .../monasca-agent-statsd/agent-statsd.yml.j2 | 2 +- .../monasca-thresh/monasca-thresh.json.j2 | 2 +- .../monasca/templates/monasca-thresh/storm.yml.j2 | 8 - ansible/roles/mongodb/defaults/main.yml | 2 +- ansible/roles/mongodb/tasks/pull.yml | 12 +- ansible/roles/multipathd/defaults/main.yml | 2 +- ansible/roles/multipathd/tasks/pull.yml | 12 +- ansible/roles/murano/defaults/main.yml | 4 +- ansible/roles/murano/tasks/pull.yml | 12 +- ansible/roles/neutron/defaults/main.yml | 24 +-- ansible/roles/neutron/tasks/config-host.yml | 1 - ansible/roles/neutron/tasks/pull.yml | 12 +- ansible/roles/neutron/tasks/rolling_upgrade.yml | 2 +- ansible/roles/neutron/templates/dhcp_agent.ini.j2 | 2 + ansible/roles/neutron/templates/l3_agent.ini.j2 | 2 + .../neutron/templates/linuxbridge_agent.ini.j2 | 4 +- ansible/roles/neutron/templates/ml2_conf.ini.j2 | 2 +- .../roles/neutron/templates/neutron-server.json.j2 | 2 +- ansible/roles/neutron/templates/neutron.conf.j2 | 2 +- ansible/roles/nova-cell/defaults/main.yml | 27 +-- ansible/roles/nova-cell/tasks/config-host.yml | 2 +- .../roles/nova-cell/tasks/discover_computes.yml | 8 +- ansible/roles/nova-cell/tasks/loadbalancer.yml | 4 + ansible/roles/nova-cell/tasks/pull.yml | 12 +- ansible/roles/nova-cell/tasks/rabbitmq.yml | 4 +- ansible/roles/nova-cell/templates/nova.conf.j2 | 4 +- ansible/roles/nova-hyperv/templates/wsgate.ini.j2 | 4 +- ansible/roles/nova/defaults/main.yml | 8 +- ansible/roles/nova/tasks/pull.yml | 12 +- ansible/roles/octavia/defaults/main.yml | 8 +- ansible/roles/octavia/tasks/pull.yml | 12 +- ansible/roles/openvswitch/defaults/main.yml | 6 +- ansible/roles/openvswitch/tasks/pull.yml | 12 +- ansible/roles/ovn/handlers/main.yml | 4 + ansible/roles/ovn/tasks/pull.yml | 12 +- ansible/roles/ovs-dpdk/defaults/main.yml | 6 +- ansible/roles/ovs-dpdk/tasks/config.yml | 1 + ansible/roles/ovs-dpdk/tasks/pull.yml | 12 +- ansible/roles/panko/defaults/main.yml | 2 +- ansible/roles/panko/tasks/pull.yml | 9 +- ansible/roles/placement/defaults/main.yml | 2 +- ansible/roles/placement/tasks/config.yml | 2 +- ansible/roles/placement/tasks/pull.yml | 12 +- ansible/roles/prechecks/tasks/datetime_checks.yml | 2 +- ansible/roles/prechecks/tasks/host_os_checks.yml | 16 +- ansible/roles/prechecks/tasks/package_checks.yml | 2 +- ansible/roles/prechecks/tasks/port_checks.yml | 4 +- ansible/roles/prechecks/vars/main.yml | 6 +- ansible/roles/prometheus/defaults/main.yml | 20 +-- ansible/roles/prometheus/tasks/config.yml | 1 - ansible/roles/prometheus/tasks/pull.yml | 12 +- .../roles/prometheus/templates/prometheus.yml.j2 | 1 + ansible/roles/qdrouterd/defaults/main.yml | 2 +- ansible/roles/qdrouterd/tasks/precheck.yml | 2 +- ansible/roles/qdrouterd/tasks/pull.yml | 12 +- ansible/roles/qinling/defaults/main.yml | 4 +- ansible/roles/qinling/tasks/pull.yml | 12 +- ansible/roles/rabbitmq/defaults/main.yml | 6 +- ansible/roles/rabbitmq/tasks/precheck.yml | 4 +- ansible/roles/rabbitmq/tasks/pull.yml | 12 +- .../roles/rabbitmq/templates/rabbitmq-env.conf.j2 | 2 +- ansible/roles/rabbitmq/templates/rabbitmq.conf.j2 | 2 +- ansible/roles/rally/defaults/main.yml | 2 +- ansible/roles/rally/tasks/pull.yml | 12 +- ansible/roles/redis/defaults/main.yml | 4 +- ansible/roles/redis/tasks/pull.yml | 12 +- ansible/roles/sahara/defaults/main.yml | 4 +- ansible/roles/sahara/tasks/pull.yml | 12 +- ansible/roles/searchlight/defaults/main.yml | 4 +- ansible/roles/searchlight/tasks/pull.yml | 12 +- ansible/roles/senlin/defaults/main.yml | 8 +- ansible/roles/senlin/tasks/pull.yml | 12 +- .../roles/service-images-pull/defaults/main.yml | 7 + ansible/roles/service-images-pull/tasks/main.yml | 16 ++ ansible/roles/skydive/defaults/main.yml | 4 +- ansible/roles/skydive/tasks/pull.yml | 12 +- .../skydive/templates/skydive-analyzer.conf.j2 | 2 +- ansible/roles/solum/defaults/main.yml | 8 +- ansible/roles/solum/tasks/pull.yml | 12 +- ansible/roles/solum/templates/solum.conf.j2 | 2 +- ansible/roles/storm/defaults/main.yml | 4 +- ansible/roles/storm/tasks/pull.yml | 12 +- ansible/roles/swift/defaults/main.yml | 6 + ansible/roles/swift/tasks/pull.yml | 24 +++ ansible/roles/tacker/defaults/main.yml | 6 +- ansible/roles/tacker/tasks/pull.yml | 12 +- ansible/roles/telegraf/defaults/main.yml | 2 +- ansible/roles/telegraf/tasks/pull.yml | 12 +- ansible/roles/tempest/defaults/main.yml | 4 +- ansible/roles/tempest/tasks/pull.yml | 12 +- ansible/roles/tempest/templates/tempest.conf.j2 | 2 +- ansible/roles/trove/defaults/main.yml | 6 +- ansible/roles/trove/tasks/pull.yml | 12 +- ansible/roles/vitrage/defaults/main.yml | 10 +- ansible/roles/vitrage/tasks/pull.yml | 12 +- ansible/roles/vmtp/defaults/main.yml | 2 +- ansible/roles/vmtp/tasks/pull.yml | 12 +- ansible/roles/watcher/defaults/main.yml | 6 +- ansible/roles/watcher/tasks/config.yml | 3 + ansible/roles/watcher/tasks/pull.yml | 12 +- ansible/roles/zookeeper/defaults/main.yml | 2 +- ansible/roles/zookeeper/tasks/pull.yml | 12 +- ansible/roles/zookeeper/templates/myid.j2 | 2 +- ansible/roles/zun/defaults/main.yml | 8 +- ansible/roles/zun/tasks/pull.yml | 12 +- ansible/site.yml | 2 + .../bootstrap-servers.rst | 2 + .../message-queues/external-rabbitmq-guide.rst | 53 ++++++ .../reference/storage/external-ceph-guide.rst | 13 +- etc/kolla/globals.yml | 29 +++- kolla_ansible/kolla_address.py | 2 +- ...k-exporter-scrape-timeout-af5dcd5d988ae12b.yaml | 4 + ...eus_support_on_cloudkitty-774e13e363e15a4b.yaml | 17 ++ .../notes/ansible-facts-4279741e84c03ce0.yaml | 10 ++ .../notes/bug-1808805-3ebd9b0edceff170.yaml | 13 ++ .../notes/bug-1848775-b0625b7586adac96.yaml | 8 + .../notes/bug-1927880-cc407f18f415bbd2.yaml | 6 + .../notes/bug-1934913-a8d436e3d0b950b4.yaml | 6 + .../notes/bug-1938549-e73042a61f0a5935.yaml | 10 ++ .../notes/bug-1939883-dbfca874b138cfe9.yaml | 6 + .../notes/bug-1944114-fa2a266c014c64a9.yaml | 5 + .../notes/bug-1945070-965635387a8581f9.yaml | 6 + .../notes/bug-1945453-c410cc090cb85feb.yaml | 16 ++ .../notes/bug-1948835-51b15ddbef04d307.yaml | 6 + .../notes/bug-1948979-aaf2a93cc016ffb1.yaml | 5 + .../notes/cyborg-become-8453d941af536e91.yaml | 5 + .../notes/disable-firewall-1e1955168c717cb5.yaml | 6 + .../notes/fix-neutron-vmware-4a8804399d47d8d7.yaml | 5 + .../notes/image-pull-retries-75490c3e6e1e4b54.yaml | 9 + .../notes/linux-bridge-multi-fe8576616fb7d373.yaml | 6 + .../notes/manila-glance-4524ed1e9d488a60.yaml | 5 + .../notes/nova-ceph-user-53670f9ccc546225.yaml | 16 ++ ...educe-rabbit-busy-waiting-085433c822165eab.yaml | 13 ++ ...nd-optimise-image-pulling-4346d3c0840ee640.yaml | 4 + .../notes/setup-module-args-c29e1815bbbe8aca.yaml | 8 + ...nic-template-for-keystone-1ee5f80fda7a21a0.yaml | 7 + tools/kolla-ansible | 2 +- 257 files changed, 1498 insertions(+), 1163 deletions(-)
participants (1)
-
no-reply@openstack.org