33d79b09a9
The filename was incorrectly implemented as network_info.json instead of network_data.json. Support for reading the correct file already exists in glean. As such, we need to write both files for user compatability in the short term, and remove the second file at a later point in time. A release note has been added detailing this as well. Co-Authored-By: Julia Kreger <juliaashleykreger@gmail.com> Change-Id: I4150f86fbc141dcd6fd12094acab1ca43d76910c
125 lines
5.0 KiB
YAML
125 lines
5.0 KiB
YAML
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
#
|
|
# 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.
|
|
---
|
|
# Note(TheJulia): Fact collection from ironic is necessary to obtain
|
|
# the host's assigned UUID value.
|
|
- name: "Update facts from ironic to fill in any missing values"
|
|
include: update_facts_from_ironic.yaml
|
|
|
|
- name: "Identify ssh_public_key if ssh_public_key_path is defined"
|
|
include: ssh_public_key_path.yaml
|
|
when: ssh_public_key is undefined and ssh_public_key_path is defined
|
|
|
|
- name: "Make temporary folder to build configdrive"
|
|
local_action: command mktemp -d
|
|
register: variable_configdrive_location
|
|
|
|
- name: "Make metadata folder - /openstack/{{ metadata_version }}"
|
|
file:
|
|
state: directory
|
|
name: "{{ variable_configdrive_location.stdout }}/{{ uuid }}/openstack/{{ metadata_version }}/"
|
|
|
|
- name: "Make metadata folder - /openstack/latest"
|
|
file:
|
|
state: directory
|
|
name: "{{ variable_configdrive_location.stdout }}/{{ uuid }}/openstack/latest/"
|
|
|
|
- name: "Place template in each openstack/{{ metadata_version }} folder"
|
|
template:
|
|
src: openstack_meta_data.json.j2
|
|
dest: "{{ variable_configdrive_location.stdout }}/{{ uuid }}/openstack/{{ metadata_version }}/meta_data.json"
|
|
|
|
- name: "Place template in each openstack/latest folder"
|
|
template:
|
|
src: openstack_meta_data.json.j2
|
|
dest: "{{ variable_configdrive_location.stdout }}/{{ uuid }}/openstack/latest/meta_data.json"
|
|
|
|
- name: "Generate network_data"
|
|
network_metadata:
|
|
ipv4_address: "{{ ipv4_address | default('') }}"
|
|
ipv4_gateway: "{{ ipv4_gateway | default('') }}"
|
|
ipv4_interface_mac: "{{ ipv4_interface_mac | default('') }}"
|
|
ipv4_nameserver: "{{ ipv4_nameserver | default('') }}"
|
|
ipv4_subnet_mask: "{{ ipv4_subnet_mask | default('') }}"
|
|
vlan_id: "{{ vlan_id | default('') }}"
|
|
network_mtu: "{{ network_mtu | default('1500') }}"
|
|
nics: "{{ nics | default(omit) }}"
|
|
node_network_data: "{{ node_network_data | default(node_network_info) }}"
|
|
when: addressing_mode is undefined or "dhcp" not in addressing_mode
|
|
|
|
- name: "Place network data template in each openstack/latest folder"
|
|
template:
|
|
src: network_data.json.j2
|
|
dest: "{{ variable_configdrive_location.stdout }}/{{ uuid }}/openstack/latest/network_data.json"
|
|
when: addressing_mode is undefined or "dhcp" not in addressing_mode
|
|
|
|
# TODO(TheJulia): Deprecation removal of the old network_info file name
|
|
# should likely take place after an elongated deprecation cycle.
|
|
# Begind eprecated in the Ocata release suggests Queens as the point
|
|
# in which we should remove it.
|
|
- name: "Place deprecated network info file location in each openstack/latest folder"
|
|
template:
|
|
src: network_data.json.j2
|
|
dest: "{{ variable_configdrive_location.stdout }}/{{ uuid }}/openstack/latest/network_info.json"
|
|
when: addressing_mode is undefined or "dhcp" not in addressing_mode
|
|
|
|
- name: "Make metadata folder - /openstack/latest"
|
|
file:
|
|
state: directory
|
|
name: "{{ variable_configdrive_location.stdout }}/{{ uuid }}/openstack/content/"
|
|
|
|
- name: "Write network Debian style interface template"
|
|
local_action: template src=interfaces.j2 dest={{ variable_configdrive_location.stdout }}/{{ uuid }}/openstack/content/0000
|
|
when: write_interfaces_file | bool == true
|
|
|
|
- name: "Check if mkisofs is available"
|
|
shell: mkisofs --help &> /dev/null
|
|
ignore_errors: yes
|
|
register: test_mkisofs
|
|
|
|
- name: "If mkisofs is not available, fallback to genisoimage"
|
|
set_fact:
|
|
iso_gen_utility: "genisoimage"
|
|
when: ('genisoimage' in test_mkisofs.stderr) or test_mkisofs.rc != 0
|
|
|
|
- name: "Check if genisoimage is available"
|
|
shell: genisoimage --help &> /dev/null
|
|
ignore_errors: yes
|
|
register: test_genisoimage
|
|
|
|
- name: "fail if genisoimage is not available."
|
|
fail: msg="Neither mkisofs or genisoimage is available. Cannot make config drive files."
|
|
when: test_genisoimage.rc != 0 and test_mkisofs.rc != 0
|
|
|
|
- name: "Make config drive files"
|
|
become: yes
|
|
command: "{{iso_gen_utility}} -R -V config-2 -o {{http_boot_folder}}/configdrive-{{ uuid }}.iso {{ variable_configdrive_location.stdout }}/{{ uuid }}"
|
|
|
|
- name: "Make config drive files base64 encoded and gzip compressed"
|
|
become: yes
|
|
shell: gzip -c {{http_boot_folder}}/configdrive-{{ uuid }}.iso | base64 > {{http_boot_folder}}/configdrive-{{ uuid }}.iso.gz
|
|
|
|
- name: "Cleanup configdrive .iso files"
|
|
become: yes
|
|
file:
|
|
state: absent
|
|
name: "{{http_boot_folder}}/configdrive-{{ uuid }}.iso"
|
|
|
|
- name: "Cleanup configdrive temp folder"
|
|
become: yes
|
|
file:
|
|
state: absent
|
|
force: yes
|
|
name: "{{ variable_configdrive_location.stdout }}"
|