2022-01-05 23:59:13 +01:00
---
- hosts : status_planned
gather_facts : no
vars :
token : "{{ nb_token }}"
vm_name : "{{ inventory_hostname }}"
tag_merged : [ ]
debug_merged : [ ]
vars_files :
- ../variables/deploy-variables.yml
pre_tasks :
- name : Check lock
wait_for :
path : "{{ lockfile }}"
state : absent
timeout : 600
msg : Lock did not disappear in time
delegate_to : localhost
- name : Create lock
file :
path : "{{ lockfile }}"
state : touch
delegate_to : localhost
tasks :
- name : Pipeline
block :
- name : Gather details
block :
- import_tasks : "../tasks/netbox_query_vm.yml"
- import_tasks : "../tasks/netbox_query_cluster.yml"
no_log : true
- name : Assign variables
block :
- import_tasks : "../tasks/netbox_evaluate_cluster.yml"
- import_tasks : "../tasks/netbox_evaluate_vm.yml"
- name : Verify compliance
block :
- name : Check status
fail :
msg : The object is not Planned.
when : status != 'planned'
- name : Check tag
fail :
msg : The object is marked as already being in deployment.
when : '"active-deployment" in tags'
- name : Check platform
fail :
msg : The object does not contain a valid platform attribute.
2022-02-13 01:37:39 +01:00
when : os != 'openSUSE-Leap-x86_64' #support more OS's later
2022-01-05 23:59:13 +01:00
- name : Write tag and journal
import_tasks : "../tasks/netbox_tags_pre.yml"
- name : Gather site configuration
block :
- import_tasks : "../tasks/netbox_query_site.yml"
- import_tasks : "../tasks/netbox_evaluate_site.yml"
no_log : true
- name : Gather prefix
block :
- import_tasks : "../tasks/netbox_query_prefix.yml"
- import_tasks : "../tasks/netbox_evaluate_prefix.yml"
no_log : true
- name : Gather IP address
block :
- import_tasks : "../tasks/netbox_query_ip.yml"
- import_tasks : "../tasks/netbox_evaluate_ip.yml"
2022-02-13 16:56:12 +01:00
no_log : true
2022-01-05 23:59:13 +01:00
- name : Provision virtual machine
import_tasks : "../tasks/configure_libvirt.yml"
- name : Configure DHCP
import_tasks : "../tasks/init_dhcp.yml"
2022-02-13 01:37:39 +01:00
- name : Configure DNS
import_tasks : "../tasks/init_dns.yml"
- name : Configure Deployment Servers
import_tasks : "../tasks/init_dps.yml"
- name : Create interface object in NetBox or use existing one
block :
- import_tasks : "../tasks/netbox_init_interface.yml"
- import_tasks : "../tasks/netbox_query_interface.yml"
- import_tasks : "../tasks/netbox_evaluate_interface.yml"
2022-02-13 16:56:12 +01:00
no_log : true
2022-02-13 01:37:39 +01:00
- name : Define IP address object in NetBox
block :
- import_tasks : "../tasks/netbox_init_ip.yml"
- import_tasks : "../tasks/netbox_primaryip.yml"
- name : Start VM and attach console
import_tasks : "../tasks/init_vm_console.yml"
2022-02-13 16:56:12 +01:00
- name : Initialize SSH CA
import_tasks : "../tasks/init_ssh.yml"
- name : Wait for guest OS installation
import_tasks : "../tasks/wait.yml"
- name : Configure SSH
import_tasks : "../tasks/configure_ssh.yml"
2022-01-05 23:59:13 +01:00
always :
- name : Restore original tags
import_tasks : "../tasks/netbox_tags_post.yml"
- name : Remove lock
file :
path : "{{ lockfile }}"
state : absent
delegate_to : localhost
- name : Debug
ansible.builtin.debug :
2022-02-13 01:37:39 +01:00
msg : "{{ status if status is defined}} - {{ tags if tags is defined }} - {{ host if host is defined }} - {{ host_status if host_status is defined }} - {{ namespace if namespace is defined }} - {{ os if os is defined }} - {{ vcpus if vcpus is defined }} - {{ memory if memory is defined }} - {{ disk if disk is defined }}"
2022-01-05 23:59:13 +01:00