diff --git a/doc/source/upgrade-guide/manual-upgrade.rst b/doc/source/upgrade-guide/manual-upgrade.rst index 2f14dc4055..bda42531da 100644 --- a/doc/source/upgrade-guide/manual-upgrade.rst +++ b/doc/source/upgrade-guide/manual-upgrade.rst @@ -122,6 +122,16 @@ See :ref:`repo-server-pip-conf-removal` for more details. # openstack-ansible "${UPGRADE_PLAYBOOKS}/repo-server-pip-conf-removal.yml" +Ensure hostname aliases are created for non-RFC1034/35 hostnames +---------------------------------------------------------------- + +Ensure an alias is created for non-RFC1034/35 hostnames. + +See :ref:`old-hostname-compatibility` for details. + +.. code-block:: console + + # openstack-ansible "${UPGRADE_PLAYBOOKS}/old-hostname-compatibility.yml" Upgrade infrastructure ~~~~~~~~~~~~~~~~~~~~~~ diff --git a/doc/source/upgrade-guide/upgrade-playbooks.rst b/doc/source/upgrade-guide/upgrade-playbooks.rst index 384ad7f2b7..3ffe111bdd 100644 --- a/doc/source/upgrade-guide/upgrade-playbooks.rst +++ b/doc/source/upgrade-guide/upgrade-playbooks.rst @@ -40,6 +40,17 @@ dependency, causing build failures. .. _repo-server-pip-conf-removal: +``old-hostname-compatibility.yml`` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This playbook ensures an alias is created for old hostnames that may not be RFC +1034 or 1035 compatible. Using a hostname alias allows agents to continue working +in cases where the hostname is also the registered agent name. This playbook is +only needed for upgrades of in-place upgrades of existing nodes or if a node is replaced or +rebuilt it will be brought into the cluster using a compliant hostname. + +.. _old-hostname-compatibility: + ``setup-infrastructure.yml`` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/playbooks/inventory/group_vars/hosts.yml b/playbooks/inventory/group_vars/hosts.yml index 97e7eb2025..93a4e7a06f 100644 --- a/playbooks/inventory/group_vars/hosts.yml +++ b/playbooks/inventory/group_vars/hosts.yml @@ -89,6 +89,10 @@ apply_security_hardening: true ## Region Name service_region: RegionOne +## OpenStack Domain +openstack_domain: openstack.local +lxc_container_domain: "{{ openstack_domain }}" + ## DHCP Domain Name dhcp_domain: openstacklocal diff --git a/releasenotes/notes/RFC1034-5_hostname_upgrade-677da788600edbca.yaml b/releasenotes/notes/RFC1034-5_hostname_upgrade-677da788600edbca.yaml new file mode 100644 index 0000000000..738805ee57 --- /dev/null +++ b/releasenotes/notes/RFC1034-5_hostname_upgrade-677da788600edbca.yaml @@ -0,0 +1,5 @@ +--- +upgrade: + - A new global variable has been created named + ``openstack_domain``. This variable has a default + value of "openstack.local". diff --git a/scripts/run-upgrade.sh b/scripts/run-upgrade.sh index f705d5b0fa..e38e2f946f 100755 --- a/scripts/run-upgrade.sh +++ b/scripts/run-upgrade.sh @@ -147,6 +147,7 @@ function main { RUN_TASKS+=("setup-hosts.yml --limit '!galera_all[0]'") RUN_TASKS+=("lxc-containers-create.yml --limit galera_all[0]") RUN_TASKS+=("${UPGRADE_PLAYBOOKS}/repo-server-pip-conf-removal.yml") + RUN_TASKS+=("${UPGRADE_PLAYBOOKS}/old-hostname-compatibility.yml") RUN_TASKS+=("setup-infrastructure.yml -e 'galera_upgrade=true' -e 'rabbitmq_upgrade=true'") RUN_TASKS+=("${UPGRADE_PLAYBOOKS}/memcached-flush.yml") RUN_TASKS+=("setup-openstack.yml") diff --git a/scripts/upgrade-utilities/playbooks/old-hostname-compatibility.yml b/scripts/upgrade-utilities/playbooks/old-hostname-compatibility.yml new file mode 100644 index 0000000000..3572fc7851 --- /dev/null +++ b/scripts/upgrade-utilities/playbooks/old-hostname-compatibility.yml @@ -0,0 +1,145 @@ +--- +# Copyright 2016, Rackspace US, Inc. +# +# 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. + +- name: Set hostname alias for local lookup compatibility + hosts: all + gather_facts: true + tasks: + - name: Update Alias hostnames + lineinfile: + dest: /etc/hosts + insertafter: "^127.0.0.1" + regexp: "^127.0.1.1" + line: "127.0.1.1 {{ rfc_1034_1035_name }}.{{ domain_name }} {{ rfc_1034_1035_name }} {{ inventory_hostname }} {{ ansible_hostname }}" + state: present + register: result1 + when: + - rfc_1034_1035_name != inventory_hostname + - rfc_1034_1035_name != ansible_hostname + - name: Update Alias hostnames + lineinfile: + dest: /etc/hosts + insertafter: "^127.0.0.1" + regexp: "^127.0.1.1" + line: "127.0.1.1 {{ rfc_1034_1035_name }}.{{ domain_name }} {{ rfc_1034_1035_name }} {{ ansible_hostname }}" + state: present + register: result2 + when: + - rfc_1034_1035_name == inventory_hostname + - rfc_1034_1035_name != ansible_hostname + - name: Update Alias hostnames + lineinfile: + dest: /etc/hosts + insertafter: "^127.0.0.1" + regexp: "^127.0.1.1" + line: "127.0.1.1 {{ rfc_1034_1035_name }}.{{ domain_name }} {{ rfc_1034_1035_name }} {{ inventory_hostname }}" + state: present + when: + - result1 | skipped + - result2 | skipped + vars: + rfc_1034_1035_name: "{{ inventory_hostname | replace('_', '-') }}" + domain_name: "{{ openstack_domain|default('openstack.local') }}" + +- name: Set hostnames alias for RabbitMQ lookup compatibility + hosts: rabbitmq_all + tasks: + - name: Update hosts file from ansible inventory + lineinfile: + dest: /etc/hosts + regexp: "^{{ hostvars[item]['ansible_ssh_host'] }}" + line: "{{ hostvars[item]['ansible_ssh_host'] }} {{ rfc_1034_1035_name }}.{{ domain_name }} {{ rfc_1034_1035_name }} {{ item }}" + state: present + when: item != inventory_hostname + with_items: "{{ play_hosts }}" + vars: + rfc_1034_1035_name: "{{ item | replace('_', '-') }}" + domain_name: "{{ openstack_domain|default('openstack.local') }}" + +- name: Set hostnames alias for MariaDB lookup compatibility + hosts: galera_all + tasks: + - name: Update hosts file from ansible inventory + lineinfile: + dest: /etc/hosts + regexp: "^{{ hostvars[item]['ansible_ssh_host'] }}" + line: "{{ hostvars[item]['ansible_ssh_host'] }} {{ rfc_1034_1035_name }}.{{ domain_name }} {{ rfc_1034_1035_name }} {{ item }}" + state: present + when: item != inventory_hostname + with_items: "{{ play_hosts }}" + vars: + rfc_1034_1035_name: "{{ item | replace('_', '-') }}" + domain_name: "{{ openstack_domain|default('openstack.local') }}" + +- name: Set hostnames alias for Neutron Agent lookup compatibility + hosts: neutron_all:!nova_compute + tasks: + - name: Update hosts file from ansible inventory + lineinfile: + dest: /etc/hosts + regexp: "^{{ hostvars[item]['ansible_ssh_host'] }}" + line: "{{ hostvars[item]['ansible_ssh_host'] }} {{ rfc_1034_1035_name }}.{{ domain_name }} {{ rfc_1034_1035_name }} {{ item }}" + state: present + when: item != inventory_hostname + with_items: "{{ play_hosts }}" + vars: + rfc_1034_1035_name: "{{ item | replace('_', '-') }}" + domain_name: "{{ openstack_domain|default('openstack.local') }}" + +- name: Set hostnames alias for Cinder lookup compatibility + hosts: cinder_all + tasks: + - name: Update hosts file from ansible inventory + lineinfile: + dest: /etc/hosts + regexp: "^{{ hostvars[item]['ansible_ssh_host'] }}" + line: "{{ hostvars[item]['ansible_ssh_host'] }} {{ rfc_1034_1035_name }}.{{ domain_name }} {{ rfc_1034_1035_name }} {{ item }}" + state: present + when: item != inventory_hostname + with_items: "{{ play_hosts }}" + vars: + rfc_1034_1035_name: "{{ item | replace('_', '-') }}" + domain_name: "{{ openstack_domain|default('openstack.local') }}" + +- name: Set hostnames alias for Heat lookup compatibility + hosts: heat_all + tasks: + - name: Update hosts file from ansible inventory + lineinfile: + dest: /etc/hosts + regexp: "^{{ hostvars[item]['ansible_ssh_host'] }}" + line: "{{ hostvars[item]['ansible_ssh_host'] }} {{ rfc_1034_1035_name }}.{{ domain_name }} {{ rfc_1034_1035_name }} {{ item }}" + state: present + when: item != inventory_hostname + with_items: "{{ play_hosts }}" + vars: + rfc_1034_1035_name: "{{ item | replace('_', '-') }}" + domain_name: "{{ openstack_domain|default('openstack.local') }}" + +- name: Set hostnames alias for Nova Sevice lookup compatibility + hosts: nova_all:!nova_compute + tasks: + - name: Update hosts file from ansible inventory + lineinfile: + dest: /etc/hosts + regexp: "^{{ hostvars[item]['ansible_ssh_host'] }}" + line: "{{ hostvars[item]['ansible_ssh_host'] }} {{ rfc_1034_1035_name }}.{{ domain_name }} {{ rfc_1034_1035_name }} {{ item }}" + state: present + when: + - item != inventory_hostname + with_items: "{{ play_hosts }}" + vars: + rfc_1034_1035_name: "{{ item | replace('_', '-') }}" + domain_name: "{{ openstack_domain|default('openstack.local') }}"