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