Implement IPv6 support in the control plane

Introduce kolla_address filter.
Introduce put_address_in_context filter.

Add AF config to vars.

Address contexts:
- raw (default): <ADDR>
- memcache: inet6:[<ADDR>]
- url: [<ADDR>]

Other changes:

globals.yml - mention just IP in comment

prechecks/port_checks (api_intf) - kolla_address handles validation

3x interface conditional (swift configs: replication/storage)

2x interface variable definition with hostname
(haproxy listens; api intf)

1x interface variable definition with hostname with bifrost exclusion
(baremetal pre-install /etc/hosts; api intf)

neutron's ml2 'overlay_ip_version' set to 6 for IPv6 on tunnel network

basic multinode source CI job for IPv6

prechecks for rabbitmq and qdrouterd use proper NSS database now

MariaDB Galera Cluster WSREP SST mariabackup workaround
(socat and IPv6)

Ceph naming workaround in CI
TODO: probably needs documenting

RabbitMQ IPv6-only proto_dist

Ceph ms switch to IPv6 mode

Remove neutron-server ml2_type_vxlan/vxlan_group setting
as it is not used (let's avoid any confusion)
and could break setups without proper multicast routing
if it started working (also IPv4-only)

haproxy upgrade checks for slaves based on ipv6 addresses

TODO:

ovs-dpdk grabs ipv4 network address (w/ prefix len / submask)
not supported, invalid by default because neutron_external has no address
No idea whether ovs-dpdk works at all atm.

ml2 for xenapi
Xen is not supported too well.
This would require working with XenAPI facts.

rp_filter setting
This would require meddling with ip6tables (there is no sysctl param).
By default nothing is dropped.
Unlikely we really need it.

ironic dnsmasq is configured IPv4-only
dnsmasq needs DHCPv6 options and testing in vivo.

KNOWN ISSUES (beyond us):

One cannot use IPv6 address to reference the image for docker like we
currently do, see: https://github.com/moby/moby/issues/39033
(docker_registry; docker API 400 - invalid reference format)
workaround: use hostname/FQDN

RabbitMQ may fail to bind to IPv6 if hostname resolves also to IPv4.
This is due to old RabbitMQ versions available in images.
IPv4 is preferred by default and may fail in the IPv6-only scenario.
This should be no problem in real life as IPv6-only is indeed IPv6-only.
Also, when new RabbitMQ (3.7.16/3.8+) makes it into images, this will
no longer be relevant as we supply all the necessary config.
See: https://github.com/rabbitmq/rabbitmq-server/pull/1982

For reliable runs, at least Ansible 2.8 is required (2.8.5 confirmed
to work well). Older Ansible versions are known to miss IPv6 addresses
in interface facts. This may affect redeploys, reconfigures and
upgrades which run after VIP address is assigned.
See: https://github.com/ansible/ansible/issues/63227

Bifrost Train does not support IPv6 deployments.
See: https://storyboard.openstack.org/#!/story/2006689

Change-Id: Ia34e6916ea4f99e9522cd2ddde03a0a4776f7e2c
Implements: blueprint ipv6-control-plane
Signed-off-by: Radosław Piliszek <radoslaw.piliszek@gmail.com>
This commit is contained in:
Radosław Piliszek 2019-09-11 20:47:00 +02:00
parent ba228529b1
commit bc053c09c1
206 changed files with 1122 additions and 514 deletions

View File

@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
#
# Copyright 2019 Radosław Piliszek (yoctozepto)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from kolla_ansible.kolla_address import kolla_address
from kolla_ansible.put_address_in_context import put_address_in_context
class FilterModule(object):
"""IP address filters"""
def filters(self):
return {
'kolla_address': kolla_address,
'put_address_in_context': put_address_in_context,
}

View File

@ -64,10 +64,10 @@ container_proxy:
# By default, Kolla API services bind to the network address assigned # By default, Kolla API services bind to the network address assigned
# to the api_interface. Allow the bind address to be an override. # to the api_interface. Allow the bind address to be an override.
api_interface_address: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}" api_interface_address: "{{ 'api' | kolla_address }}"
# This is used to get the ip corresponding to the storage_interface. # This is used to get the ip corresponding to the storage_interface.
storage_interface_address: "{{ hostvars[inventory_hostname]['ansible_' + storage_interface]['ipv4']['address'] }}" storage_interface_address: "{{ 'storage' | kolla_address }}"
################ ################
# Chrony options # Chrony options
@ -109,9 +109,9 @@ docker_restart_policy_retry: "10"
# Extra docker options for Zun # Extra docker options for Zun
docker_configure_for_zun: "no" docker_configure_for_zun: "no"
docker_zun_options: -H tcp://{{ api_interface_address }}:2375 docker_zun_options: -H tcp://{{ api_interface_address | put_address_in_context('url') }}:2375
docker_zun_config: docker_zun_config:
cluster-store: etcd://{% for host in groups.get('etcd', []) %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ hostvars[host]['etcd_client_port'] }}{% if not loop.last %},{% endif %}{% endfor %} cluster-store: etcd://{% for host in groups.get('etcd', []) %}{{ 'api' | kolla_address(host) | put_address_in_context('url') }}:{{ hostvars[host]['etcd_client_port'] }}{% if not loop.last %},{% endif %}{% endfor %}
# Timeout after Docker sends SIGTERM before sending SIGKILL. # Timeout after Docker sends SIGTERM before sending SIGKILL.
docker_graceful_timeout: 60 docker_graceful_timeout: 60
@ -165,7 +165,7 @@ om_rpc_port: "{{ rabbitmq_port }}"
om_rpc_group: "rabbitmq" om_rpc_group: "rabbitmq"
om_rpc_vhost: "/" om_rpc_vhost: "/"
rpc_transport_url: "{{ om_rpc_transport }}://{% for host in groups[om_rpc_group] %}{{ om_rpc_user }}:{{ om_rpc_password }}@{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ om_rpc_port }}{% if not loop.last %},{% endif %}{% endfor %}/{{ om_rpc_vhost }}" rpc_transport_url: "{{ om_rpc_transport }}://{% for host in groups[om_rpc_group] %}{{ om_rpc_user }}:{{ om_rpc_password }}@{{ 'api' | kolla_address(host) | put_address_in_context('url') }}:{{ om_rpc_port }}{% if not loop.last %},{% endif %}{% endfor %}/{{ om_rpc_vhost }}"
# oslo.messaging notify transport valid options are [ rabbit ] # oslo.messaging notify transport valid options are [ rabbit ]
om_notify_transport: "rabbit" om_notify_transport: "rabbit"
@ -175,7 +175,7 @@ om_notify_port: "{{ rabbitmq_port }}"
om_notify_group: "rabbitmq" om_notify_group: "rabbitmq"
om_notify_vhost: "/" om_notify_vhost: "/"
notify_transport_url: "{{ om_notify_transport }}://{% for host in groups[om_notify_group] %}{{ om_notify_user }}:{{ om_notify_password }}@{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ om_notify_port }}{% if not loop.last %},{% endif %}{% endfor %}/{{ om_notify_vhost }}" notify_transport_url: "{{ om_notify_transport }}://{% for host in groups[om_notify_group] %}{{ om_notify_user }}:{{ om_notify_password }}@{{ 'api' | kolla_address(host) | put_address_in_context('url') }}:{{ om_notify_port }}{% if not loop.last %},{% endif %}{% endfor %}/{{ om_notify_vhost }}"
#################### ####################
# Networking options # Networking options
@ -193,9 +193,24 @@ tunnel_interface: "{{ network_interface }}"
octavia_network_interface: "{{ api_interface }}" octavia_network_interface: "{{ api_interface }}"
bifrost_network_interface: "{{ network_interface }}" bifrost_network_interface: "{{ network_interface }}"
dns_interface: "{{ network_interface }}" dns_interface: "{{ network_interface }}"
migration_interface_address: "{{ hostvars[inventory_hostname]['ansible_' + migration_interface]['ipv4']['address'] }}"
tunnel_interface_address: "{{ hostvars[inventory_hostname]['ansible_' + tunnel_interface]['ipv4']['address'] }}" # Configure the address family (AF) per network.
octavia_network_interface_address: "{{ hostvars[inventory_hostname]['ansible_' + octavia_network_interface]['ipv4']['address'] }}" # Valid options are [ ipv4, ipv6 ]
network_address_family: "ipv4"
api_address_family: "{{ network_address_family }}"
storage_address_family: "{{ network_address_family }}"
cluster_address_family: "{{ network_address_family }}"
swift_storage_address_family: "{{ storage_address_family }}"
swift_replication_address_family: "{{ swift_storage_address_family }}"
migration_address_family: "{{ network_address_family }}"
tunnel_address_family: "{{ network_address_family }}"
octavia_network_address_family: "{{ api_address_family }}"
bifrost_network_address_family: "{{ network_address_family }}"
dns_address_family: "{{ network_address_family }}"
migration_interface_address: "{{ 'migration' | kolla_address }}"
tunnel_interface_address: "{{ 'tunnel' | kolla_address }}"
octavia_network_interface_address: "{{ 'octavia_network' | kolla_address }}"
# Valid options are [ openvswitch, linuxbridge, vmware_nsxv, vmware_nsxv3, vmware_dvs, opendaylight ] # Valid options are [ openvswitch, linuxbridge, vmware_nsxv, vmware_nsxv3, vmware_dvs, opendaylight ]
neutron_plugin_agent: "openvswitch" neutron_plugin_agent: "openvswitch"
@ -715,14 +730,14 @@ enable_kibana: "{{ 'yes' if enable_central_logging | bool or enable_monasca | bo
#################### ####################
# Redis options # Redis options
#################### ####################
redis_connection_string: "redis://{% for host in groups['redis'] %}{% if host == groups['redis'][0] %}admin:{{ redis_master_password }}@{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ redis_sentinel_port }}?sentinel=kolla{% else %}&sentinel_fallback={{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ redis_sentinel_port }}{% endif %}{% endfor %}&db=0&socket_timeout=60&retry_on_timeout=yes" redis_connection_string: "redis://{% for host in groups['redis'] %}{% if host == groups['redis'][0] %}admin:{{ redis_master_password }}@{{ 'api' | kolla_address(host) | put_address_in_context('url') }}:{{ redis_sentinel_port }}?sentinel=kolla{% else %}&sentinel_fallback={{ 'api' | kolla_address(host) | put_address_in_context('url') }}:{{ redis_sentinel_port }}{% endif %}{% endfor %}&db=0&socket_timeout=60&retry_on_timeout=yes"
#################### ####################
# Osprofiler options # Osprofiler options
#################### ####################
# valid values: ["elasticsearch", "redis"] # valid values: ["elasticsearch", "redis"]
osprofiler_backend: "elasticsearch" osprofiler_backend: "elasticsearch"
elasticsearch_connection_string: "elasticsearch://{{ elasticsearch_address }}:{{ elasticsearch_port }}" elasticsearch_connection_string: "elasticsearch://{{ elasticsearch_address | put_address_in_context('url') }}:{{ elasticsearch_port }}"
osprofiler_backend_connection_string: "{{ redis_connection_string if osprofiler_backend == 'redis' else elasticsearch_connection_string }}" osprofiler_backend_connection_string: "{{ redis_connection_string if osprofiler_backend == 'redis' else elasticsearch_connection_string }}"
#################### ####################
@ -762,9 +777,9 @@ kibana_log_prefix: "flog"
#################### ####################
keystone_internal_fqdn: "{{ kolla_internal_fqdn }}" keystone_internal_fqdn: "{{ kolla_internal_fqdn }}"
keystone_external_fqdn: "{{ kolla_external_fqdn }}" keystone_external_fqdn: "{{ kolla_external_fqdn }}"
keystone_admin_url: "{{ admin_protocol }}://{{ keystone_internal_fqdn }}:{{ keystone_admin_port }}" keystone_admin_url: "{{ admin_protocol }}://{{ keystone_internal_fqdn | put_address_in_context('url') }}:{{ keystone_admin_port }}"
keystone_internal_url: "{{ internal_protocol }}://{{ keystone_internal_fqdn }}:{{ keystone_public_port }}" keystone_internal_url: "{{ internal_protocol }}://{{ keystone_internal_fqdn | put_address_in_context('url') }}:{{ keystone_public_port }}"
keystone_public_url: "{{ public_protocol }}://{{ keystone_external_fqdn }}:{{ keystone_public_port }}" keystone_public_url: "{{ public_protocol }}://{{ keystone_external_fqdn | put_address_in_context('url') }}:{{ keystone_public_port }}"
keystone_admin_user: "admin" keystone_admin_user: "admin"
keystone_admin_project: "admin" keystone_admin_project: "admin"

View File

@ -58,7 +58,7 @@ aodh_evaluation_interval: 300
#################### ####################
aodh_database_name: "aodh" aodh_database_name: "aodh"
aodh_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}aodh{% endif %}" aodh_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}aodh{% endif %}"
aodh_database_address: "{{ database_address }}:{{ database_port }}" aodh_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
#################### ####################
# Notification # Notification
@ -129,9 +129,9 @@ aodh_notifier_extra_volumes: "{{ aodh_extra_volumes }}"
#################### ####################
# OpenStack # OpenStack
#################### ####################
aodh_admin_endpoint: "{{ admin_protocol }}://{{ aodh_internal_fqdn }}:{{ aodh_api_port }}" aodh_admin_endpoint: "{{ admin_protocol }}://{{ aodh_internal_fqdn | put_address_in_context('url') }}:{{ aodh_api_port }}"
aodh_internal_endpoint: "{{ internal_protocol }}://{{ aodh_internal_fqdn }}:{{ aodh_api_port }}" aodh_internal_endpoint: "{{ internal_protocol }}://{{ aodh_internal_fqdn | put_address_in_context('url') }}:{{ aodh_api_port }}"
aodh_public_endpoint: "{{ public_protocol }}://{{ aodh_external_fqdn }}:{{ aodh_api_port }}" aodh_public_endpoint: "{{ public_protocol }}://{{ aodh_external_fqdn | put_address_in_context('url') }}:{{ aodh_api_port }}"
aodh_logging_debug: "{{ openstack_logging_debug }}" aodh_logging_debug: "{{ openstack_logging_debug }}"

View File

@ -16,7 +16,7 @@ connection = mysql+pymysql://{{ aodh_database_user }}:{{ aodh_database_password
[keystone_authtoken] [keystone_authtoken]
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
www_authenticate_uri = {{ keystone_internal_url }} www_authenticate_uri = {{ keystone_internal_url }}
project_domain_name = {{ default_project_domain_name }} project_domain_name = {{ default_project_domain_name }}
project_name = service project_name = service

View File

