TripleO Ansible project repository. Contains playbooks for use with TripleO OpenStack deployments.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

110 lines
3.8 KiB

---
# 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