Files
toallab-automation/roles/ahuffman.sat6_create_hosts/tasks/main.yml
2020-08-17 12:04:20 -04:00

115 lines
3.4 KiB
YAML

---
- name: "Satellite6 Create Hosts"
block:
- name: "Ensure we have the Satellite Server's CA for validating authentication"
stat:
path: "/etc/pki/ca-trust/source/anchors/katello-server-ca.crt"
register: "ca_cert"
- name: "Obtain Satellite Server's CA for validating authentication"
block:
- name: "Download CA Certificate"
get_url:
url: "http://{{ sat6_fqdn }}/pub/katello-server-ca.crt"
dest: "/etc/pki/ca-trust/source/anchors/katello-server-ca.crt"
- name: "Update CA trust"
command: "update-ca-trust"
when: "not ca_cert.stat.exists"
become: True
- name: "Obtain Satellite6 Organization ID"
block:
- name: "Obtain Satellite6 Organization ID"
uri:
body: "{\"search\": 'name=\"{{ sat6_organization }}\"'}"
vars:
sat6_url_path: "api/v2/organizations"
register: "org_qry"
- debug:
var: "org_qry.json.results[0]"
verbosity: "1"
- name: "Set Satellite6 Organization ID"
set_fact:
organization_id: "{{ org_qry.json.results[0].id }}"
when: "org_qry.json.results[0].name == sat6_organization"
- debug:
var: "organization_id"
verbosity: "1"
tags:
- "organization_id"
- name: "Initialize lists"
set_fact:
failed_hosts: []
created_hosts: []
updated_hosts: []
- name: "Create new Satellite 6 Hosts"
include_tasks: "create_host.yml"
with_items: "{{ sat6_hosts }}"
loop_control:
loop_var: "host"
label: "{{ host.name }}"
when: "sat6_hosts | length > 0"
# Output summary/failure messages based on several conditions
- debug:
msg: "No hosts were created."
when: "created_hosts | length < 1"
- name: "Playbook fail"
fail:
msg:
- "List of hosts to provision missing."
- "Variable sat6_hosts list empty."
when: "sat6_hosts | length < 1"
- debug:
msg:
- "Host(s) created successfully:"
- "{{ created_hosts }}"
when: "created_hosts | length > 0"
# when we want to fail the playbook on existing sat6 hosts
- name: "Playbook fail when host exists"
fail:
msg:
- "Host(s) already exist in Satellite6:"
- "{{ failed_hosts }}"
when:
- "fail_playbook | default(False)"
- "sat6_fail_on_existing"
# when we don't want to fail the playbook on existing sat6 hosts
## Handles where we are using host.force_host_update: False
- debug:
msg:
- "Host(s) already exist in Satellite6:"
- "{{ failed_hosts }}"
when:
- "not sat6_fail_on_existing"
- "failed_hosts | length > 0"
## Handles where we are using host.force_host_update: True
- debug:
msg:
- "Host(s) already existed and were updated in Satellite6:"
- "{{ updated_hosts }}"
when:
- "not sat6_fail_on_existing"
- "updated_hosts | length > 0"
# set uri module defaults to avoid repetitive params
module_defaults:
uri:
user: "{{ sat6_user }}"
password: "{{ sat6_pass }}"
force_basic_auth: True
url: "https://{{ sat6_fqdn }}/{{ sat6_url_path | default('') }}"
method: "GET"
status_code: "200"
body_format: "json"