tripleo-ansible/tripleo_ansible/roles/tripleo_hosts_entries/tasks/main.yml

111 lines
3.8 KiB
YAML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
# Copyright 2019 Red Hat, Inc.
# All Rights Reserved.
#
# 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: Create temporary file for hosts
become: true
tempfile:
state: file
suffix: tmphosts
register: tripleo_hosts_entries_tmp_hosts
check_mode: false
tags:
- tripleo_hosts_entries
- name: Prepare temporary /etc/hosts
become: true
copy:
remote_src: true
src: "{{ tripleo_hosts_entries_hosts_path }}"
dest: "{{ tripleo_hosts_entries_tmp_hosts.path }}"
mode: preserve
tags:
- tripleo_hosts_entries
- name: Remove old Heat hosts configuration (if present)
become: true
blockinfile:
state: absent
path: "{{ tripleo_hosts_entries_tmp_hosts.path }}"
block: ""
marker: "# {mark}"
marker_begin: "HEAT_HOSTS_START - Do not edit manually within this section!"
marker_end: "HEAT_HOSTS_END"
register: tripleo_hosts_entries_heat_marker
tags:
- tripleo_hosts_entries
- name: Render out the hosts entries
run_once: true
set_fact:
tripleo_hosts_entries_block: |
{% for host in groups['allovercloud'] -%}
{{ hostvars[host][hostvars[host]['hostname_resolve_network'] ~ '_ip'] ~ ' ' ~
host ~ '.' ~ cloud_domain ~ ' ' ~ host }}
{# ## NOTE(hjensas): The Undercloud Minion has no networks, need to check for that here. -#}
{% if hostvars[host]['role_networks'] is not none -%}
{% set _role_networks = hostvars[host]['role_networks'] | default ([]) -%}
{% set _networks = (enabled_networks | default([])) | intersect(_role_networks) -%}
{% for network in _networks -%}
{{ hostvars[host][networks[network]['name_lower'] ~ '_ip'] ~ ' ' ~
host ~ '.' ~ network.lower() ~ '.' ~ cloud_domain ~ ' ' ~
host ~ '.' ~ network.lower() }}
{% endfor -%}
{% endif -%}
{{ hostvars[host]['ctlplane_ip'] ~ ' ' ~
host ~ '.ctlplane' ~ '.' ~ cloud_domain ~ ' ' ~ host ~ '.ctlplane' }}
{% endfor %}
tags:
- tripleo_hosts_entries
- name: Prepare new /etc/hosts
become: true
blockinfile:
create: true
path: "{{ tripleo_hosts_entries_tmp_hosts.path }}"
# BOF denotes the beginning of the file.
insertbefore: BOF
block: |
{{ tripleo_hosts_entries_block }}
{% for host in tripleo_hosts_entries_undercloud_hosts_entries | default([]) +
tripleo_hosts_entries_vip_hosts_entries | default([]) +
tripleo_hosts_entries_extra_hosts_entries | default([]) %}
{{ host }}
{% endfor %}
marker: "# {mark}"
marker_begin: "START_HOST_ENTRIES_FOR_STACK: {{ tripleo_stack_name | default(plan) }}"
marker_end: "END_HOST_ENTRIES_FOR_STACK: {{ tripleo_stack_name | default(plan) }}"
register: tripleo_hosts_entries_new_entries
tags:
- tripleo_hosts_entries
- name: Update /etc/hosts contents (if changed)
become: true
# cp preserves the inode of the existing file tripleo_hosts_entries_hosts_path
command: cp "{{ tripleo_hosts_entries_tmp_hosts.path }}" "{{ tripleo_hosts_entries_hosts_path }}"
when: tripleo_hosts_entries_heat_marker.changed or tripleo_hosts_entries_new_entries.changed
tags:
- tripleo_hosts_entries
- name: Clean up temporary hosts file
become: true
file:
path: "{{ tripleo_hosts_entries_tmp_hosts.path }}"
state: absent
when: tripleo_hosts_entries_tmp_hosts.path is defined
tags:
- tripleo_hosts_entries