@ -4,7 +4,7 @@
{% set python_path = '/var/lib/kolla/venv/lib/python' + distro_python_version + '/site-packages' %} {% set python_path = '/var/lib/kolla/venv/lib/python' + distro_python_version + '/site-packages' %}
{% endif %} {% endif %}
{% set binary_path = '/usr/bin' if aodh_install_type == 'binary' else '/var/lib/kolla/venv/bin' %} {% set binary_path = '/usr/bin' if aodh_install_type == 'binary' else '/var/lib/kolla/venv/bin' %}
Listen {{ api_interface_address }}:{{ aodh_api_listen_port }} Listen {{ api_interface_address | put_address_in_context('url') }}:{{ aodh_api_listen_port }}
ServerSignature Off ServerSignature Off
ServerTokens Prod ServerTokens Prod

View File

@ -43,7 +43,7 @@ barbican_services:
#################### ####################
barbican_database_name: "barbican" barbican_database_name: "barbican"
barbican_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}barbican{% endif %}" barbican_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}barbican{% endif %}"
barbican_database_address: "{{ database_address }}:{{ database_port }}" barbican_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
#################### ####################
@ -93,9 +93,9 @@ barbican_worker_extra_volumes: "{{ barbican_extra_volumes }}"
#################### ####################
# OpenStack # OpenStack
#################### ####################
barbican_admin_endpoint: "{{ admin_protocol }}://{{ barbican_internal_fqdn }}:{{ barbican_api_port }}" barbican_admin_endpoint: "{{ admin_protocol }}://{{ barbican_internal_fqdn | put_address_in_context('url') }}:{{ barbican_api_port }}"
barbican_internal_endpoint: "{{ internal_protocol }}://{{ barbican_internal_fqdn }}:{{ barbican_api_port }}" barbican_internal_endpoint: "{{ internal_protocol }}://{{ barbican_internal_fqdn | put_address_in_context('url') }}:{{ barbican_api_port }}"
barbican_public_endpoint: "{{ public_protocol }}://{{ barbican_external_fqdn }}:{{ barbican_api_port }}" barbican_public_endpoint: "{{ public_protocol }}://{{ barbican_external_fqdn | put_address_in_context('url') }}:{{ barbican_api_port }}"
barbican_logging_debug: "{{ openstack_logging_debug }}" barbican_logging_debug: "{{ openstack_logging_debug }}"

View File

@ -1,5 +1,5 @@
[uwsgi] [uwsgi]
socket = {{ api_interface_address }}:{{ barbican_api_listen_port }} socket = {{ api_interface_address | put_address_in_context('url') }}:{{ barbican_api_listen_port }}
protocol = http protocol = http
processes = {{ openstack_service_workers }} processes = {{ openstack_service_workers }}
lazy = true lazy = true

View File

@ -4,7 +4,7 @@ log_dir = /var/log/kolla/barbican
bind_port = {{ barbican_api_listen_port }} bind_port = {{ barbican_api_listen_port }}
bind_host = {{ api_interface_address }} bind_host = {{ api_interface_address }}
host_href = {{ public_protocol }}://{{ barbican_external_fqdn }}:{{ barbican_api_port }} host_href = {{ public_protocol }}://{{ barbican_external_fqdn | put_address_in_context('url') }}:{{ barbican_api_port }}
backlog = 4096 backlog = 4096
max_allowed_secret_in_bytes = 10000 max_allowed_secret_in_bytes = 10000
max_allowed_request_size_in_bytes = 1000000 max_allowed_request_size_in_bytes = 1000000
@ -62,7 +62,7 @@ auth_type = password
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
[oslo_messaging_notifications] [oslo_messaging_notifications]
transport_url = {{ notify_transport_url }} transport_url = {{ notify_transport_url }}

View File

@ -37,7 +37,7 @@
{% set api_interface = hostvars[host]['api_interface'] %} {% set api_interface = hostvars[host]['api_interface'] %}
{% if host not in groups['bifrost'] or 'ansible_' + api_interface in hostvars[host] %} {% if host not in groups['bifrost'] or 'ansible_' + api_interface in hostvars[host] %}
{% set hostnames = [hostvars[host]['ansible_nodename'], hostvars[host]['ansible_hostname']] %} {% set hostnames = [hostvars[host]['ansible_nodename'], hostvars[host]['ansible_hostname']] %}
{{ hostvars[host]['ansible_' + api_interface]['ipv4']['address'] }} {{ hostnames | unique | join(' ') }} {{ 'api' | kolla_address(host) }} {{ hostnames | unique | join(' ') }}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
become: True become: True

View File

@ -39,7 +39,7 @@ blazar_aggregate_pool_name: "freepool"
#################### ####################
blazar_database_name: "blazar" blazar_database_name: "blazar"
blazar_database_user: "blazar" blazar_database_user: "blazar"
blazar_database_address: "{{ database_address }}:{{ database_port }}" blazar_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
#################### ####################
@ -77,9 +77,9 @@ blazar_manager_extra_volumes: "{{ blazar_extra_volumes }}"
#################### ####################
# OpenStack # OpenStack
#################### ####################
blazar_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ blazar_api_port }}/v1" blazar_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ blazar_api_port }}/v1"
blazar_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ blazar_api_port }}/v1" blazar_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ blazar_api_port }}/v1"
blazar_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn }}:{{ blazar_api_port }}/v1" blazar_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ blazar_api_port }}/v1"
blazar_logging_debug: "{{ openstack_logging_debug }}" blazar_logging_debug: "{{ openstack_logging_debug }}"

View File

@ -35,7 +35,7 @@ service_token_roles_required = True
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
[database] [database]
connection = mysql+pymysql://{{ blazar_database_user }}:{{ blazar_database_password }}@{{ blazar_database_address }}/{{ blazar_database_name }} connection = mysql+pymysql://{{ blazar_database_user }}:{{ blazar_database_password }}@{{ blazar_database_address }}/{{ blazar_database_name }}

View File

@ -51,4 +51,4 @@ connection_password = {{ xenserver_password }}
[cache] [cache]
backend = oslo_cache.memcache_pool backend = oslo_cache.memcache_pool
enabled = True enabled = True
memcache_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcache_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}

View File

@ -101,9 +101,9 @@ ceph_mds_hostname: "{%- if ceph_mds_host_type == 'HOSTNAME' -%}{{ ansible_hostna
#################### ####################
## Ceph_rgw_keystone ## Ceph_rgw_keystone
#################### ####################
swift_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ rgw_port }}{{ '/' if ceph_rgw_compatibility|bool else '/swift/' }}v1" swift_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ rgw_port }}{{ '/' if ceph_rgw_compatibility|bool else '/swift/' }}v1"
swift_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ rgw_port }}{{ '/' if ceph_rgw_compatibility|bool else '/swift/' }}v1" swift_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ rgw_port }}{{ '/' if ceph_rgw_compatibility|bool else '/swift/' }}v1"
swift_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn }}:{{ rgw_port }}{{ '/' if ceph_rgw_compatibility|bool else '/swift/' }}v1" swift_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ rgw_port }}{{ '/' if ceph_rgw_compatibility|bool else '/swift/' }}v1"
ceph_rgw_keystone_user: "ceph_rgw" ceph_rgw_keystone_user: "ceph_rgw"

View File

@ -3,7 +3,7 @@
- name: Check final release (as running on MONs) - name: Check final release (as running on MONs)
become: true become: true
command: "docker exec ceph_mon ceph -m {{ hostvars[inventory_hostname]['ansible_' + storage_interface]['ipv4']['address'] }} versions" command: "docker exec ceph_mon ceph -m {{ 'storage' | kolla_address }} versions"
changed_when: false changed_when: false
register: ceph_release_command register: ceph_release_command
delegate_to: "{{ groups['ceph-mon'][0] }}" delegate_to: "{{ groups['ceph-mon'][0] }}"
@ -11,7 +11,7 @@
- name: Finalize the upgrade by disallowing older OSDs - name: Finalize the upgrade by disallowing older OSDs
become: true become: true
command: "docker exec ceph_mon ceph -m {{ hostvars[inventory_hostname]['ansible_' + storage_interface]['ipv4']['address'] }} osd require-osd-release {{ ((ceph_release_command.stdout|from_json).mon | string).split(' ')[4] }}" command: "docker exec ceph_mon ceph -m {{ 'storage' | kolla_address }} osd require-osd-release {{ ((ceph_release_command.stdout|from_json).mon | string).split(' ')[4] }}"
changed_when: false changed_when: false
delegate_to: "{{ groups['ceph-mon'][0] }}" delegate_to: "{{ groups['ceph-mon'][0] }}"
run_once: true run_once: true

View File

