kayobe/ansible/overcloud-inventory-discover.yml

38 lines
1.5 KiB
YAML

---
# Gather an inventory of nodes from the seed's Ironic service. Use this to
# generate an Ansible inventory for Kayobe.
- name: Ensure the controller Ansible inventory is populated
hosts: seed
tasks:
- name: Gather the Ironic node inventory using Bifrost
command: >
docker exec bifrost_deploy
bash -c 'source /bifrost/env-vars &&
export BIFROST_INVENTORY_SOURCE=ironic &&
/bifrost/playbooks/inventory/bifrost_inventory.py'
register: inventory_result
changed_when: False
- name: Set a fact containing the Ironic node inventory
set_fact:
ironic_inventory: "{{ inventory_result.stdout | from_json }}"
- name: Ensure Kayobe controller inventory exists
local_action:
module: copy
content: |
# Managed by Ansible - do not edit.
# This is the Kayobe controller inventory, autogenerated from the seed
# node's Ironic inventory.
[controllers]
{% for host in ironic_inventory.baremetal.hosts %}
{% set hostvars=ironic_inventory._meta.hostvars[host] %}
{% set ipmi_address=hostvars.driver_info.ipmi_address | default %}
{% set system_vendor=hostvars.extra.system_vendor | default %}
{% set bmc_type=system_vendor | bmc_type_from_system_vendor %}
{{ host }} ipmi_address={{ ipmi_address }} bmc_type={{ bmc_type }}
{% endfor %}
dest: "{{ kayobe_config_path }}/inventory/controllers"