56 lines
2.2 KiB
YAML
56 lines
2.2 KiB
YAML
---
|
|
- hosts: localhost
|
|
connection: local
|
|
name: "Enroll hardware from baremetal.csv into Ironic"
|
|
sudo: yes
|
|
gather_facts: yes
|
|
# Todo: Rip vars out, refactor.
|
|
tasks:
|
|
- name: "Error if variable baremetal_csv_file is not defined"
|
|
local_action: fail msg="baremetal_csv_file must be defined for this playbook to execute, please pass option '-e baremetal_csv_file=<path/to/file>'"
|
|
when: baremetal_csv_file is not defined
|
|
- name: "Validate that CSV file exists"
|
|
local_action: stat path={{ baremetal_csv_file }}
|
|
register: test_baremetal_csv_file
|
|
- name: "Error if file does not exist."
|
|
local_action: fail msg="The variable defined for baremetal_csv_file is not to a file. Please define a file and try again."
|
|
when: test_baremetal_csv_file.stat.isreg == false
|
|
- name: "Enroll Hardware"
|
|
# The variable definitions below seem far from ideal, however there
|
|
# seems to be no better way to handle CSV files for looping at this time.
|
|
#
|
|
# Ideally with_lines would be used with an include, however that support was removed in
|
|
# Ansible 1.6 and no direct replacement exists.
|
|
#
|
|
# mac_address: "{{item.split(',')[1]}}"
|
|
# username: "{{item.split(',')[2]}}"
|
|
# password: "{{item.split(',')[3]}}"
|
|
# management_address: "{{item.split(',')[4]}}"
|
|
# cpu_cores: "{{item.split(',')[5]}}"
|
|
# memory_MB: "{{item.split(',')[6]}}"
|
|
# disk_MB: "{{item.split(',')[7]}}"
|
|
os_baremetal:
|
|
auth_plugin: None
|
|
auth: None
|
|
ironic_url: "{{ ironic_url }}"
|
|
driver: "pxe_ipmitool"
|
|
# UUID determination TBD for mass enrollment.
|
|
uuid: "{{item.split(',')[9]}}"
|
|
state: present
|
|
nics:
|
|
- mac: "{{item.split(',')[0]}}"
|
|
properties:
|
|
cpus: "{{item.split(',')[4]}}"
|
|
cpu_arch: "x86_64"
|
|
ram: "{{item.split(',')[5]}}"
|
|
disk_size: "{{item.split(',')[6]}}"
|
|
driver_info:
|
|
power:
|
|
ipmi_address: "{{item.split(',')[3]}}"
|
|
ipmi_username: "{{item.split(',')[1]}}"
|
|
ipmi_password: "{{item.split(',')[2]}}"
|
|
delegate_to: localhost
|
|
with_lines:
|
|
- cat {{ baremetal_csv_file }}
|
|
|