@ -1,5 +1,5 @@
{ {
"command": "/usr/bin/ceph-mon -f {% if ceph_debug %}-d{% endif %} -i {{ ceph_mon_hostname }} --public-addr {{ storage_interface_address }}:6789", "command": "/usr/bin/ceph-mon -f {% if ceph_debug %}-d{% endif %} -i {{ ceph_mon_hostname }} --public-addr {{ storage_interface_address | put_address_in_context('url') }}:6789",
"config_files": [ "config_files": [
{ {
"source": "{{ container_config_directory }}/ceph.conf", "source": "{{ container_config_directory }}/ceph.conf",

View File

@ -1,5 +1,5 @@
{ {
"command": "/usr/bin/ceph-osd -f {% if ceph_debug %}-d{% endif %} --public-addr {{ storage_interface_address }} --cluster-addr {{ hostvars[inventory_hostname]['ansible_' + cluster_interface]['ipv4']['address'] }}", "command": "/usr/bin/ceph-osd -f {% if ceph_debug %}-d{% endif %} --public-addr {{ storage_interface_address }} --cluster-addr {{ 'cluster' | kolla_address }}",
"config_files": [ "config_files": [
{ {
"source": "{{ container_config_directory }}/ceph.conf", "source": "{{ container_config_directory }}/ceph.conf",

View File

@ -13,12 +13,16 @@ mon initial members = {% for host in groups['ceph-mon'] %}{{ hostvars[host]['ans
{% elif ceph_mon_host_type == 'INVENTORY' %} {% elif ceph_mon_host_type == 'INVENTORY' %}
mon initial members = {% for host in groups['ceph-mon'] %}{{ host }}{% if not loop.last %}, {% endif %}{% endfor %} mon initial members = {% for host in groups['ceph-mon'] %}{{ host }}{% if not loop.last %}, {% endif %}{% endfor %}
{%- else %} {%- else %}
mon initial members = {% for host in groups['ceph-mon'] %}{{ hostvars[host]['ansible_' + hostvars[host]['storage_interface']]['ipv4']['address'] }}{% if not loop.last %}, {% endif %}{% endfor %} mon initial members = {% for host in groups['ceph-mon'] %}{{ 'storage' | kolla_address(host) }}{% if not loop.last %}, {% endif %}{% endfor %}
{% endif %} {% endif %}
mon host = {% for host in groups['ceph-mon'] %}{{ hostvars[host]['ansible_' + hostvars[host]['storage_interface']]['ipv4']['address'] }}{% if not loop.last %}, {% endif %}{% endfor %} mon host = {% for host in groups['ceph-mon'] %}{{ 'storage' | kolla_address(host) }}{% if not loop.last %}, {% endif %}{% endfor %}
mon addr = {% for host in groups['ceph-mon'] %}{{ hostvars[host]['ansible_' + hostvars[host]['storage_interface']]['ipv4']['address'] }}:6789{% if not loop.last %}, {% endif %}{% endfor %} mon addr = {% for host in groups['ceph-mon'] %}{{ 'storage' | kolla_address(host) | put_address_in_context('url') }}:6789{% if not loop.last %}, {% endif %}{% endfor %}
{% if storage_address_family == 'ipv6' %}
ms bind ipv6 = true
{% endif %}
auth cluster required = cephx auth cluster required = cephx
auth service required = cephx auth service required = cephx
@ -43,8 +47,8 @@ mon cluster log file = /var/log/kolla/ceph/$cluster.log
{% if service_name is defined and service_name == 'ceph-rgw' %} {% if service_name is defined and service_name == 'ceph-rgw' %}
[client.radosgw.gateway] [client.radosgw.gateway]
host = {{ hostvars[inventory_hostname]['ansible_' + storage_interface]['ipv4']['address'] }} host = {{ 'storage' | kolla_address }}
rgw frontends = civetweb port={{ api_interface_address }}:{{ rgw_port }} rgw frontends = civetweb port={{ api_interface_address | put_address_in_context('url') }}:{{ rgw_port }}
{% if enable_ceph_rgw_keystone | bool %} {% if enable_ceph_rgw_keystone | bool %}
rgw_keystone_url = {{ keystone_admin_url }} rgw_keystone_url = {{ keystone_admin_url }}
rgw_keystone_admin_user = {{ ceph_rgw_keystone_user }} rgw_keystone_admin_user = {{ ceph_rgw_keystone_user }}

View File

@ -91,7 +91,7 @@ ceph_client_cinder_backup_keyring_caps:
#################### ####################
cinder_database_name: "cinder" cinder_database_name: "cinder"
cinder_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}cinder{% endif %}" cinder_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}cinder{% endif %}"
cinder_database_address: "{{ database_address }}:{{ database_port }}" cinder_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
# Max number of object to consider # Max number of object to consider
# when run online data migration # when run online data migration
@ -164,12 +164,12 @@ cinder_volume_extra_volumes: "{{ cinder_extra_volumes }}"
#################### ####################
# OpenStack # OpenStack
#################### ####################
cinder_v2_admin_endpoint: "{{ admin_protocol }}://{{ cinder_internal_fqdn }}:{{ cinder_api_port }}/v2/%(tenant_id)s" cinder_v2_admin_endpoint: "{{ admin_protocol }}://{{ cinder_internal_fqdn | put_address_in_context('url') }}:{{ cinder_api_port }}/v2/%(tenant_id)s"
cinder_v2_internal_endpoint: "{{ internal_protocol }}://{{ cinder_internal_fqdn }}:{{ cinder_api_port }}/v2/%(tenant_id)s" cinder_v2_internal_endpoint: "{{ internal_protocol }}://{{ cinder_internal_fqdn | put_address_in_context('url') }}:{{ cinder_api_port }}/v2/%(tenant_id)s"
cinder_v2_public_endpoint: "{{ public_protocol }}://{{ cinder_external_fqdn }}:{{ cinder_api_port }}/v2/%(tenant_id)s" cinder_v2_public_endpoint: "{{ public_protocol }}://{{ cinder_external_fqdn | put_address_in_context('url') }}:{{ cinder_api_port }}/v2/%(tenant_id)s"
cinder_v3_admin_endpoint: "{{ admin_protocol }}://{{ cinder_internal_fqdn }}:{{ cinder_api_port }}/v3/%(tenant_id)s" cinder_v3_admin_endpoint: "{{ admin_protocol }}://{{ cinder_internal_fqdn | put_address_in_context('url') }}:{{ cinder_api_port }}/v3/%(tenant_id)s"
cinder_v3_internal_endpoint: "{{ internal_protocol }}://{{ cinder_internal_fqdn }}:{{ cinder_api_port }}/v3/%(tenant_id)s" cinder_v3_internal_endpoint: "{{ internal_protocol }}://{{ cinder_internal_fqdn | put_address_in_context('url') }}:{{ cinder_api_port }}/v3/%(tenant_id)s"
cinder_v3_public_endpoint: "{{ public_protocol }}://{{ cinder_external_fqdn }}:{{ cinder_api_port }}/v3/%(tenant_id)s" cinder_v3_public_endpoint: "{{ public_protocol }}://{{ cinder_external_fqdn | put_address_in_context('url') }}:{{ cinder_api_port }}/v3/%(tenant_id)s"
cinder_logging_debug: "{{ openstack_logging_debug }}" cinder_logging_debug: "{{ openstack_logging_debug }}"

View File

@ -3,7 +3,7 @@
{% else %} {% else %}
{% set python_path = '/var/lib/kolla/venv/lib/python' + distro_python_version + '/site-packages' %} {% set python_path = '/var/lib/kolla/venv/lib/python' + distro_python_version + '/site-packages' %}
{% endif %} {% endif %}
Listen {{ api_interface_address }}:{{ cinder_api_listen_port }} Listen {{ api_interface_address | put_address_in_context('url') }}:{{ cinder_api_listen_port }}
ServerSignature Off ServerSignature Off
ServerTokens Prod ServerTokens Prod

View File

@ -13,7 +13,7 @@ my_ip = {{ api_interface_address }}
osapi_volume_workers = {{ openstack_service_workers }} osapi_volume_workers = {{ openstack_service_workers }}
volume_name_template = volume-%s volume_name_template = volume-%s
glance_api_servers = {{ internal_protocol }}://{{ glance_internal_fqdn }}:{{ glance_api_port }} glance_api_servers = {{ internal_protocol }}://{{ glance_internal_fqdn | put_address_in_context('url') }}:{{ glance_api_port }}
glance_num_retries = {{ groups['glance-api'] | length }} glance_num_retries = {{ groups['glance-api'] | length }}
glance_api_version = 2 glance_api_version = 2
@ -42,7 +42,7 @@ backup_share = {{ cinder_backup_share }}
backup_file_size = 327680000 backup_file_size = 327680000
{% elif enable_swift | bool and cinder_backup_driver == "swift" %} {% elif enable_swift | bool and cinder_backup_driver == "swift" %}
backup_driver = cinder.backup.drivers.swift.SwiftBackupDriver backup_driver = cinder.backup.drivers.swift.SwiftBackupDriver
backup_swift_url = {{ internal_protocol }}://{{ swift_internal_fqdn }}:{{ swift_proxy_server_port }}/v1/AUTH_ backup_swift_url = {{ internal_protocol }}://{{ swift_internal_fqdn | put_address_in_context('url') }}:{{ swift_proxy_server_port }}/v1/AUTH_
backup_swift_auth = per_user backup_swift_auth = per_user
backup_swift_auth_version = 1 backup_swift_auth_version = 1
backup_swift_user = backup_swift_user =
@ -103,7 +103,7 @@ password = {{ cinder_keystone_password }}
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
[oslo_concurrency] [oslo_concurrency]
@ -210,5 +210,5 @@ auth_endpoint = {{ keystone_internal_url }}
backend_url = {{ redis_connection_string }} backend_url = {{ redis_connection_string }}
{% elif cinder_coordination_backend == 'etcd' %} {% elif cinder_coordination_backend == 'etcd' %}
# NOTE(jeffrey4l): python-etcd3 module do not support multi endpoint here. # NOTE(jeffrey4l): python-etcd3 module do not support multi endpoint here.
backend_url = etcd3://{{ hostvars[groups['etcd'][0]]['ansible_' + hostvars[groups['etcd'][0]]['api_interface']]['ipv4']['address'] }}:{{ etcd_client_port }} backend_url = etcd3://{{ 'api' | kolla_address(groups['etcd'][0]) | put_address_in_context('url') }}:{{ etcd_client_port }}
{% endif %} {% endif %}

View File

@ -34,7 +34,7 @@ cloudkitty_services:
#################### ####################
cloudkitty_database_name: "cloudkitty" cloudkitty_database_name: "cloudkitty"
cloudkitty_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}cloudkitty{% endif %}" cloudkitty_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}cloudkitty{% endif %}"
cloudkitty_database_address: "{{ database_address }}:{{ database_port }}" cloudkitty_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
#################### ####################
@ -72,9 +72,9 @@ cloudkitty_api_extra_volumes: "{{ cloudkitty_extra_volumes }}"
#################### ####################
# OpenStack # OpenStack
#################### ####################
cloudkitty_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ cloudkitty_api_port }}" cloudkitty_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ cloudkitty_api_port }}"
cloudkitty_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ cloudkitty_api_port }}" cloudkitty_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ cloudkitty_api_port }}"
cloudkitty_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn }}:{{ cloudkitty_api_port }}" cloudkitty_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ cloudkitty_api_port }}"
cloudkitty_logging_debug: "{{ openstack_logging_debug }}" cloudkitty_logging_debug: "{{ openstack_logging_debug }}"

View File

@ -27,7 +27,7 @@ region_name = {{ openstack_region_name }}
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
[oslo_concurrency] [oslo_concurrency]
lock_path = /var/lib/cloudkitty/tmp lock_path = /var/lib/cloudkitty/tmp

View File

@ -1,6 +1,6 @@
{% set python_path = '/usr/lib/python2.7/site-packages' if cloudkitty_install_type == 'binary' else '/var/lib/kolla/venv/lib/python2.7/site-packages' %} {% set python_path = '/usr/lib/python2.7/site-packages' if cloudkitty_install_type == 'binary' else '/var/lib/kolla/venv/lib/python2.7/site-packages' %}
{% set binary_path = '/usr/bin' if cloudkitty_install_type == 'binary' else '/var/lib/kolla/venv/bin' %} {% set binary_path = '/usr/bin' if cloudkitty_install_type == 'binary' else '/var/lib/kolla/venv/bin' %}
Listen {{ api_interface_address }}:{{ cloudkitty_api_port }} Listen {{ api_interface_address | put_address_in_context('url') }}:{{ cloudkitty_api_port }}
ServerSignature Off ServerSignature Off
ServerTokens Prod ServerTokens Prod

View File

@ -7,5 +7,5 @@ LoadPlugin memory
LoadPlugin network LoadPlugin network
<Plugin "network"> <Plugin "network">
Server "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}" "{{ collectd_udp_port }}" Server "{{ 'api' | kolla_address }}" "{{ collectd_udp_port }}"
</Plugin> </Plugin>

View File

@ -33,7 +33,7 @@
<store> <store>
@type monasca @type monasca
keystone_url {{ keystone_internal_url }} keystone_url {{ keystone_internal_url }}
monasca_log_api {{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ monasca_log_api_port }} monasca_log_api {{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ monasca_log_api_port }}
monasca_log_api_version v3.0 monasca_log_api_version v3.0
username {{ monasca_agent_user }} username {{ monasca_agent_user }}
password {{ monasca_agent_password }} password {{ monasca_agent_password }}
@ -81,7 +81,7 @@
<store> <store>
@type monasca @type monasca
keystone_url {{ keystone_internal_url }} keystone_url {{ keystone_internal_url }}
monasca_log_api {{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ monasca_log_api_port }} monasca_log_api {{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ monasca_log_api_port }}
monasca_log_api_version v3.0 monasca_log_api_version v3.0
username {{ monasca_agent_user }} username {{ monasca_agent_user }}
password {{ monasca_agent_password }} password {{ monasca_agent_password }}

View File

@ -3,7 +3,7 @@
<store> <store>
@type monasca @type monasca
keystone_url {{ keystone_internal_url }} keystone_url {{ keystone_internal_url }}
monasca_log_api {{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ monasca_log_api_port }} monasca_log_api {{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ monasca_log_api_port }}
monasca_log_api_version v3.0 monasca_log_api_version v3.0
username {{ monasca_agent_user }} username {{ monasca_agent_user }}
password {{ monasca_agent_password }} password {{ monasca_agent_password }}

View File

@ -41,7 +41,7 @@ congress_services:
#################### ####################
congress_database_name: "congress" congress_database_name: "congress"
congress_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}congress{% endif %}" congress_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}congress{% endif %}"
congress_database_address: "{{ database_address }}:{{ database_port }}" congress_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
#################### ####################
@ -90,9 +90,9 @@ congress_datasource_extra_volumes: "{{ congress_extra_volumes }}"
#################### ####################
# OpenStack # OpenStack
#################### ####################
congress_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ congress_api_port }}" congress_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ congress_api_port }}"
congress_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ congress_api_port }}" congress_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ congress_api_port }}"
congress_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn }}:{{ congress_api_port }}" congress_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ congress_api_port }}"
congress_logging_debug: "{{ openstack_logging_debug }}" congress_logging_debug: "{{ openstack_logging_debug }}"

View File

@ -40,7 +40,7 @@ password = {{ congress_keystone_password }}
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
[oslo_messaging_notifications] [oslo_messaging_notifications]
transport_url = {{ notify_transport_url }} transport_url = {{ notify_transport_url }}
@ -54,4 +54,4 @@ policy_file = {{ congress_policy_file }}
enable_proxy_headers_parsing = True enable_proxy_headers_parsing = True
[congress] [congress]
url = {{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ congress_api_port }} url = {{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ congress_api_port }}

View File

@ -29,7 +29,7 @@ cyborg_services:
#################### ####################
cyborg_database_name: "cyborg" cyborg_database_name: "cyborg"
cyborg_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}cyborg{% endif %}" cyborg_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}cyborg{% endif %}"
cyborg_database_address: "{{ database_address }}:{{ database_port }}" cyborg_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
#################### ####################
# Docker # Docker
@ -77,9 +77,9 @@ cyborg_conductor_extra_volumes: "{{ cyborg_extra_volumes }}"
#################### ####################
# OpenStack # OpenStack
#################### ####################
cyborg_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ cyborg_api_port }}" cyborg_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ cyborg_api_port }}"
cyborg_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ cyborg_api_port }}" cyborg_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ cyborg_api_port }}"
cyborg_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn }}:{{ cyborg_api_port }}" cyborg_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ cyborg_api_port }}"
cyborg_logging_debug: "{{ openstack_logging_debug }}" cyborg_logging_debug: "{{ openstack_logging_debug }}"

View File

@ -16,14 +16,14 @@ connection = mysql+pymysql://{{ cyborg_database_user }}:{{ cyborg_database_passw
[keystone_authtoken] [keystone_authtoken]
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcache_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcache_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
auth_uri = {{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ keystone_public_port }} auth_uri = {{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ keystone_public_port }}
project_domain_name = {{ default_project_domain_name }} project_domain_name = {{ default_project_domain_name }}
project_name = service project_name = service
user_domain_name = {{ default_user_domain_name }} user_domain_name = {{ default_user_domain_name }}
username = {{ cyborg_keystone_user }} username = {{ cyborg_keystone_user }}
password = {{ cyborg_keystone_password }} password = {{ cyborg_keystone_password }}
auth_url = {{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ keystone_admin_port }} auth_url = {{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ keystone_admin_port }}
auth_type = password auth_type = password
{% if cyborg_policy_file is defined %} {% if cyborg_policy_file is defined %}

View File

@ -71,7 +71,7 @@ designate_services:
#################### ####################
designate_database_name: "designate" designate_database_name: "designate"
designate_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}designate{% endif %}" designate_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}designate{% endif %}"
designate_database_address: "{{ database_address }}:{{ database_port }}" designate_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
#################### ####################
@ -164,9 +164,9 @@ designate_sink_extra_volumes: "{{ designate_extra_volumes }}"
#################### ####################
# OpenStack # OpenStack
#################### ####################
designate_admin_endpoint: "{{ admin_protocol }}://{{ designate_internal_fqdn }}:{{ designate_api_port }}" designate_admin_endpoint: "{{ admin_protocol }}://{{ designate_internal_fqdn | put_address_in_context('url') }}:{{ designate_api_port }}"
designate_internal_endpoint: "{{ internal_protocol }}://{{ designate_internal_fqdn }}:{{ designate_api_port }}" designate_internal_endpoint: "{{ internal_protocol }}://{{ designate_internal_fqdn | put_address_in_context('url') }}:{{ designate_api_port }}"
designate_public_endpoint: "{{ public_protocol }}://{{ designate_external_fqdn }}:{{ designate_api_port }}" designate_public_endpoint: "{{ public_protocol }}://{{ designate_external_fqdn | put_address_in_context('url') }}:{{ designate_api_port }}"
designate_logging_debug: "{{ openstack_logging_debug }}" designate_logging_debug: "{{ openstack_logging_debug }}"

View File

@ -21,7 +21,7 @@
- name: Checking free port for designate mdns - name: Checking free port for designate mdns
wait_for: wait_for:
host: "{{ hostvars[inventory_hostname]['ansible_' + dns_interface]['ipv4']['address'] }}" host: "{{ 'dns' | kolla_address }}"
port: "{{ designate_mdns_port }}" port: "{{ designate_mdns_port }}"
connect_timeout: 1 connect_timeout: 1
timeout: 1 timeout: 1

View File

@ -11,8 +11,8 @@ default_pool_id = {{ designate_pool_id }}
workers = {{ openstack_service_workers }} workers = {{ openstack_service_workers }}
[service:api] [service:api]
listen = {{ api_interface_address }}:{{ designate_api_listen_port }} listen = {{ api_interface_address | put_address_in_context('url') }}:{{ designate_api_listen_port }}
api_base_uri = {{ internal_protocol }}://{{ designate_internal_fqdn }}:{{ designate_api_port }} api_base_uri = {{ internal_protocol }}://{{ designate_internal_fqdn | put_address_in_context('url') }}:{{ designate_api_port }}
workers = {{ openstack_service_workers }} workers = {{ openstack_service_workers }}
enable_api_admin = True enable_api_admin = True
enable_host_header = True enable_host_header = True
@ -32,7 +32,7 @@ service_token_roles_required = True
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
[service:sink] [service:sink]
enabled_notification_handlers = nova_fixed, neutron_floatingip enabled_notification_handlers = nova_fixed, neutron_floatingip
@ -40,7 +40,7 @@ workers = {{ openstack_service_workers }}
{% if service_name == 'designate-mdns' %} {% if service_name == 'designate-mdns' %}
[service:mdns] [service:mdns]
listen = {{ hostvars[inventory_hostname]['ansible_' + dns_interface]['ipv4']['address'] }}:{{ designate_mdns_port }} listen = {{ 'dns' | kolla_address | put_address_in_context('url') }}:{{ designate_mdns_port }}
workers = {{ openstack_service_workers }} workers = {{ openstack_service_workers }}
{% endif %} {% endif %}
@ -104,5 +104,5 @@ policy_file = {{ designate_policy_file }}
backend_url = {{ redis_connection_string }} backend_url = {{ redis_connection_string }}
{% elif designate_coordination_backend == 'etcd' %} {% elif designate_coordination_backend == 'etcd' %}
# NOTE(noxoid): python-etcd3 does not support multiple endpoints # NOTE(noxoid): python-etcd3 does not support multiple endpoints
backend_url = etcd3://{{ hostvars[groups['etcd'][0]]['ansible_' + hostvars[groups['etcd'][0]]['api_interface']]['ipv4']['address'] }}:{{ etcd_client_port }} backend_url = etcd3://{{ 'api' | kolla_address(groups['etcd'][0]) | put_address_in_context('url') }}:{{ etcd_client_port }}
{% endif %} {% endif %}

