38 lines
1.5 KiB
YAML
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"
|