| collection |
creates random mac, password, and ssh keys for cloudinit and stores the facts. can also output the yaml file for inventory.
-
can be your inventory, or any other yaml
-
you specify the target path via parameter later
-
our dcworkshop1 host has 2 children
- they are listed in
machines
- the prototype vars get defined in the
prototypes
group
- they are listed in
-
in this case those are the vms i used in my anisble playbook als libvirt hosts and created 2 vms on this host
-
your prototypes can have additional parameters defined here, they will get copied to the new host that will get created
workshop_machines:
hosts:
dcworkshop1:
vars:
ansible_ssh_host: omit
ansible_user: omit
ansible_ssh_pass: omit
ansible_connection: ssh
ansible_become_password: omit
machines:
proxmox
vm
dcworkshop2:
vars:
ansible_ssh_host: omit
ansible_user: omit
ansible_ssh_pass: omit
ansible_connection: ssh
ansible_become_password: omit
machines:
proxmox
prototypes:
hosts:
proxmox:
vars:
mac: omit
ansible_ssh_host: omit
ansible_user: omit
ansible_ssh_pass: omit
ansible_connection: ssh
ansible_become_password: omit
password: omit
proxmox_user: omit
proxmox_ip: omit
proxmox_pass: omit
proxmox_token: omit
vm:
vars:
ansible_ssh_host: omit
ansible_user: omit
ansible_ssh_pass: omit
ansible_connection: ssh
ansible_become_password: omit
password: omit
---
- hosts: localhost
gather_facts: no
become: true
collections:
- ji_podhead.host_prototypes
tasks:
- name: create the yamls and update the facts
delegate_to: "localhost"
import_role:
name: ji_podhead.host_prototypes.create_prototypes
vars:
group: 'workshop_machines'
target_group: 'vms' #optional
inventory_path: /home/ji/Dokumente/podshop-org/Pod-Shop-App-Configs/ansible/inventory.yml
yaml_path: "/home/ji/Dokumente/podshop-org/Pod-Shop-App-Configs/yamlgen" #optional
store_yaml: "true" #optional
- to test if your host got created and has all the facts, i added a little debug loop for you, this is what it will look like:
TASK [ji_podhead.host_prototypes.create_prototypes : Debug group facts] ********
task path: /home/ji/.ansible/collections/ansible_collections/ji_podhead/host_prototypes/roles/create_prototypes/tasks/main.yml:36
ok: [localhost] => (item=dcworkshop1-proxmox) => {
"ansible_loop_var": "item",
"hostvars[item]": {
"_raw_params": " mac: \"e3:b0:c4:42:98:fc\" ansible_ssh_host: \"omit\" ansible_user: \"omit\" ansible_ssh_pass: \"$6$RTlEFLiQ/alLy7TP$ZKTisntPdpUhtnAzO7u6nypagjJlLs0atAfO/gPXOGojk4u99gmmexAcx7tVAWeAuzoPE1ImywPUrJMfNoPTX/\" ansible_connection: \"ssh\" ansible_become_password: \"$6$RTlEFLiQ/alLy7TP$ZKTisntPdpUhtnAzO7u6nypagjJlLs0atAfO/gPXOGojk4u99gmmexAcx7tVAWeAuzoPE1ImywPUrJMfNoPTX/\" password: \"$6$RTlEFLiQ/alLy7TP$ZKTisntPdpUhtnAzO7u6nypagjJlLs0atAfO/gPXOGojk4u99gmmexAcx7tVAWeAuzoPE1ImywPUrJMfNoPTX/\" proxmox_user: \"omit\" proxmox_ip: \"omit\" proxmox_pass: \"omit\" proxmox_token: \"omit\" private_key: \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1F5nQKnGlBamImDjASQjXM1lGwkUo31Gb23O4zb4W2UC1ZE0N3j/Q7EdRE7Kjo6SeqAvWBDl5rbn6VTAFORIL/IZJZwrSiTE8pSBzWv996XqHjvPHFC2WPXgH7G2BUIysC1hpIX13QAZNvt9/NcI1+yF7upufM+xvTcR5vbOOHqHZIr6Tammz8oOLQXeYU43JOtOkanwmpvHFibRnYrGU+jCiaIWjrFrrZ8dBn1/YXOvk9A/TPn7A/vSD4099oWhkvj7caGWiuxdRKQ6TUX2cvZn/ogPebC/3RQVJjN5/1FLAS6R3wHu/qHFqUjppkJDHq3kXxlv8FKOfHr5IMHLF root@base\" public_key: \"-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn\nNhAAAAAwEAAQAAAQEAtReZ0CpxpQWpiJg4wEkI1zNZRsJFKN9Rm9tzuM2+FtlAtWRNDd4/\n0OxHUROyo6OknqgL1gQ5ea25+lUwBTkSC/yGSWcK0okxPKUgc1r/fel6h47zxxQtlj14B+\nxtgVCMrAtYaSF9d0AGTb7ffzXCNfshe7qbnzPsb03Eeb2zjh6h2SK+k2pps/KDi0F3mFON\nyTrTpGp8JqbxxYm0Z2KxlPowomiFo6xa62fHQZ9f2Fzr5PQP0z5+wP70g+NPfaFoZL4+3G\nhlorsXUSkOk1F9nL2Z/6ID3mwv90UFSYzef9RSwEukd8B7v6hxalI6aZCQx6t5F8Zb/BSj\nnx6+SDByxQAAA8Dk/Sxo5P0saAAAAAdzc2gtcnNhAAABAQC1F5nQKnGlBamImDjASQjXM1\nlGwkUo31Gb23O4zb4W2UC1ZE0N3j/Q7EdRE7Kjo6SeqAvWBDl5rbn6VTAFORIL/IZJZwrS\niTE8pSBzWv996XqHjvPHFC2WPXgH7G2BUIysC1hpIX13QAZNvt9/NcI1+yF7upufM+xvTc\nR5vbOOHqHZIr6Tammz8oOLQXeYU43JOtOkanwmpvHFibRnYrGU+jCiaIWjrFrrZ8dBn1/Y\nXOvk9A/TPn7A/vSD4099oWhkvj7caGWiuxdRKQ6TUX2cvZn/ogPebC/3RQVJjN5/1FLAS6\nR3wHu/qHFqUjppkJDHq3kXxlv8FKOfHr5IMHLFAAAAAwEAAQAAAQABmyQxhcWCAueYFXou\n+BwuHIovqwNdgWFhFfV4SkmfgOKkcbgG488d2CJUpf6fgCIUu4dt4GK/gUIi7n8tJPLG+Y\nlVra7zIzaB7GVxfttrxcN2Tt+QbWc8B4z2HW2U/W2BJqJoRkeCubcmuss9qWyB267rliQi\nR3/9escy2HdU4AkNA3il1JXGgncuY9HrcV0jcDfxYzQoK8zgcBMzxzuTGLYIzro3n5PHHg\nqa2C1W0Ke1OmNOZk+Kqju4sumsSGeYyji4BoDLaQ/HVptgUB1srHwf3zddg8N9JgJ+iU7T\nUH0QcskS7UH4q0GONuJ3WoLxwBNh3Czuho4W+prFuEyxAAAAgCVyqbpslypkL6GKgAEH57\nSB0Wf6meVBDFZF4tJgt3m8dh2y6X9Fm30IAg+kV1i/JzkTwMHrb3DegMyExk52Fw3oMJj1\nqIY6BR1YlH/mYhKjctH3APf3b8hwb0a38gN6EFoaaRLdiuk9kZsMcFCwSAHz8cETb/sMOa\nfSD5i0Y1VdAAAAgQC8EmADXZF/RVbd/oALgsIhzONKR5bHFldPqztFvtUsdjyvoecpSrAL\niAv14lAcu30XeuTXdszNcy7umDcaDnSt9ESIi66EKmGwWRsTSxiABGJquWPxsEp4pr+f8i\nvO/T0zUrHIhg3sX5fU+b84VTezb2c4sJkRfr6RE9C5ZYykdQAAAIEA9n/f02IdAfCmKbS/\nlS4wfkGde1a6Z9OGaYJt5HqRjIWDG6Fcm8XYtqXdxZMG6tHSwpcxetTQJu5Rdti17uPTEV\n95HRqxz8XFbcCDHyI+nKfoUI4dOdvizYP3hWLcAEwXrdcoAZzDhpdSln3uhXFyemBp3ebF\n/j0q7i8tvZCWixEAAAAJcm9vdEBiYXNlAQI=\n-----END OPENSSH PRIVATE KEY-----\" ",
"ansible_check_mode": false,
"ansible_config_file": "/etc/ansible/ansible.cfg",
"ansible_diff_mode": false,
"ansible_facts": {},
"ansible_forks": 5,
"ansible_inventory_sources": [
"/home/ji/Dokumente/podshop-org/Pod-Shop-App-Configs/ansible/inventory.yml"
],
"ansible_playbook_python": "/usr/bin/python3",
"ansible_run_tags": [
"all"
],
"ansible_skip_tags": [],
"ansible_verbosity": 2,
"ansible_version": {
"full": "2.14.14",
"major": 2,
"minor": 14,
"revision": 14,
"string": "2.14.14"
},
"group_names": [
"vms"
],
...