View File

@ -1,9 +1,9 @@
#jinja2: trim_blocks: False #jinja2: trim_blocks: False
include "/etc/rndc.key"; include "/etc/rndc.key";
options { options {
listen-on port {{ designate_bind_port }} { {{ hostvars[inventory_hostname]['ansible_' + hostvars[inventory_hostname]['api_interface']]['ipv4']['address'] }}; }; listen-on port {{ designate_bind_port }} { {{ 'api' | kolla_address }}; };
{% if api_interface != dns_interface %} {% if api_interface != dns_interface %}
listen-on port {{ designate_bind_port }} { {{ hostvars[inventory_hostname]['ansible_' + hostvars[inventory_hostname]['dns_interface']]['ipv4']['address'] }}; }; listen-on port {{ designate_bind_port }} { {{ 'dns' | kolla_address }}; };
{% endif %} {% endif %}
directory "/var/lib/named"; directory "/var/lib/named";
allow-new-zones yes; allow-new-zones yes;
@ -15,9 +15,9 @@ options {
forwarders { {{ designate_forwarders_addresses }}; }; forwarders { {{ designate_forwarders_addresses }}; };
{% endif %} {% endif %}
minimal-responses yes; minimal-responses yes;
allow-notify { {% for host in groups['designate-worker'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }};{% endfor %} }; allow-notify { {% for host in groups['designate-worker'] %}{{ 'api' | kolla_address(host) }};{% endfor %} };
}; };
controls { controls {
inet {{ hostvars[inventory_hostname]['ansible_' + hostvars[inventory_hostname]['api_interface']]['ipv4']['address'] }} port {{ designate_rndc_port }} allow { {% for host in groups['designate-worker'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}; {% endfor %} } keys { "rndc-key"; }; inet {{ 'api' | kolla_address }} port {{ designate_rndc_port }} allow { {% for host in groups['designate-worker'] %}{{ 'api' | kolla_address(host) }}; {% endfor %} } keys { "rndc-key"; };
}; };

View File

@ -9,7 +9,7 @@
nameservers: nameservers:
{% if designate_backend == 'bind9' %} {% if designate_backend == 'bind9' %}
{% for host in groups['designate-backend-bind9'] %} {% for host in groups['designate-backend-bind9'] %}
- host: {{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }} - host: {{ 'api' | kolla_address(host) }}
port: {{ designate_bind_port }} port: {{ designate_bind_port }}
{% endfor %} {% endfor %}
{% elif designate_backend_external == 'bind9' %} {% elif designate_backend_external == 'bind9' %}
@ -22,16 +22,16 @@
{% if designate_backend == 'bind9' %} {% if designate_backend == 'bind9' %}
{% for bind_host in groups['designate-backend-bind9'] %} {% for bind_host in groups['designate-backend-bind9'] %}
- type: bind9 - type: bind9
description: BIND9 Server {{ hostvars[bind_host]['ansible_' + hostvars[bind_host]['api_interface']]['ipv4']['address'] }} description: BIND9 Server {{ 'api' | kolla_address(bind_host) }}
masters: masters:
{% for mdns_host in groups['designate-mdns'] %} {% for mdns_host in groups['designate-mdns'] %}
- host: {{ hostvars[mdns_host]['ansible_' + hostvars[mdns_host]['dns_interface']]['ipv4']['address'] }} - host: {{ 'dns' | kolla_address(mdns_host) }}
port: {{ designate_mdns_port }} port: {{ designate_mdns_port }}
{% endfor %} {% endfor %}
options: options:
host: {{ hostvars[bind_host]['ansible_' + hostvars[bind_host]['api_interface']]['ipv4']['address'] }} host: {{ 'api' | kolla_address(bind_host) }}
port: {{ designate_bind_port }} port: {{ designate_bind_port }}
rndc_host: {{ hostvars[bind_host]['ansible_' + hostvars[bind_host]['api_interface']]['ipv4']['address'] }} rndc_host: {{ 'api' | kolla_address(bind_host) }}
rndc_port: {{ designate_rndc_port }} rndc_port: {{ designate_rndc_port }}
rndc_key_file: /etc/designate/rndc.key rndc_key_file: /etc/designate/rndc.key
{% endfor %} {% endfor %}
@ -41,7 +41,7 @@
description: BIND9 Server {{ bind_host }} description: BIND9 Server {{ bind_host }}
masters: masters:
{% for mdns_host in groups['designate-mdns'] %} {% for mdns_host in groups['designate-mdns'] %}
- host: {{ hostvars[mdns_host]['ansible_' + hostvars[mdns_host]['dns_interface']]['ipv4']['address'] }} - host: {{ 'dns' | kolla_address(mdns_host) }}
port: {{ designate_mdns_port }} port: {{ designate_mdns_port }}
{% endfor %} {% endfor %}
options: options:
@ -71,7 +71,7 @@
description: Default Infoblox Pool description: Default Infoblox Pool
masters: masters:
{% for mdns_host in groups['designate-mdns'] %} {% for mdns_host in groups['designate-mdns'] %}
- host: {{ hostvars[mdns_host]['ansible_' + hostvars[mdns_host]['dns_interface']]['ipv4']['address'] }} - host: {{ 'dns' | kolla_address(mdns_host) }}
port: {{ designate_mdns_port }} port: {{ designate_mdns_port }}
{% endfor %} {% endfor %}
options: options:

View File

@ -1,6 +1,6 @@
#include "/etc/rndc.key"; #include "/etc/rndc.key";
options { options {
default-key "rndc-key"; default-key "rndc-key";
default-server {{ hostvars[inventory_hostname]['ansible_' + hostvars[inventory_hostname]['api_interface']]['ipv4']['address'] }}; default-server {{ 'api' | kolla_address }};
default-port {{ designate_rndc_port }}; default-port {{ designate_rndc_port }};
}; };

View File

@ -3,7 +3,7 @@
# https://www.elastic.co/guide/en/elasticsearch/reference/5.6/restart-upgrade.html # https://www.elastic.co/guide/en/elasticsearch/reference/5.6/restart-upgrade.html
- name: Disable shard allocation - name: Disable shard allocation
uri: uri:
url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ elasticsearch_port }}/_cluster/settings" url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ elasticsearch_port }}/_cluster/settings"
method: PUT method: PUT
status_code: 200 status_code: 200
return_content: yes return_content: yes
@ -14,7 +14,7 @@
- name: Perform a synced flush - name: Perform a synced flush
uri: uri:
url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ elasticsearch_port }}/_flush/synced" url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ elasticsearch_port }}/_flush/synced"
method: POST method: POST
status_code: 200 status_code: 200
return_content: yes return_content: yes

View File

@ -2,12 +2,12 @@
{% set minimum_master_nodes = (num_nodes / 2 + 1) | round(0, 'floor') | int if num_nodes > 2 else 1 %} {% set minimum_master_nodes = (num_nodes / 2 + 1) | round(0, 'floor') | int if num_nodes > 2 else 1 %}
{% set recover_after_nodes = (num_nodes * 2 / 3) | round(0, 'floor') | int if num_nodes > 1 else 1 %} {% set recover_after_nodes = (num_nodes * 2 / 3) | round(0, 'floor') | int if num_nodes > 1 else 1 %}
node.name: "{{ api_interface_address }}" node.name: "{{ api_interface_address }}"
network.host: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}" network.host: "{{ 'api' | kolla_address }}"
cluster.name: "{{ elasticsearch_cluster_name }}" cluster.name: "{{ elasticsearch_cluster_name }}"
node.master: true node.master: true
node.data: true node.data: true
discovery.zen.ping.unicast.hosts: [{% for host in groups['elasticsearch'] %}"{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}"{% if not loop.last %},{% endif %}{% endfor %}] discovery.zen.ping.unicast.hosts: [{% for host in groups['elasticsearch'] %}"{{ 'api' | kolla_address(host) }}"{% if not loop.last %},{% endif %}{% endfor %}]
discovery.zen.minimum_master_nodes: {{ minimum_master_nodes }} discovery.zen.minimum_master_nodes: {{ minimum_master_nodes }}
http.port: {{ elasticsearch_port }} http.port: {{ elasticsearch_port }}

View File

@ -9,12 +9,12 @@ etcd_services:
environment: environment:
ETCD_DATA_DIR: "/var/lib/etcd" ETCD_DATA_DIR: "/var/lib/etcd"
ETCD_NAME: "{{ ansible_hostname }}" ETCD_NAME: "{{ ansible_hostname }}"
ETCD_ADVERTISE_CLIENT_URLS: "{{ internal_protocol }}://{{ api_interface_address }}:{{ etcd_client_port }}" ETCD_ADVERTISE_CLIENT_URLS: "{{ internal_protocol }}://{{ api_interface_address | put_address_in_context('url') }}:{{ etcd_client_port }}"
ETCD_LISTEN_CLIENT_URLS: "{{ internal_protocol }}://{{ api_interface_address }}:{{ etcd_client_port }}" ETCD_LISTEN_CLIENT_URLS: "{{ internal_protocol }}://{{ api_interface_address | put_address_in_context('url') }}:{{ etcd_client_port }}"
ETCD_INITIAL_ADVERTISE_PEER_URLS: "{{ internal_protocol }}://{{ api_interface_address }}:{{ etcd_peer_port }}" ETCD_INITIAL_ADVERTISE_PEER_URLS: "{{ internal_protocol }}://{{ api_interface_address | put_address_in_context('url') }}:{{ etcd_peer_port }}"
ETCD_LISTEN_PEER_URLS: "{{ internal_protocol }}://{{ api_interface_address }}:{{ etcd_peer_port }}" ETCD_LISTEN_PEER_URLS: "{{ internal_protocol }}://{{ api_interface_address | put_address_in_context('url') }}:{{ etcd_peer_port }}"
ETCD_INITIAL_CLUSTER_TOKEN: "{{ etcd_cluster_token }}" ETCD_INITIAL_CLUSTER_TOKEN: "{{ etcd_cluster_token }}"
ETCD_INITIAL_CLUSTER: "{% for host in groups['etcd'] %}{{ hostvars[host]['ansible_hostname'] }}={{ internal_protocol }}://{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ etcd_peer_port }}{% if not loop.last %},{% endif %}{% endfor %}" ETCD_INITIAL_CLUSTER: "{% for host in groups['etcd'] %}{{ hostvars[host]['ansible_hostname'] }}={{ internal_protocol }}://{{ 'api' | kolla_address(host) | put_address_in_context('url') }}:{{ etcd_peer_port }}{% if not loop.last %},{% endif %}{% endfor %}"
ETCD_INITIAL_CLUSTER_STATE: "new" ETCD_INITIAL_CLUSTER_STATE: "new"
ETCD_OUT_FILE: "/var/log/kolla/etcd/etcd.log" ETCD_OUT_FILE: "/var/log/kolla/etcd/etcd.log"
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"

View File

@ -34,7 +34,7 @@ freezer_services:
freezer_database_backend: "mariadb" freezer_database_backend: "mariadb"
freezer_database_name: "freezer" freezer_database_name: "freezer"
freezer_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}freezer{% endif %}" freezer_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}freezer{% endif %}"
freezer_database_address: "{{ database_address }}:{{ database_port }}" freezer_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
freezer_elasticsearch_replicas: "1" freezer_elasticsearch_replicas: "1"
freezer_es_protocol: freezer_es_protocol:
freezer_es_address: freezer_es_address:
@ -77,9 +77,9 @@ freezer_scheduler_extra_volumes: "{{ freezer_extra_volumes }}"
#################### ####################
# OpenStack # OpenStack
#################### ####################
freezer_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ freezer_api_port }}" freezer_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ freezer_api_port }}"
freezer_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ freezer_api_port }}" freezer_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ freezer_api_port }}"
freezer_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn }}:{{ freezer_api_port }}" freezer_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ freezer_api_port }}"
freezer_logging_debug: "{{ openstack_logging_debug }}" freezer_logging_debug: "{{ openstack_logging_debug }}"

View File

@ -33,7 +33,7 @@ password = {{ freezer_keystone_password }}
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
{% if freezer_policy_file is defined %} {% if freezer_policy_file is defined %}
[oslo_policy] [oslo_policy]
@ -63,7 +63,7 @@ backend = elasticsearch
driver = elasticsearch driver = elasticsearch
[elasticsearch] [elasticsearch]
hosts = {{ freezer_es_protocol }}://{{ freezer_es_address }}:{{ freezer_es_port }} hosts = {{ freezer_es_protocol }}://{{ freezer_es_address | put_address_in_context('url') }}:{{ freezer_es_port }}
number_of_replicas = {{ freezer_elasticsearch_replicas }} number_of_replicas = {{ freezer_elasticsearch_replicas }}
index = freezer index = freezer
{% endif %} {% endif %}

View File

@ -1,6 +1,6 @@
{% set freezer_log_dir = '/var/log/kolla/freezer' %} {% set freezer_log_dir = '/var/log/kolla/freezer' %}
{% set python_path = '/usr/lib/python2.7/site-packages' if freezer_install_type == 'binary' else '/var/lib/kolla/venv/lib/python2.7/site-packages' %} {% set python_path = '/usr/lib/python2.7/site-packages' if freezer_install_type == 'binary' else '/var/lib/kolla/venv/lib/python2.7/site-packages' %}
Listen {{ api_interface_address }}:{{ freezer_api_port }} Listen {{ api_interface_address | put_address_in_context('url') }}:{{ freezer_api_port }}
ServerSignature Off ServerSignature Off
ServerTokens Prod ServerTokens Prod

View File

