diff --git a/ansible/group_vars/all/kolla b/ansible/group_vars/all/kolla index 7df5f0426a0626531d84d792518426b6c2c0dfca..bd2652c2cd9b444f67addd27beb362653c2db2a1 100644 --- a/ansible/group_vars/all/kolla +++ b/ansible/group_vars/all/kolla @@ -550,6 +550,27 @@ kolla_ansible_default_custom_passwords: # passwords file. kolla_ansible_custom_passwords: "{{ kolla_ansible_default_custom_passwords }}" +############################################################################### +# OpenStack API addresses. + +# Virtual IP address of OpenStack internal API. Default is the vip_address +# attribute of the internal network. +kolla_internal_vip_address: "{{ internal_net_name | net_vip_address }}" + +# Fully Qualified Domain Name (FQDN) of OpenStack internal API. Default is the +# fqdn attribute of the internal network if set, otherwise +# kolla_internal_vip_address. +kolla_internal_fqdn: "{{ internal_net_name | net_fqdn or kolla_internal_vip_address }}" + +# Virtual IP address of OpenStack external API. Default is the vip_address +# attribute of the external network. +kolla_external_vip_address: "{{ public_net_name | net_vip_address }}" + +# Fully Qualified Domain Name (FQDN) of OpenStack external API. Default is the +# fqdn attribute of the external network if set, otherwise +# kolla_external_vip_address. +kolla_external_fqdn: "{{ public_net_name | net_fqdn or kolla_external_vip_address }}" + ############################################################################### # TLS certificate bundle management diff --git a/ansible/kolla-ansible.yml b/ansible/kolla-ansible.yml index ae04fcf8c7c2f2819b8ea5ad2049219f5fd88f20..fa182b5aebbb9632b681800b8806326ff11ca6f5 100644 --- a/ansible/kolla-ansible.yml +++ b/ansible/kolla-ansible.yml @@ -27,12 +27,6 @@ tags: - kolla-ansible gather_facts: false - vars: - # We need to reference configuration for the network node. - # We pick the first host from the group for this. It is possible that at - # this point these groups have no hosts in, and we should handle that case - # gracefully. - network_host: "{{ groups['network'][0] }}" pre_tasks: # Configuration of extra user-provided Kolla globals. - block: @@ -52,46 +46,29 @@ - config # Configuration and validation of network host networking. - - block: - - name: Set facts containing the VIP addresses and FQDNs - set_fact: - kolla_internal_vip_address: "{{ internal_net_name | net_vip_address }}" - kolla_internal_fqdn: "{{ internal_net_name | net_fqdn or internal_net_name | net_vip_address }}" - kolla_external_vip_address: "{{ public_net_name | net_vip_address }}" - kolla_external_fqdn: "{{ public_net_name | net_fqdn or public_net_name | net_vip_address }}" - when: kolla_enable_haproxy | bool - - - name: Set facts containing the VIP addresses and FQDNs - set_fact: - kolla_internal_vip_address: "{{ internal_net_name | net_ip(network_host) }}" - kolla_internal_fqdn: "{{ internal_net_name | net_ip(network_host) }}" - kolla_external_vip_address: "{{ public_net_name | net_ip(network_host) }}" - kolla_external_fqdn: "{{ public_net_name | net_ip(network_host) }}" - when: not kolla_enable_haproxy | bool - - - name: Validate Kolla Ansible API address configuration - fail: - msg: > - The Kolla Ansible variable {{ item.var_name }} - ({{ item.description }}) is invalid. Value: - "{{ hostvars[inventory_hostname][item.var_name] | default('<undefined>') }}". - when: - - item.required | bool - - hostvars[inventory_hostname][item.var_name] is not defined or not hostvars[inventory_hostname][item.var_name] - with_items: - - var_name: "kolla_internal_vip_address" - description: "Internal API VIP address" - required: True - - var_name: "kolla_internal_fqdn" - description: "Internal API Fully Qualified Domain Name (FQDN)" - required: True - - var_name: "kolla_external_vip_address" - description: "external API VIP address" - required: True - - var_name: "kolla_external_fqdn" - description: "External API Fully Qualified Domain Name (FQDN)" - required: True - when: groups['network'] | length > 0 + - name: Validate Kolla Ansible API address configuration + fail: + msg: > + The Kolla Ansible variable {{ item.var_name }} + ({{ item.description }}) is invalid. Value: + "{{ hostvars[inventory_hostname][item.var_name] | default('<undefined>') }}". + when: + - groups['network'] | length > 0 + - item.required | bool + - hostvars[inventory_hostname][item.var_name] is not defined or not hostvars[inventory_hostname][item.var_name] + with_items: + - var_name: "kolla_internal_vip_address" + description: "Internal API VIP address" + required: True + - var_name: "kolla_internal_fqdn" + description: "Internal API Fully Qualified Domain Name (FQDN)" + required: True + - var_name: "kolla_external_vip_address" + description: "external API VIP address" + required: True + - var_name: "kolla_external_fqdn" + description: "External API Fully Qualified Domain Name (FQDN)" + required: True tags: - config - config-validation diff --git a/ansible/overcloud-grafana-configure.yml b/ansible/overcloud-grafana-configure.yml index 7fd18a16dbade69f71084feae00406152e291779..7ae5c902612c719170dab3be7146ef432035da6f 100644 --- a/ansible/overcloud-grafana-configure.yml +++ b/ansible/overcloud-grafana-configure.yml @@ -59,16 +59,6 @@ tags: - grafana pre_tasks: - - name: Set fact for the VIP address - set_fact: - kolla_internal_vip_address: "{{ internal_net_name | net_vip_address }}" - when: kolla_enable_haproxy | bool - - - name: Set fact for the VIP address - set_fact: - kolla_internal_vip_address: "{{ internal_net_name | net_ip }}" - when: not kolla_enable_haproxy | bool - - name: Include Kolla passwords for Grafana local admin account credentials include_vars: "{{ kayobe_config_path }}/kolla/passwords.yml" roles: diff --git a/ansible/public-openrc.yml b/ansible/public-openrc.yml index 4367773a0458197221df86fd9fd04ead4e5bd795..d81d1300bb713c93ce5e9394a554ed74ab9232bc 100644 --- a/ansible/public-openrc.yml +++ b/ansible/public-openrc.yml @@ -8,7 +8,7 @@ - public-openrc vars: public_api_proto: "{% if kolla_enable_tls_external | bool %}https{% else %}http{% endif %}" - public_api_host: "{{ public_net_name | net_fqdn or public_net_name | net_vip_address }}" + public_api_host: "{{ kolla_external_fqdn }}" public_api_keystone_port: 5000 roles: - role: public-openrc diff --git a/doc/source/configuration/reference/kolla-ansible.rst b/doc/source/configuration/reference/kolla-ansible.rst index a5d11a9338b009caa2c531f06845913e20d771ef..17251ada69e4b4e6db6974cb38963978255541bf 100644 --- a/doc/source/configuration/reference/kolla-ansible.rst +++ b/doc/source/configuration/reference/kolla-ansible.rst @@ -225,6 +225,32 @@ OpenStack services. This is not usually advisable in production. --- kolla_openstack_logging_debug: true +API Addresses +------------- + +.. note:: + + These variables should be used over the deprecated ``vip_address`` and + ``fqdn`` `network attributes <configuration-network-global>` + +The following variables affect the addresses used for the external and internal +API. + +``kolla_internal_vip_address`` + Virtual IP address of OpenStack internal API. Default is the + ``vip_address`` attribute of the internal network. +``kolla_internal_fqdn`` + Fully Qualified Domain Name (FQDN) of OpenStack internal API. Default is + the ``fqdn`` attribute of the internal network if set, otherwise + ``kolla_internal_vip_address``. +``kolla_external_vip_address`` + Virtual IP address of OpenStack external API. Default is the + ``vip_address`` attribute of the external network. +``kolla_external_fqdn`` + Fully Qualified Domain Name (FQDN) of OpenStack external API. Default is + the ``fqdn`` attribute of the external network if set, otherwise + ``kolla_external_vip_address``. + TLS Encryption of APIs ---------------------- diff --git a/doc/source/configuration/reference/network.rst b/doc/source/configuration/reference/network.rst index 426690d1b18d3e4598326619815d344ef1834cde..34532570ba11beea383cde22b8d83cb0318661db 100644 --- a/doc/source/configuration/reference/network.rst +++ b/doc/source/configuration/reference/network.rst @@ -10,6 +10,8 @@ that define the network's attributes. For example, to configure the ``cidr`` attribute of a network named ``arpanet``, we would use a variable named ``arpanet_cidr``. +.. _configuration-network-global: + Global Network Configuration ============================ @@ -42,8 +44,18 @@ supported: ``mtu`` Maximum Transmission Unit (MTU). ``vip_address`` + .. note:: + + Use of the ``vip_address`` attribute is deprecated. Instead use + ``kolla_internal_vip_address`` and ``kolla_external_vip_address``. + Virtual IP address (VIP) used by API services on this network. ``fqdn`` + .. note:: + + Use of the ``fqdn`` attribute is deprecated. Instead use + ``kolla_internal_fqdn`` and ``kolla_external_fqdn``. + Fully Qualified Domain Name (FQDN) used by API services on this network. ``routes`` List of static IP routes. Each item should be a dict containing the diff --git a/etc/kayobe/kolla.yml b/etc/kayobe/kolla.yml index f8f0a482cc946cc0f638c3b62dce7e757d815337..7e6da27def74760e181171a24b41f8bffd9a921a 100644 --- a/etc/kayobe/kolla.yml +++ b/etc/kayobe/kolla.yml @@ -345,6 +345,27 @@ # passwords file. #kolla_ansible_custom_passwords: +############################################################################### +# OpenStack API addresses. + +# Virtual IP address of OpenStack internal API. Default is the vip_address +# attribute of the internal network. +#kolla_internal_vip_address: + +# Fully Qualified Domain Name (FQDN) of OpenStack internal API. Default is the +# fqdn attribute of the internal network if set, otherwise +# kolla_internal_vip_address. +#kolla_internal_fqdn: + +# Virtual IP address of OpenStack external API. Default is the vip_address +# attribute of the external network. +#kolla_external_vip_address: + +# Fully Qualified Domain Name (FQDN) of OpenStack external API. Default is the +# fqdn attribute of the external network if set, otherwise +# kolla_external_vip_address. +#kolla_external_fqdn: + ############################################################################### # TLS certificate bundle management diff --git a/releasenotes/notes/add-vip-fqdn-variables-a6202664c2b6eb01.yaml b/releasenotes/notes/add-vip-fqdn-variables-a6202664c2b6eb01.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a172f8ab0686def703e0a4d2689d11e31ec7d81f --- /dev/null +++ b/releasenotes/notes/add-vip-fqdn-variables-a6202664c2b6eb01.yaml @@ -0,0 +1,22 @@ +--- +features: + - | + Adds the following new variables for the Kolla Ansible API VIP address and + FQDNs: + + * ``kolla_internal_vip_address`` + * ``kolla_internal_fqdn`` + * ``kolla_external_vip_address`` + * ``kolla_external_fqdn`` + + These variables should be used in preference to the ``vip_address`` and + ``fqdn`` network attributes which are deprecated. +deprecations: + - | + The ``vip_address`` and ``fqdn`` network attributes are deprecated in + favour of the following variables: + + * ``kolla_internal_vip_address`` + * ``kolla_internal_fqdn`` + * ``kolla_external_vip_address`` + * ``kolla_external_fqdn``