f3c0526c09
The critical part of this commit is adapting code that was still sourcing env-vars. This file was removed from Bifrost in the Victoria release, breaking the `kayobe seed deployment image build` command. The other changes are not yet breaking Kayobe: 1) Release notes claim that OpenStackClient is no longer installed when keystone is not enabled, but it appears to still be available. Use the ironic native baremetal command instead except in playbooks related to baremetal compute nodes (i.e. overcloud ironic). 2) The use of OS_CLOUD=bifrost-inspector is deprecated and should be replaced by OS_CLOUD=bifrost. Change-Id: I25078e69acdf41a4ef9957f99fe5047de54b778d Story: 2008558 Task: 41696
63 lines
2.4 KiB
YAML
63 lines
2.4 KiB
YAML
---
|
|
- name: Ensure the overcloud nodes' hardware introspection data is saved
|
|
hosts: overcloud
|
|
vars:
|
|
seed_host: "{{ groups['seed'][0] }}"
|
|
# Override this to save results to another location.
|
|
output_dir: "{{ lookup('env', 'PWD') }}/overcloud-introspection-data"
|
|
# Override this to set the output data format. One of json, yaml.
|
|
output_format: json
|
|
gather_facts: no
|
|
tasks:
|
|
- name: Query overcloud nodes' hardware introspection data
|
|
command: >
|
|
docker exec bifrost_deploy
|
|
bash -c '
|
|
export BIFROST_INVENTORY_SOURCE=ironic &&
|
|
ansible baremetal
|
|
--connection local
|
|
--inventory /etc/bifrost/inventory/
|
|
-e @/etc/bifrost/bifrost.yml
|
|
-e @/etc/bifrost/dib.yml
|
|
--limit {{ inventory_hostname }}
|
|
-m shell
|
|
-a "env OS_CLOUD=bifrost baremetal introspection data save {% raw %}{{ inventory_hostname }}{% endraw %}"'
|
|
register: save_result
|
|
changed_when: False
|
|
# Ignore errors, log a message later.
|
|
failed_when: False
|
|
delegate_to: "{{ seed_host }}"
|
|
vars:
|
|
# NOTE: Without this, the seed's ansible_host variable will not be
|
|
# respected when using delegate_to.
|
|
ansible_host: "{{ hostvars[seed_host].ansible_host | default(seed_host) }}"
|
|
|
|
- name: Ensure introspection data output directory exists
|
|
local_action:
|
|
module: file
|
|
path: "{{ output_dir }}"
|
|
state: directory
|
|
|
|
- name: Ensure introspection data is saved locally
|
|
local_action:
|
|
module: copy
|
|
content: "{{ introspection_data_map[output_format | lower] }}"
|
|
dest: "{{ output_dir }}/{{ inventory_hostname }}.{{ output_format | lower }}"
|
|
when: save_result.rc == 0
|
|
vars:
|
|
introspection_data: "{{ save_result.stdout_lines[1:] | join('\n') | from_json }}"
|
|
introspection_data_json: "{{ introspection_data | to_nice_json(indent=4) }}"
|
|
introspection_data_yaml: "{{ introspection_data | to_nice_yaml }}"
|
|
introspection_data_map:
|
|
json: "{{ introspection_data_json }}"
|
|
yaml: "{{ introspection_data_yaml }}"
|
|
|
|
- name: Log when introspection data could not be queried
|
|
debug:
|
|
msg: >
|
|
Could not query hardware introspection data for
|
|
{{ inventory_hostname }}.
|
|
Stdout: {{ save_result.stdout }}.
|
|
Stderr: {{ save_result.stderr }}.
|
|
when: save_result.rc != 0
|