@ -37,7 +37,7 @@ glance_services:
#################### ####################
# HAProxy # HAProxy
#################### ####################
haproxy_members: "{% for host in glance_api_hosts %}server {{ hostvars[host]['ansible_hostname'] }} {{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ glance_api_listen_port }} check inter 2000 rise 2 fall 5;{% endfor %}" haproxy_members: "{% for host in glance_api_hosts %}server {{ hostvars[host]['ansible_hostname'] }} {{ 'api' | kolla_address(host) }}:{{ glance_api_listen_port }} check inter 2000 rise 2 fall 5;{% endfor %}"
#################### ####################
# Keystone # Keystone
@ -92,7 +92,7 @@ ceph_client_glance_keyring_caps:
#################### ####################
glance_database_name: "glance" glance_database_name: "glance"
glance_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}glance{% endif %}" glance_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}glance{% endif %}"
glance_database_address: "{{ database_address }}:{{ database_port }}" glance_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
#################### ####################
@ -147,9 +147,9 @@ glance_store_backends: "{{ glance_backends|selectattr('enabled', 'equalto', true
# OpenStack # OpenStack
#################### ####################
glance_admin_endpoint: "{{ admin_protocol }}://{{ glance_internal_fqdn }}:{{ glance_api_port }}" glance_admin_endpoint: "{{ admin_protocol }}://{{ glance_internal_fqdn | put_address_in_context('url') }}:{{ glance_api_port }}"
glance_internal_endpoint: "{{ internal_protocol }}://{{ glance_internal_fqdn }}:{{ glance_api_port }}" glance_internal_endpoint: "{{ internal_protocol }}://{{ glance_internal_fqdn | put_address_in_context('url') }}:{{ glance_api_port }}"
glance_public_endpoint: "{{ public_protocol }}://{{ glance_external_fqdn }}:{{ glance_api_port }}" glance_public_endpoint: "{{ public_protocol }}://{{ glance_external_fqdn | put_address_in_context('url') }}:{{ glance_api_port }}"
glance_logging_debug: "{{ openstack_logging_debug }}" glance_logging_debug: "{{ openstack_logging_debug }}"

View File

@ -38,7 +38,7 @@ password = {{ glance_keystone_password }}
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
[paste_deploy] [paste_deploy]
flavor = {% if enable_glance_image_cache | bool %}keystone+cachemanagement{% else %}keystone{% endif %} flavor = {% if enable_glance_image_cache | bool %}keystone+cachemanagement{% else %}keystone{% endif %}

View File

@ -69,7 +69,7 @@ swift_admin_tenant_name: "admin"
#################### ####################
gnocchi_database_name: "gnocchi" gnocchi_database_name: "gnocchi"
gnocchi_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}gnocchi{% endif %}" gnocchi_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}gnocchi{% endif %}"
gnocchi_database_address: "{{ database_address }}:{{ database_port }}" gnocchi_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
#################### ####################
@ -120,9 +120,9 @@ gnocchi_statsd_extra_volumes: "{{ gnocchi_extra_volumes }}"
#################### ####################
# OpenStack # OpenStack
#################### ####################
gnocchi_admin_endpoint: "{{ admin_protocol }}://{{ gnocchi_internal_fqdn }}:{{ gnocchi_api_port }}" gnocchi_admin_endpoint: "{{ admin_protocol }}://{{ gnocchi_internal_fqdn | put_address_in_context('url') }}:{{ gnocchi_api_port }}"
gnocchi_internal_endpoint: "{{ internal_protocol }}://{{ gnocchi_internal_fqdn }}:{{ gnocchi_api_port }}" gnocchi_internal_endpoint: "{{ internal_protocol }}://{{ gnocchi_internal_fqdn | put_address_in_context('url') }}:{{ gnocchi_api_port }}"
gnocchi_public_endpoint: "{{ public_protocol }}://{{ gnocchi_external_fqdn }}:{{ gnocchi_api_port }}" gnocchi_public_endpoint: "{{ public_protocol }}://{{ gnocchi_external_fqdn | put_address_in_context('url') }}:{{ gnocchi_api_port }}"
gnocchi_logging_debug: "{{ openstack_logging_debug }}" gnocchi_logging_debug: "{{ openstack_logging_debug }}"

View File

@ -53,7 +53,7 @@ auth_type = password
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
{% if gnocchi_policy_file is defined %} {% if gnocchi_policy_file is defined %}
[oslo_policy] [oslo_policy]
@ -87,5 +87,5 @@ swift_project_name = {{ swift_admin_tenant_name }}
{% if enable_grafana | bool %} {% if enable_grafana | bool %}
[cors] [cors]
allowed_origin = {{ public_protocol }}://{{ kolla_external_fqdn }}:{{ grafana_server_port }} allowed_origin = {{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ grafana_server_port }}
{% endif %} {% endif %}

View File

@ -4,7 +4,7 @@
{% set python_path = '/var/lib/kolla/venv/lib/python' + distro_python_version + '/site-packages' %} {% set python_path = '/var/lib/kolla/venv/lib/python' + distro_python_version + '/site-packages' %}
{% endif %} {% endif %}
{% set wsgi_path = '/usr/bin' if gnocchi_install_type == 'binary' else '/var/lib/kolla/venv/bin' %} {% set wsgi_path = '/usr/bin' if gnocchi_install_type == 'binary' else '/var/lib/kolla/venv/bin' %}
Listen {{ api_interface_address }}:{{ gnocchi_api_listen_port }} Listen {{ api_interface_address | put_address_in_context('url') }}:{{ gnocchi_api_listen_port }}
ServerSignature Off ServerSignature Off
ServerTokens Prod ServerTokens Prod

View File

@ -26,7 +26,7 @@ grafana_services:
#################### ####################
grafana_database_name: "grafana" grafana_database_name: "grafana"
grafana_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}grafana{% endif %}" grafana_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}grafana{% endif %}"
grafana_database_address: "{{ database_address }}:{{ database_port }}" grafana_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
#################### ####################
# Datasource # Datasource
@ -39,7 +39,7 @@ grafana_data_sources:
database: "telegraf" database: "telegraf"
name: "telegraf" name: "telegraf"
type: "influxdb" type: "influxdb"
url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ influxdb_http_port }}" url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ influxdb_http_port }}"
access: "proxy" access: "proxy"
basicAuth: false basicAuth: false
elasticsearch: elasticsearch:
@ -48,7 +48,7 @@ grafana_data_sources:
name: "elasticsearch" name: "elasticsearch"
type: "elasticsearch" type: "elasticsearch"
access: "proxy" access: "proxy"
url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ elasticsearch_port }}" url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ elasticsearch_port }}"
database: "flog-*" database: "flog-*"
jsonData: jsonData:
esVersion: 5 esVersion: 5

View File

@ -1,7 +1,7 @@
--- ---
- name: Wait for grafana application ready - name: Wait for grafana application ready
uri: uri:
url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ grafana_server_port }}/login" url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ grafana_server_port }}/login"
status_code: 200 status_code: 200
register: result register: result
until: result.get('status') == 200 until: result.get('status') == 200
@ -11,7 +11,7 @@
- name: Enable grafana datasources - name: Enable grafana datasources
uri: uri:
url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ grafana_server_port }}/api/datasources" url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ grafana_server_port }}/api/datasources"
method: POST method: POST
user: "{{ grafana_admin_username }}" user: "{{ grafana_admin_username }}"
password: "{{ grafana_admin_password }}" password: "{{ grafana_admin_password }}"
@ -29,7 +29,7 @@
- name: Disable Getting Started panel - name: Disable Getting Started panel
uri: uri:
url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ grafana_server_port }}/api/user/helpflags/1" url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ grafana_server_port }}/api/user/helpflags/1"
method: PUT method: PUT
user: "{{ grafana_admin_username }}" user: "{{ grafana_admin_username }}"
password: "{{ grafana_admin_password }}" password: "{{ grafana_admin_password }}"

View File

@ -5,5 +5,5 @@ datasources:
type: prometheus type: prometheus
access: proxy access: proxy
orgId: 1 orgId: 1
url: http://{{ kolla_internal_vip_address }}:{{ prometheus_port }} url: http://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ prometheus_port }}
version: 1 version: 1

View File

@ -60,9 +60,8 @@ listen {{ service_name }}
{% endfor %} {% endfor %}
{% else %} {% else %}
{% for host in groups[host_group] %} {% for host in groups[host_group] %}
{% set api_interface = "ansible_%s"|format(hostvars[host]['api_interface']) %}
{% set host_name = hostvars[host]['ansible_hostname'] %} {% set host_name = hostvars[host]['ansible_hostname'] %}
{% set host_ip = hostvars[host][api_interface]['ipv4']['address'] %} {% set host_ip = 'api' | kolla_address(host) %}
server {{ host_name }} {{ host_ip }}:{{ listen_port }} {{ haproxy_health_check }} server {{ host_name }} {{ host_ip }}:{{ listen_port }} {{ haproxy_health_check }}
{% endfor %} {% endfor %}
{% endif %} {% endif %}

View File

@ -80,9 +80,8 @@ backend {{ service_name }}_back
{% endfor %} {% endfor %}
{% else %} {% else %}
{% for host in groups[host_group] %} {% for host in groups[host_group] %}
{% set api_interface = "ansible_%s"|format(hostvars[host]['api_interface']) %}
{% set host_name = hostvars[host]['ansible_hostname'] %} {% set host_name = hostvars[host]['ansible_hostname'] %}
{% set host_ip = hostvars[host][api_interface]['ipv4']['address'] %} {% set host_ip = 'api' | kolla_address(host) %}
server {{ host_name }} {{ host_ip }}:{{ listen_port }} {{ haproxy_health_check }} server {{ host_name }} {{ host_ip }}:{{ listen_port }} {{ haproxy_health_check }}
{% endfor %} {% endfor %}
{% endif %} {% endif %}

View File

@ -169,13 +169,13 @@
- inventory_hostname in groups['haproxy'] - inventory_hostname in groups['haproxy']
- api_interface_address != kolla_internal_vip_address - api_interface_address != kolla_internal_vip_address
# FIXME(yoctozepto): this req seems arbitrary, they need not be, just routable is fine
- name: Checking if kolla_internal_vip_address is in the same network as api_interface on all nodes - name: Checking if kolla_internal_vip_address is in the same network as api_interface on all nodes
become: true become: true
command: ip -o addr show dev {{ api_interface }} command: ip -o addr show dev {{ api_interface }}
register: ip_addr_output register: ip_addr_output
changed_when: false changed_when: false
failed_when: >- failed_when: >-
'169.254.' not in kolla_internal_vip_address and
( ip_addr_output is failed or ( ip_addr_output is failed or
kolla_internal_vip_address | ipaddr(ip_addr_output.stdout.split()[3]) is none) kolla_internal_vip_address | ipaddr(ip_addr_output.stdout.split()[3]) is none)
when: when:

View File

@ -1,15 +1,16 @@
--- ---
- include_tasks: config.yml - include_tasks: config.yml
- set_fact: secondary_addresses={{ hostvars[inventory_hostname]['ansible_' + api_interface].get('ipv4_secondaries', []) | map(attribute='address') | list }}
- name: Stopping all slave keepalived containers - name: Stopping all slave keepalived containers
vars:
key: "{{ 'ipv6' if api_address_family == 'ipv6' else 'ipv4_secondaries' }}"
addresses: "{{ hostvars[inventory_hostname]['ansible_' + api_interface].get(key, []) | map(attribute='address') | list }}"
become: true become: true
kolla_docker: kolla_docker:
action: "stop_container" action: "stop_container"
common_options: "{{ docker_common_options }}" common_options: "{{ docker_common_options }}"
name: "keepalived" name: "keepalived"
when: kolla_internal_vip_address not in secondary_addresses when: kolla_internal_vip_address not in addresses
notify: notify:
- Restart keepalived container - Restart keepalived container

View File

@ -17,7 +17,7 @@ vrrp_instance kolla_internal_vip_{{ keepalived_virtual_router_id }} {
{% if groups['haproxy'] | length > 1 %} {% if groups['haproxy'] | length > 1 %}
unicast_peer { unicast_peer {
{% for host in groups['haproxy'] %} {% for host in groups['haproxy'] %}
{% set ip_addr = hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] %} {% set ip_addr = 'api' | kolla_address(host) %}
{% if ip_addr != api_interface_address %} {% if ip_addr != api_interface_address %}
{{ ip_addr }} {{ ip_addr }}
{% endif %} {% endif %}

View File

@ -55,7 +55,7 @@ heat_services:
#################### ####################
heat_database_name: "heat" heat_database_name: "heat"
heat_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}heat{% endif %}" heat_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}heat{% endif %}"
heat_database_address: "{{ database_address }}:{{ database_port }}" heat_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
#################### ####################
@ -104,12 +104,12 @@ heat_engine_extra_volumes: "{{ heat_extra_volumes }}"
#################### ####################
# OpenStack # OpenStack
#################### ####################
heat_admin_endpoint: "{{ admin_protocol }}://{{ heat_internal_fqdn }}:{{ heat_api_port }}/v1/%(tenant_id)s" heat_admin_endpoint: "{{ admin_protocol }}://{{ heat_internal_fqdn | put_address_in_context('url') }}:{{ heat_api_port }}/v1/%(tenant_id)s"
heat_internal_endpoint: "{{ internal_protocol }}://{{ heat_internal_fqdn }}:{{ heat_api_port }}/v1/%(tenant_id)s" heat_internal_endpoint: "{{ internal_protocol }}://{{ heat_internal_fqdn | put_address_in_context('url') }}:{{ heat_api_port }}/v1/%(tenant_id)s"
heat_public_endpoint: "{{ public_protocol }}://{{ heat_external_fqdn }}:{{ heat_api_port }}/v1/%(tenant_id)s" heat_public_endpoint: "{{ public_protocol }}://{{ heat_external_fqdn | put_address_in_context('url') }}:{{ heat_api_port }}/v1/%(tenant_id)s"
heat_cfn_admin_endpoint: "{{ admin_protocol }}://{{ heat_cfn_internal_fqdn }}:{{ heat_api_cfn_port }}/v1" heat_cfn_admin_endpoint: "{{ admin_protocol }}://{{ heat_cfn_internal_fqdn | put_address_in_context('url') }}:{{ heat_api_cfn_port }}/v1"
heat_cfn_internal_endpoint: "{{ internal_protocol }}://{{ heat_cfn_internal_fqdn }}:{{ heat_api_cfn_port }}/v1" heat_cfn_internal_endpoint: "{{ internal_protocol }}://{{ heat_cfn_internal_fqdn | put_address_in_context('url') }}:{{ heat_api_cfn_port }}/v1"
heat_cfn_public_endpoint: "{{ public_protocol }}://{{ heat_cfn_external_fqdn }}:{{ heat_api_cfn_port }}/v1" heat_cfn_public_endpoint: "{{ public_protocol }}://{{ heat_cfn_external_fqdn | put_address_in_context('url') }}:{{ heat_api_cfn_port }}/v1"
heat_logging_debug: "{{ openstack_logging_debug }}" heat_logging_debug: "{{ openstack_logging_debug }}"

View File

@ -3,8 +3,8 @@ debug = {{ heat_logging_debug }}
log_dir = /var/log/kolla/heat log_dir = /var/log/kolla/heat
heat_metadata_server_url = {{ public_protocol }}://{{ heat_cfn_external_fqdn }}:{{ heat_api_cfn_port }} heat_metadata_server_url = {{ public_protocol }}://{{ heat_cfn_external_fqdn | put_address_in_context('url') }}:{{ heat_api_cfn_port }}
heat_waitcondition_server_url = {{ public_protocol }}://{{ heat_cfn_external_fqdn }}:{{ heat_api_cfn_port }}/v1/waitcondition heat_waitcondition_server_url = {{ public_protocol }}://{{ heat_cfn_external_fqdn | put_address_in_context('url') }}:{{ heat_api_cfn_port }}/v1/waitcondition
heat_stack_user_role = {{ heat_stack_user_role }} heat_stack_user_role = {{ heat_stack_user_role }}
@ -52,13 +52,13 @@ password = {{ heat_keystone_password }}
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
[cache] [cache]
backend = oslo_cache.memcache_pool backend = oslo_cache.memcache_pool
enabled = True enabled = True
memcache_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcache_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
[trustee] [trustee]

View File

@ -74,7 +74,7 @@ horizon_keystone_domain_choices:
#################### ####################
horizon_database_name: "horizon" horizon_database_name: "horizon"
horizon_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}horizon{% endif %}" horizon_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}horizon{% endif %}"
horizon_database_address: "{{ database_address }}:{{ database_port }}" horizon_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
#################### ####################
# Docker # Docker

View File

@ -1,6 +1,6 @@
{% set python_path = '/usr/share/openstack-dashboard' if horizon_install_type == 'binary' else '/var/lib/kolla/venv/lib/python' + distro_python_version + '/site-packages' %} {% set python_path = '/usr/share/openstack-dashboard' if horizon_install_type == 'binary' else '/var/lib/kolla/venv/lib/python' + distro_python_version + '/site-packages' %}
Listen {{ api_interface_address }}:{{ horizon_listen_port }} Listen {{ api_interface_address | put_address_in_context('url') }}:{{ horizon_listen_port }}
ServerSignature Off ServerSignature Off
ServerTokens Prod ServerTokens Prod

View File

@ -179,7 +179,7 @@ SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = { CACHES = {
'default': { 'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': [{% for host in groups['memcached'] %}'{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}'{% if not loop.last %},{% endif %}{% endfor %}] 'LOCATION': [{% for host in groups['memcached'] %}'{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}'{% if not loop.last %},{% endif %}{% endfor %}]
} }
} }
{% endif %} {% endif %}

View File

@ -36,7 +36,7 @@ reporting-disabled = true
store-interval = "10s" store-interval = "10s"
[http] [http]
enabled = true enabled = true
bind-address = "{{ api_interface_address }}:{{ influxdb_http_port }}" bind-address = "{{ api_interface_address | put_address_in_context('url') }}:{{ influxdb_http_port }}"
auth-enabled = false auth-enabled = false
log-enabled = true log-enabled = true
write-tracing = false write-tracing = false

View File

@ -81,11 +81,11 @@ ironic_services:
#################### ####################
ironic_database_name: "ironic" ironic_database_name: "ironic"
ironic_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}ironic{% endif %}" ironic_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}ironic{% endif %}"
ironic_database_address: "{{ database_address }}:{{ database_port }}" ironic_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
ironic_inspector_database_name: "ironic_inspector" ironic_inspector_database_name: "ironic_inspector"
ironic_inspector_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}ironic_inspector{% endif %}" ironic_inspector_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}ironic_inspector{% endif %}"
ironic_inspector_database_address: "{{ database_address }}:{{ database_port }}" ironic_inspector_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
#################### ####################
@ -173,13 +173,13 @@ ironic_dnsmasq_extra_volumes: "{{ ironic_extra_volumes }}"
#################### ####################
ironic_inspector_keystone_user: "ironic-inspector" ironic_inspector_keystone_user: "ironic-inspector"
ironic_admin_endpoint: "{{ admin_protocol }}://{{ ironic_internal_fqdn }}:{{ ironic_api_port }}" ironic_admin_endpoint: "{{ admin_protocol }}://{{ ironic_internal_fqdn | put_address_in_context('url') }}:{{ ironic_api_port }}"
ironic_internal_endpoint: "{{ internal_protocol }}://{{ ironic_internal_fqdn }}:{{ ironic_api_port }}" ironic_internal_endpoint: "{{ internal_protocol }}://{{ ironic_internal_fqdn | put_address_in_context('url') }}:{{ ironic_api_port }}"
ironic_public_endpoint: "{{ public_protocol }}://{{ ironic_external_fqdn }}:{{ ironic_api_port }}" ironic_public_endpoint: "{{ public_protocol }}://{{ ironic_external_fqdn | put_address_in_context('url') }}:{{ ironic_api_port }}"
ironic_inspector_admin_endpoint: "{{ admin_protocol }}://{{ ironic_inspector_internal_fqdn }}:{{ ironic_inspector_port }}" ironic_inspector_admin_endpoint: "{{ admin_protocol }}://{{ ironic_inspector_internal_fqdn | put_address_in_context('url') }}:{{ ironic_inspector_port }}"
ironic_inspector_internal_endpoint: "{{ internal_protocol }}://{{ ironic_inspector_internal_fqdn }}:{{ ironic_inspector_port }}" ironic_inspector_internal_endpoint: "{{ internal_protocol }}://{{ ironic_inspector_internal_fqdn | put_address_in_context('url') }}:{{ ironic_inspector_port }}"
ironic_inspector_public_endpoint: "{{ public_protocol }}://{{ ironic_inspector_external_fqdn }}:{{ ironic_inspector_port }}" ironic_inspector_public_endpoint: "{{ public_protocol }}://{{ ironic_inspector_external_fqdn | put_address_in_context('url') }}:{{ ironic_inspector_port }}"
ironic_logging_debug: "{{ openstack_logging_debug }}" ironic_logging_debug: "{{ openstack_logging_debug }}"
@ -197,7 +197,7 @@ ironic_dnsmasq_default_gateway:
ironic_dnsmasq_boot_file: "{% if enable_ironic_ipxe | bool %}undionly.kpxe{% else %}pxelinux.0{% endif %}" ironic_dnsmasq_boot_file: "{% if enable_ironic_ipxe | bool %}undionly.kpxe{% else %}pxelinux.0{% endif %}"
ironic_cleaning_network: ironic_cleaning_network:
ironic_console_serial_speed: "115200n8" ironic_console_serial_speed: "115200n8"
ironic_ipxe_url: http://{{ api_interface_address }}:{{ ironic_ipxe_port }} ironic_ipxe_url: http://{{ api_interface_address | put_address_in_context('url') }}:{{ ironic_ipxe_port }}
ironic_enable_rolling_upgrade: "yes" ironic_enable_rolling_upgrade: "yes"
ironic_inspector_kernel_cmdline_extras: [] ironic_inspector_kernel_cmdline_extras: []
ironic_inspector_pxe_filter: "{% if enable_neutron | bool %}dnsmasq{% else %}none{% endif %}" ironic_inspector_pxe_filter: "{% if enable_neutron | bool %}dnsmasq{% else %}none{% endif %}"

View File

@ -13,6 +13,6 @@ chain pxelinux.cfg/${mac:hexhyp} || goto inspector_ipa
:inspector_ipa :inspector_ipa
:retry_boot :retry_boot
imgfree imgfree
kernel --timeout 30000 {{ ironic_ipxe_url }}/ironic-agent.kernel ipa-inspection-callback-url=http://{{ ironic_inspector_internal_fqdn }}:{{ ironic_inspector_port }}/v1/continue systemd.journald.forward_to_console=yes BOOTIF=${mac} initrd=ironic-agent.initramfs {{ ironic_inspector_kernel_cmdline_extras | join(' ') }} || goto retry_boot kernel --timeout 30000 {{ ironic_ipxe_url }}/ironic-agent.kernel ipa-inspection-callback-url=http://{{ ironic_inspector_internal_fqdn | put_address_in_context('url') }}:{{ ironic_inspector_port }}/v1/continue systemd.journald.forward_to_console=yes BOOTIF=${mac} initrd=ironic-agent.initramfs {{ ironic_inspector_kernel_cmdline_extras | join(' ') }} || goto retry_boot
initrd --timeout 30000 {{ ironic_ipxe_url }}/ironic-agent.initramfs || goto retry_boot initrd --timeout 30000 {{ ironic_ipxe_url }}/ironic-agent.initramfs || goto retry_boot
boot boot

View File

@ -1,13 +1,22 @@
# NOTE(yoctozepto): ironic-dnsmasq is used to deliver DHCP(v6) service
# DNS service is disabled:
port=0 port=0
interface={{ ironic_dnsmasq_interface }} interface={{ ironic_dnsmasq_interface }}
bind-interfaces
dhcp-range={{ ironic_dnsmasq_dhcp_range }} dhcp-range={{ ironic_dnsmasq_dhcp_range }}
dhcp-sequential-ip
{% if api_address_family == 'ipv6' %}
{# TODO(yoctozepto): IPv6-only support - DHCPv6 PXE support #}
{# different options must be used here #}
{% else %}{# ipv4 #}
{% if ironic_dnsmasq_default_gateway is not none %} {% if ironic_dnsmasq_default_gateway is not none %}
dhcp-option=3,{{ ironic_dnsmasq_default_gateway }} dhcp-option=3,{{ ironic_dnsmasq_default_gateway }}
{% endif %} {% endif %}
dhcp-option=option:tftp-server,{{ api_interface_address }} dhcp-option=option:tftp-server,{{ api_interface_address }}
dhcp-option=option:server-ip-address,{{ api_interface_address }} dhcp-option=option:server-ip-address,{{ api_interface_address }}
bind-interfaces
dhcp-sequential-ip
dhcp-option=210,/tftpboot/ dhcp-option=210,/tftpboot/
{% if enable_ironic_ipxe | bool %} {% if enable_ironic_ipxe | bool %}
dhcp-match=ipxe,175 dhcp-match=ipxe,175
@ -20,6 +29,8 @@ dhcp-option=tag:ipxe,option:bootfile-name,{{ ironic_ipxe_url }}/inspector.ipxe
dhcp-option=tag:efi,tag:!ipxe,option:bootfile-name,ipxe.efi dhcp-option=tag:efi,tag:!ipxe,option:bootfile-name,ipxe.efi
{% endif %} {% endif %}
dhcp-option=option:bootfile-name,{{ ironic_dnsmasq_boot_file }} dhcp-option=option:bootfile-name,{{ ironic_dnsmasq_boot_file }}
{% endif %}{# ipv6/ipv4 #}
{% if ironic_inspector_pxe_filter == 'dnsmasq' %} {% if ironic_inspector_pxe_filter == 'dnsmasq' %}
dhcp-hostsdir=/etc/dnsmasq/dhcp-hostsdir dhcp-hostsdir=/etc/dnsmasq/dhcp-hostsdir
{% endif %} {% endif %}

View File

@ -40,7 +40,7 @@ password = {{ ironic_inspector_keystone_password }}
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
{% endif %} {% endif %}
{% if ironic_policy_file is defined %} {% if ironic_policy_file is defined %}

View File

@ -1,4 +1,4 @@
Listen {{ api_interface_address }}:{{ ironic_ipxe_port }} Listen {{ api_interface_address | put_address_in_context('url') }}:{{ ironic_ipxe_port }}
TraceEnable off TraceEnable off

View File

@ -66,7 +66,7 @@ valid_interfaces = internal
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
{% endif %} {% endif %}
{% if enable_cinder | bool %} {% if enable_cinder | bool %}
@ -151,7 +151,7 @@ region_name = {{ openstack_region_name }}
valid_interfaces = internal valid_interfaces = internal
{% else %} {% else %}
auth_type = none auth_type = none
endpoint_override = {{ internal_protocol }}://{{ ironic_internal_fqdn }}:{{ ironic_api_port }} endpoint_override = {{ internal_protocol }}://{{ ironic_internal_fqdn | put_address_in_context('url') }}:{{ ironic_api_port }}
{% endif %} {% endif %}
[agent] [agent]

View File

@ -2,6 +2,6 @@ default introspect
label introspect label introspect
kernel ironic-agent.kernel kernel ironic-agent.kernel
append initrd=ironic-agent.initramfs ipa-inspection-callback-url=http://{{ ironic_inspector_internal_fqdn }}:{{ ironic_inspector_port }}/v1/continue systemd.journald.forward_to_console=yes {{ ironic_inspector_kernel_cmdline_extras | join(' ') }} append initrd=ironic-agent.initramfs ipa-inspection-callback-url=http://{{ ironic_inspector_internal_fqdn | put_address_in_context('url') }}:{{ ironic_inspector_port }}/v1/continue systemd.journald.forward_to_console=yes {{ ironic_inspector_kernel_cmdline_extras | join(' ') }}
ipappend 3 ipappend 3

View File

@ -1,4 +1,4 @@
{ {
"command": "tgtd -d 1 -f --iscsi portal={{ api_interface_address }}:{{ iscsi_port }}", "command": "tgtd -d 1 -f --iscsi portal={{ api_interface_address | put_address_in_context('url') }}:{{ iscsi_port }}",
"config_files": [] "config_files": []
} }

View File

@ -19,7 +19,7 @@ kafka_services:
kafka_cluster_name: "kolla_kafka" kafka_cluster_name: "kolla_kafka"
kafka_log_dir: "/var/log/kolla/kafka" kafka_log_dir: "/var/log/kolla/kafka"
kafka_heap_opts: "-Xmx1G -Xms1G" kafka_heap_opts: "-Xmx1G -Xms1G"
kafka_zookeeper: "{% for host in groups['zookeeper'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ zookeeper_client_port }}{% if not loop.last %},{% endif %}{% endfor %}" kafka_zookeeper: "{% for host in groups['zookeeper'] %}{{ 'api' | kolla_address(host) | put_address_in_context('url') }}:{{ zookeeper_client_port }}{% if not loop.last %},{% endif %}{% endfor %}"
kafka_broker_count: "{{ groups['kafka'] | length }}" kafka_broker_count: "{{ groups['kafka'] | length }}"
#################### ####################

View File

@ -1,4 +1,4 @@
listeners=PLAINTEXT://{{ api_interface_address }}:{{ kafka_port }} listeners=PLAINTEXT://{{ api_interface_address | put_address_in_context('url') }}:{{ kafka_port }}
controlled.shutdown.enable=true controlled.shutdown.enable=true
auto.leader.rebalance.enable=true auto.leader.rebalance.enable=true
num.network.threads=3 num.network.threads=3

View File

@ -41,7 +41,7 @@ karbor_services:
#################### ####################
karbor_database_name: "karbor" karbor_database_name: "karbor"
karbor_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}karbor{% endif %}" karbor_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}karbor{% endif %}"
karbor_database_address: "{{ database_address }}:{{ database_port }}" karbor_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
#################### ####################
@ -87,9 +87,9 @@ karbor_api_extra_volumes: "{{ karbor_extra_volumes }}"
#################### ####################
# OpenStack # OpenStack
#################### ####################
karbor_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ karbor_api_port }}/v1/%(project_id)s" karbor_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ karbor_api_port }}/v1/%(project_id)s"
karbor_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ karbor_api_port }}/v1/%(project_id)s" karbor_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ karbor_api_port }}/v1/%(project_id)s"
karbor_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn }}:{{ karbor_api_port }}/v1/%(project_id)s" karbor_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ karbor_api_port }}/v1/%(project_id)s"
karbor_logging_debug: "{{ openstack_logging_debug }}" karbor_logging_debug: "{{ openstack_logging_debug }}"

View File

@ -42,7 +42,7 @@ password = {{ karbor_keystone_password }}
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
[oslo_messaging_notifications] [oslo_messaging_notifications]
transport_url = {{ notify_transport_url }} transport_url = {{ notify_transport_url }}

View File

@ -57,7 +57,7 @@ keystone_services:
#################### ####################
keystone_database_name: "keystone" keystone_database_name: "keystone"
keystone_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}keystone{% endif %}" keystone_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}keystone{% endif %}"
keystone_database_address: "{{ database_address }}:{{ database_port }}" keystone_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
#################### ####################

View File

@ -11,6 +11,6 @@ fi
# For each host node sync tokens # For each host node sync tokens
{% for host in groups['keystone'] %} {% for host in groups['keystone'] %}
{% if inventory_hostname != host %} {% if inventory_hostname != host %}
/usr/bin/rsync -azu --delete -e 'ssh -i /var/lib/keystone/.ssh/id_rsa -p {{ hostvars[host]['keystone_ssh_port'] }} -F /var/lib/keystone/.ssh/config' keystone@{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:/etc/keystone/fernet-keys/ /etc/keystone/fernet-keys /usr/bin/rsync -azu --delete -e 'ssh -i /var/lib/keystone/.ssh/id_rsa -p {{ hostvars[host]['keystone_ssh_port'] }} -F /var/lib/keystone/.ssh/config' keystone@{{ 'api' | kolla_address(host) | put_address_in_context('url') }}:/etc/keystone/fernet-keys/ /etc/keystone/fernet-keys
{% endif %} {% endif %}
{% endfor %} {% endfor %}

View File

@ -2,6 +2,6 @@
{% for host in groups['keystone'] %} {% for host in groups['keystone'] %}
{% if inventory_hostname != host %} {% if inventory_hostname != host %}
/usr/bin/rsync -az -e 'ssh -i /var/lib/keystone/.ssh/id_rsa -p {{ hostvars[host]['keystone_ssh_port'] }} -F /var/lib/keystone/.ssh/config' --delete /etc/keystone/fernet-keys/ keystone@{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:/etc/keystone/fernet-keys /usr/bin/rsync -az -e 'ssh -i /var/lib/keystone/.ssh/id_rsa -p {{ hostvars[host]['keystone_ssh_port'] }} -F /var/lib/keystone/.ssh/config' --delete /etc/keystone/fernet-keys/ keystone@{{ 'api' | kolla_address(host) | put_address_in_context('url') }}:/etc/keystone/fernet-keys
{% endif %} {% endif %}
{% endfor %} {% endfor %}

View File

@ -46,7 +46,7 @@ max_active_keys = {{ ((fernet_token_expiry | int +
[cache] [cache]
backend = oslo_cache.memcache_pool backend = oslo_cache.memcache_pool
enabled = True enabled = True
memcache_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcache_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
[oslo_messaging_notifications] [oslo_messaging_notifications]
transport_url = {{ notify_transport_url }} transport_url = {{ notify_transport_url }}
@ -68,5 +68,5 @@ connection_string = {{ osprofiler_backend_connection_string }}
{% if enable_grafana | bool %} {% if enable_grafana | bool %}
[cors] [cors]
allowed_origin = {{ public_protocol }}://{{ kolla_external_fqdn }}:{{ grafana_server_port }} allowed_origin = {{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ grafana_server_port }}
{% endif %} {% endif %}

View File

@ -5,8 +5,8 @@
{% set python_path = '/var/lib/kolla/venv/lib/python' + distro_python_version + '/site-packages' %} {% set python_path = '/var/lib/kolla/venv/lib/python' + distro_python_version + '/site-packages' %}
{% endif %} {% endif %}
{% set binary_path = '/usr/bin' if keystone_install_type == 'binary' else '/var/lib/kolla/venv/bin' %} {% set binary_path = '/usr/bin' if keystone_install_type == 'binary' else '/var/lib/kolla/venv/bin' %}
Listen {{ api_interface_address }}:{{ keystone_public_listen_port }} Listen {{ api_interface_address | put_address_in_context('url') }}:{{ keystone_public_listen_port }}
Listen {{ api_interface_address }}:{{ keystone_admin_listen_port }} Listen {{ api_interface_address | put_address_in_context('url') }}:{{ keystone_admin_listen_port }}
ServerSignature Off ServerSignature Off
ServerTokens Prod ServerTokens Prod

View File

@ -7,7 +7,7 @@
- name: Register the kibana index in elasticsearch - name: Register the kibana index in elasticsearch
uri: uri:
url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ elasticsearch_port }}/.kibana" url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ elasticsearch_port }}/.kibana"
method: PUT method: PUT
body: "{{ kibana_default_index_options | to_json }}" body: "{{ kibana_default_index_options | to_json }}"
body_format: json body_format: json
@ -22,7 +22,7 @@
- name: Wait for kibana to register in elasticsearch - name: Wait for kibana to register in elasticsearch
uri: uri:
url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ elasticsearch_port }}/.kibana" url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ elasticsearch_port }}/.kibana"
status_code: 200 status_code: 200
register: result register: result
until: result.status == 200 until: result.status == 200
@ -32,7 +32,7 @@
- name: Change kibana config to set index as defaultIndex - name: Change kibana config to set index as defaultIndex
uri: uri:
url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ elasticsearch_port }}/.kibana/config/*" url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ elasticsearch_port }}/.kibana/config/*"
method: PUT method: PUT
body: body:
defaultIndex: "{{ kibana_default_index_pattern }}" defaultIndex: "{{ kibana_default_index_pattern }}"
@ -44,7 +44,7 @@
uri: uri:
headers: headers:
Content-Type: application/json Content-Type: application/json
url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ elasticsearch_port }}/.kibana" url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ elasticsearch_port }}/.kibana"
method: GET method: GET
register: kibana_default_indexes register: kibana_default_indexes
run_once: true run_once: true
@ -60,7 +60,7 @@
- name: Add index pattern to kibana - name: Add index pattern to kibana
uri: uri:
url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ elasticsearch_port }}/.kibana/index-pattern/{{ kibana_default_index_pattern }}" url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ elasticsearch_port }}/.kibana/index-pattern/{{ kibana_default_index_pattern }}"
method: PUT method: PUT
body: "{{ kibana_default_index | to_json }}" body: "{{ kibana_default_index | to_json }}"
body_format: json body_format: json

View File

@ -2,7 +2,7 @@ kibana.defaultAppId: "{{ kibana_default_app_id }}"
logging.dest: /var/log/kolla/kibana/kibana.log logging.dest: /var/log/kolla/kibana/kibana.log
server.port: {{ kibana_server_port }} server.port: {{ kibana_server_port }}
server.host: "{{ api_interface_address }}" server.host: "{{ api_interface_address }}"
elasticsearch.url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ elasticsearch_port }}" elasticsearch.url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ elasticsearch_port }}"
elasticsearch.requestTimeout: {{ kibana_elasticsearch_request_timeout }} elasticsearch.requestTimeout: {{ kibana_elasticsearch_request_timeout }}
elasticsearch.shardTimeout: {{ kibana_elasticsearch_shard_timeout }} elasticsearch.shardTimeout: {{ kibana_elasticsearch_shard_timeout }}
elasticsearch.ssl.verificationMode: "{{ 'full' if kibana_elasticsearch_ssl_verify | bool else 'none' }}" elasticsearch.ssl.verificationMode: "{{ 'full' if kibana_elasticsearch_ssl_verify | bool else 'none' }}"

View File

@ -1,5 +1,5 @@
[DEFAULT] [DEFAULT]
kuryr_uri = {{ internal_protocol }}://{{ api_interface_address }}:{{ kuryr_port }} kuryr_uri = {{ internal_protocol }}://{{ api_interface_address | put_address_in_context('url') }}:{{ kuryr_port }}
debug = {{ kuryr_logging_debug }} debug = {{ kuryr_logging_debug }}
log_dir = /var/log/kolla/kuryr log_dir = /var/log/kolla/kuryr

View File

@ -1 +1 @@
http://{{ api_interface_address }}:{{ kuryr_port }} http://{{ api_interface_address | put_address_in_context('url') }}:{{ kuryr_port }}

View File

@ -37,7 +37,7 @@ magnum_services:
#################### ####################
magnum_database_name: "magnum" magnum_database_name: "magnum"
magnum_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}magnum{% endif %}" magnum_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}magnum{% endif %}"
magnum_database_address: "{{ database_address }}:{{ database_port }}" magnum_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
#################### ####################
@ -85,9 +85,9 @@ magnum_conductor_extra_volumes: "{{ magnum_extra_volumes }}"
#################### ####################
# OpenStack # OpenStack
#################### ####################
magnum_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ magnum_api_port }}/v1" magnum_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ magnum_api_port }}/v1"
magnum_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ magnum_api_port }}/v1" magnum_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ magnum_api_port }}/v1"
magnum_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn }}:{{ magnum_api_port }}/v1" magnum_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ magnum_api_port }}/v1"
magnum_logging_debug: "{{ openstack_logging_debug }}" magnum_logging_debug: "{{ openstack_logging_debug }}"

View File

@ -68,7 +68,7 @@ password = {{ magnum_keystone_password }}
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
[trust] [trust]
trustee_domain_admin_password = {{ magnum_keystone_password }} trustee_domain_admin_password = {{ magnum_keystone_password }}

View File

@ -65,7 +65,7 @@ ceph_client_manila_keyring_caps:
##################### #####################
manila_database_name: "manila" manila_database_name: "manila"
manila_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}manila{% endif %}" manila_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}manila{% endif %}"
manila_database_address: "{{ database_address }}:{{ database_port }}" manila_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
##################### #####################
@ -129,12 +129,12 @@ manila_data_extra_volumes: "{{ manila_extra_volumes }}"
##################### #####################
## OpenStack ## OpenStack
##################### #####################
manila_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ manila_api_port }}/v1/%(tenant_id)s" manila_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ manila_api_port }}/v1/%(tenant_id)s"
manila_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ manila_api_port }}/v1/%(tenant_id)s" manila_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ manila_api_port }}/v1/%(tenant_id)s"
manila_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn }}:{{ manila_api_port }}/v1/%(tenant_id)s" manila_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ manila_api_port }}/v1/%(tenant_id)s"
manila_v2_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ manila_api_port }}/v2/%(tenant_id)s" manila_v2_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ manila_api_port }}/v2/%(tenant_id)s"
manila_v2_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ manila_api_port }}/v2/%(tenant_id)s" manila_v2_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ manila_api_port }}/v2/%(tenant_id)s"
manila_v2_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn }}:{{ manila_api_port }}/v2/%(tenant_id)s" manila_v2_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ manila_api_port }}/v2/%(tenant_id)s"
manila_logging_debug: "{{ openstack_logging_debug }}" manila_logging_debug: "{{ openstack_logging_debug }}"

View File

@ -19,7 +19,7 @@ password = {{ cinder_keystone_password }}
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
[nova] [nova]
auth_uri = {{ keystone_internal_url }} auth_uri = {{ keystone_internal_url }}
@ -35,10 +35,10 @@ password = {{ nova_keystone_password }}
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
[neutron] [neutron]
url = {{ internal_protocol }}://{{ neutron_internal_fqdn }}:{{ neutron_server_port }} url = {{ internal_protocol }}://{{ neutron_internal_fqdn | put_address_in_context('url') }}:{{ neutron_server_port }}
auth_uri = {{ keystone_internal_url }} auth_uri = {{ keystone_internal_url }}
auth_url = {{ keystone_admin_url }} auth_url = {{ keystone_admin_url }}
auth_type = password auth_type = password
@ -52,7 +52,7 @@ password = {{ neutron_keystone_password }}
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
{% if enable_manila_backend_generic | bool %} {% if enable_manila_backend_generic | bool %}
[generic] [generic]

View File

@ -40,7 +40,7 @@ password = {{ manila_keystone_password }}
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
[oslo_messaging_notifications] [oslo_messaging_notifications]
transport_url = {{ notify_transport_url }} transport_url = {{ notify_transport_url }}

View File

@ -45,7 +45,7 @@ database_max_timeout: 120
#################### ####################
# HAProxy # HAProxy
#################### ####################
internal_haproxy_members: "{% for host in groups['mariadb'] %}server {{ hostvars[host]['ansible_hostname'] }} {{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ mariadb_port }} check inter 2000 rise 2 fall 5{% if not loop.first %} backup{% endif %};{% endfor %}" internal_haproxy_members: "{% for host in groups['mariadb'] %}server {{ hostvars[host]['ansible_hostname'] }} {{ 'api' | kolla_address(host) }}:{{ mariadb_port }} check inter 2000 rise 2 fall 5{% if not loop.first %} backup{% endif %};{% endfor %}"
external_haproxy_members: "{% for host in groups['mariadb'] %}server {{ host }} {{ host }}:{{ mariadb_port }} check inter 2000 rise 2 fall 5{% if not loop.first %} backup{% endif %};{% endfor %}" external_haproxy_members: "{% for host in groups['mariadb'] %}server {{ host }} {{ host }}:{{ mariadb_port }} check inter 2000 rise 2 fall 5{% if not loop.first %} backup{% endif %};{% endfor %}"
#################### ####################

View File

@ -26,12 +26,12 @@ character-set-server = utf8
datadir=/var/lib/mysql/ datadir=/var/lib/mysql/
wsrep_cluster_address=gcomm://{% if (groups['mariadb'] | length) > 1 %}{% for host in groups['mariadb'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ mariadb_wsrep_port }}{% if not loop.last %},{% endif %}{% endfor %}{% endif %} wsrep_cluster_address=gcomm://{% if (groups['mariadb'] | length) > 1 %}{% for host in groups['mariadb'] %}{{ 'api' | kolla_address(host) | put_address_in_context('url') }}:{{ mariadb_wsrep_port }}{% if not loop.last %},{% endif %}{% endfor %}{% endif %}
wsrep_provider_options=gmcast.listen_addr=tcp://{{ api_interface_address }}:{{ mariadb_wsrep_port }};ist.recv_addr={{ api_interface_address }}:{{ mariadb_ist_port }} wsrep_provider_options=gmcast.listen_addr=tcp://{{ api_interface_address | put_address_in_context('url') }}:{{ mariadb_wsrep_port }};ist.recv_addr={{ api_interface_address | put_address_in_context('url') }}:{{ mariadb_ist_port }}
wsrep_node_address={{ api_interface_address }}:{{ mariadb_wsrep_port }} wsrep_node_address={{ api_interface_address | put_address_in_context('url') }}:{{ mariadb_wsrep_port }}
wsrep_sst_receive_address={{ api_interface_address }}:{{ mariadb_sst_port }} wsrep_sst_receive_address={{ api_interface_address | put_address_in_context('url') }}:{{ mariadb_sst_port }}
wsrep_provider={{ wsrep_driver }} wsrep_provider={{ wsrep_driver }}
wsrep_cluster_name="{{ database_cluster_name }}" wsrep_cluster_name="{{ database_cluster_name }}"
@ -61,3 +61,12 @@ innodb_lock_schedule_algorithm = FCFS
[server] [server]
pid-file=/var/lib/mysql/mariadb.pid pid-file=/var/lib/mysql/mariadb.pid
[sst]
{% if sst_method == 'mariabackup' and api_address_family == 'ipv6' %}
# NOTE(yoctozepto): for IPv6 we need to tweak sockopt for socat (mariabackup sst backend)
# see: https://mariadb.com/kb/en/library/xtrabackup-v2-sst-method/#performing-ssts-with-ipv6-addresses
# and: https://jira.mariadb.org/browse/MDEV-18797
# this can be removed when MDEV-18797 is resolved
sockopt=",pf=ip6"
{% endif %}

View File

@ -42,7 +42,7 @@ masakari_services:
#################### ####################
masakari_database_name: "masakari" masakari_database_name: "masakari"
masakari_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}masakari{% endif %}" masakari_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}masakari{% endif %}"
masakari_database_address: "{{ database_address }}:{{ database_port }}" masakari_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
#################### ####################
# Docker # Docker
@ -92,9 +92,9 @@ masakari_instancemonitor_default_volumes:
#################### ####################
# OpenStack # OpenStack
#################### ####################
masakari_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ masakari_api_port }}" masakari_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ masakari_api_port }}"
masakari_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ masakari_api_port }}" masakari_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ masakari_api_port }}"
masakari_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn }}:{{ masakari_api_port }}" masakari_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ masakari_api_port }}"
masakari_logging_debug: "{{ openstack_logging_debug }}" masakari_logging_debug: "{{ openstack_logging_debug }}"

View File

@ -12,4 +12,4 @@ username = {{ masakari_keystone_user }}
password = {{ masakari_keystone_password }} password = {{ masakari_keystone_password }}
[libvirt] [libvirt]
connection_uri = "qemu+tcp://{{ migration_interface_address }}/system" connection_uri = "qemu+tcp://{{ migration_interface_address | put_address_in_context('url') }}/system"

View File

@ -32,7 +32,7 @@ region_name = {{ openstack_region_name }}
{% if enable_memcached | bool %} {% if enable_memcached | bool %}
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
{% endif %} {% endif %}
[oslo_messaging_notifications] [oslo_messaging_notifications]

View File

@ -5,7 +5,7 @@
{% endif %} {% endif %}
{% set binary_path = '/usr/bin' if masakari_install_type == 'binary' else '/var/lib/kolla/venv/bin' %} {% set binary_path = '/usr/bin' if masakari_install_type == 'binary' else '/var/lib/kolla/venv/bin' %}
Listen {{ api_interface_address }}:{{ masakari_api_port }} Listen {{ api_interface_address | put_address_in_context('url') }}:{{ masakari_api_port }}
ServerSignature Off ServerSignature Off
ServerTokens Prod ServerTokens Prod

View File

@ -25,7 +25,7 @@ memcached_services:
#################### ####################
# HAProxy # HAProxy
#################### ####################
haproxy_members: "{% for host in groups['memcached'] %}server {{ hostvars[host]['ansible_hostname'] }} {{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }} check inter 2000 rise 2 fall 5{% if not loop.first %} backup{% endif %};{% endfor %}" haproxy_members: "{% for host in groups['memcached'] %}server {{ hostvars[host]['ansible_hostname'] }} {{ 'api' | kolla_address(host) }}:{{ memcached_port }} check inter 2000 rise 2 fall 5{% if not loop.first %} backup{% endif %};{% endfor %}"
#################### ####################
# Docker # Docker

View File

@ -48,7 +48,7 @@ mistral_services:
#################### ####################
mistral_database_name: "mistral" mistral_database_name: "mistral"
mistral_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}mistral{% endif %}" mistral_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}mistral{% endif %}"
mistral_database_address: "{{ database_address }}:{{ database_port }}" mistral_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
#################### ####################
@ -108,9 +108,9 @@ mistral_api_extra_volumes: "{{ mistral_extra_volumes }}"
#################### ####################
# OpenStack # OpenStack
#################### ####################
mistral_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ mistral_api_port }}/v2" mistral_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ mistral_api_port }}/v2"
mistral_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ mistral_api_port }}/v2" mistral_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ mistral_api_port }}/v2"
mistral_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn }}:{{ mistral_api_port }}/v2" mistral_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ mistral_api_port }}/v2"
mistral_logging_debug: "{{ openstack_logging_debug }}" mistral_logging_debug: "{{ openstack_logging_debug }}"

View File

@ -48,11 +48,11 @@ password = {{ mistral_keystone_password }}
memcache_security_strategy = ENCRYPT memcache_security_strategy = ENCRYPT
memcache_secret_key = {{ memcache_secret_key }} memcache_secret_key = {{ memcache_secret_key }}
memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
[mistral] [mistral]
url = {{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ mistral_api_port }} url = {{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ mistral_api_port }}
[openstack_actions] [openstack_actions]
os_actions_endpoint_type = internal os_actions_endpoint_type = internal

View File

@ -141,11 +141,11 @@ monasca_influxdb_retention_policy:
#################### ####################
# Monasca # Monasca
#################### ####################
monasca_kafka_servers: "{% for host in groups['kafka'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ kafka_port }}{% if not loop.last %},{% endif %}{% endfor %}" monasca_kafka_servers: "{% for host in groups['kafka'] %}{{ 'api' | kolla_address(host) | put_address_in_context('url') }}:{{ kafka_port }}{% if not loop.last %},{% endif %}{% endfor %}"
monasca_zookeeper_servers: "{% for host in groups['zookeeper'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ zookeeper_client_port }}{% if not loop.last %},{% endif %}{% endfor %}" monasca_zookeeper_servers: "{% for host in groups['zookeeper'] %}{{ 'api' | kolla_address(host) | put_address_in_context('url') }}:{{ zookeeper_client_port }}{% if not loop.last %},{% endif %}{% endfor %}"
monasca_memcached_servers: "{% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}" monasca_memcached_servers: "{% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}"
monasca_elasticsearch_servers: "{% for host in groups['elasticsearch'] %}'{{ internal_protocol }}://{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ elasticsearch_port }}'{% if not loop.last %},{% endif %}{% endfor %}" monasca_elasticsearch_servers: "{% for host in groups['elasticsearch'] %}'{{ internal_protocol }}://{{ 'api' | kolla_address(host) | put_address_in_context('url') }}:{{ elasticsearch_port }}'{% if not loop.last %},{% endif %}{% endfor %}"
monasca_storm_nimbus_servers: "{% for host in groups['storm-nimbus'] %}'{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}'{% if not loop.last %},{% endif %}{% endfor %}" monasca_storm_nimbus_servers: "{% for host in groups['storm-nimbus'] %}'{{ 'api' | kolla_address(host) }}'{% if not loop.last %},{% endif %}{% endfor %}"
# NOTE(dszumski): Only one NTP server is currently supported by the Monasca Agent plugin # NOTE(dszumski): Only one NTP server is currently supported by the Monasca Agent plugin
monasca_ntp_server: "{{ external_ntp_servers | first }}" monasca_ntp_server: "{{ external_ntp_servers | first }}"
@ -189,7 +189,7 @@ monasca_grafana_data_sources:
name: "Monasca API" name: "Monasca API"
type: "monasca-datasource" type: "monasca-datasource"
access: "proxy" access: "proxy"
url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ monasca_api_port }}" url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ monasca_api_port }}"
isDefault: True isDefault: True
basicAuth: false basicAuth: false
jsonData: jsonData:
@ -329,13 +329,13 @@ monasca_agent_authorized_roles:
monasca_delegate_authorized_roles: monasca_delegate_authorized_roles:
- admin - admin
monasca_api_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ monasca_api_port }}/v2.0" monasca_api_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ monasca_api_port }}/v2.0"
monasca_api_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ monasca_api_port }}/v2.0" monasca_api_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ monasca_api_port }}/v2.0"
monasca_api_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn }}:{{ monasca_api_port }}/v2.0" monasca_api_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ monasca_api_port }}/v2.0"
monasca_log_api_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ monasca_log_api_port }}" monasca_log_api_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ monasca_log_api_port }}"
monasca_log_api_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ monasca_log_api_port }}" monasca_log_api_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ monasca_log_api_port }}"
monasca_log_api_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn }}:{{ monasca_log_api_port }}" monasca_log_api_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ monasca_log_api_port }}"
monasca_logging_debug: "{{ openstack_logging_debug }}" monasca_logging_debug: "{{ openstack_logging_debug }}"

View File

@ -1,7 +1,7 @@
--- ---
- name: Wait for Monasca Grafana to load - name: Wait for Monasca Grafana to load
uri: uri:
url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ monasca_grafana_server_port }}/login" url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ monasca_grafana_server_port }}/login"
status_code: 200 status_code: 200
register: result register: result
until: result.get('status') == 200 until: result.get('status') == 200
@ -16,7 +16,7 @@
- name: List Monasca Grafana organisations - name: List Monasca Grafana organisations
uri: uri:
method: GET method: GET
url: '{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ monasca_grafana_server_port }}/api/orgs' url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ monasca_grafana_server_port }}/api/orgs"
user: '{{ monasca_grafana_admin_username }}' user: '{{ monasca_grafana_admin_username }}'
password: '{{ monasca_grafana_admin_password }}' password: '{{ monasca_grafana_admin_password }}'
return_content: true return_content: true
@ -27,7 +27,7 @@
- name: Create default control plane organisation if it doesn't exist - name: Create default control plane organisation if it doesn't exist
uri: uri:
method: POST method: POST
url: '{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ monasca_grafana_server_port }}/api/orgs' url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ monasca_grafana_server_port }}/api/orgs"
user: '{{ monasca_grafana_admin_username }}' user: '{{ monasca_grafana_admin_username }}'
password: '{{ monasca_grafana_admin_password }}' password: '{{ monasca_grafana_admin_password }}'
body_format: json body_format: json
@ -40,7 +40,7 @@
- name: Lookup Monasca Grafana control plane organisation ID - name: Lookup Monasca Grafana control plane organisation ID
uri: uri:
method: GET method: GET
url: '{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ monasca_grafana_server_port }}/api/orgs/name/{{ monasca_grafana_control_plane_org }}' url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ monasca_grafana_server_port }}/api/orgs/name/{{ monasca_grafana_control_plane_org }}"
user: '{{ monasca_grafana_admin_username }}' user: '{{ monasca_grafana_admin_username }}'
password: '{{ monasca_grafana_admin_password }}' password: '{{ monasca_grafana_admin_password }}'
return_content: true return_content: true
@ -51,7 +51,7 @@
- name: Add {{ monasca_grafana_admin_username }} user to control plane organisation - name: Add {{ monasca_grafana_admin_username }} user to control plane organisation
uri: uri:
method: POST method: POST
url: '{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ monasca_grafana_server_port }}/api/orgs/{{ monasca_grafana_conf_org.json.id }}/users' url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ monasca_grafana_server_port }}/api/orgs/{{ monasca_grafana_conf_org.json.id }}/users"
user: '{{ monasca_grafana_admin_username }}' user: '{{ monasca_grafana_admin_username }}'
password: '{{ monasca_grafana_admin_password }}' password: '{{ monasca_grafana_admin_password }}'
body: body:
@ -69,7 +69,7 @@
- name: Switch Monasca Grafana to the control plane organisation - name: Switch Monasca Grafana to the control plane organisation
uri: uri:
method: POST method: POST
url: '{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ monasca_grafana_server_port }}/api/user/using/{{ monasca_grafana_conf_org.json.id }}' url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ monasca_grafana_server_port }}/api/user/using/{{ monasca_grafana_conf_org.json.id }}"
user: '{{ monasca_grafana_admin_username }}' user: '{{ monasca_grafana_admin_username }}'
password: '{{ monasca_grafana_admin_password }}' password: '{{ monasca_grafana_admin_password }}'
force_basic_auth: true force_basic_auth: true
@ -77,7 +77,7 @@
- name: Enable Monasca Grafana datasource for control plane organisation - name: Enable Monasca Grafana datasource for control plane organisation
uri: uri:
url: "{{ internal_protocol }}://{{ kolla_internal_vip_address }}:{{ monasca_grafana_server_port }}/api/datasources" url: "{{ internal_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ monasca_grafana_server_port }}/api/datasources"
method: POST method: POST
user: "{{ monasca_grafana_admin_username }}" user: "{{ monasca_grafana_admin_username }}"
password: "{{ monasca_grafana_admin_password }}" password: "{{ monasca_grafana_admin_password }}"

View File

@ -6,7 +6,7 @@ region = {{ openstack_region_name }}
[database] [database]
database = {{ monasca_database_name }} database = {{ monasca_database_name }}
connection = mysql+pymysql://{{ monasca_database_user }}:{{ monasca_database_password }}@{{ monasca_database_address }}:{{ monasca_database_port }}/{{ monasca_database_name }} connection = mysql+pymysql://{{ monasca_database_user }}:{{ monasca_database_password }}@{{ monasca_database_address | put_address_in_context('url') }}:{{ monasca_database_port }}/{{ monasca_database_name }}
[influxdb] [influxdb]
database_name = {{ monasca_influxdb_name }} database_name = {{ monasca_influxdb_name }}

View File

@ -1,7 +1,7 @@
{% set python_path = '/usr/lib/python2.7/site-packages' if monasca_install_type == 'binary' else '/var/lib/kolla/venv/lib/python2.7/site-packages' %} {% set python_path = '/usr/lib/python2.7/site-packages' if monasca_install_type == 'binary' else '/var/lib/kolla/venv/lib/python2.7/site-packages' %}
{% set wsgi_path = '/usr/bin' if monasca_install_type == 'binary' else '/monasca-api/monasca_api/api' %} {% set wsgi_path = '/usr/bin' if monasca_install_type == 'binary' else '/monasca-api/monasca_api/api' %}
Listen {{ api_interface_address }}:{{ monasca_api_port }} Listen {{ api_interface_address | put_address_in_context('url') }}:{{ monasca_api_port }}
TraceEnable off TraceEnable off

Some files were not shown because too many files have changed in this diff Show More