diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..878ec9e --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "ansible.python.interpreterPath": "/usr/local/bin/python3" +} \ No newline at end of file diff --git a/aap/playbooks/ansible.cfg b/aap/playbooks/ansible.cfg new file mode 100644 index 0000000..257ba77 --- /dev/null +++ b/aap/playbooks/ansible.cfg @@ -0,0 +1,3 @@ +[defaults] +# Enable the do keyword in Jinja2 +jinja2_extensions = jinja2.ext.do diff --git a/aap/playbooks/templates/cloud-init/meta-data.j2 b/aap/playbooks/templates/cloud-init/meta-data.j2 new file mode 100644 index 0000000..65318f3 --- /dev/null +++ b/aap/playbooks/templates/cloud-init/meta-data.j2 @@ -0,0 +1,2 @@ +instance-id: "{{ libvirt_domain.name }}" +local-hostname: "{{ libvirt_domain.name }}" diff --git a/aap/playbooks/templates/cloud-init/network-config.j2 b/aap/playbooks/templates/cloud-init/network-config.j2 new file mode 100644 index 0000000..c766064 --- /dev/null +++ b/aap/playbooks/templates/cloud-init/network-config.j2 @@ -0,0 +1,9 @@ +version: 2 +ethernets: + enp1s0: + match: + macaddress: "{{ libvirt_domain_mac_address }}" + set-name: enp1s0 + addresses: + - "{{ libvirt_domain_parameters.ipv4_address }}" + gateway4: "{{ libvirt_domain_parameters.ipv4_gateway }}" diff --git a/aap/playbooks/templates/cloud-init/user-data.j2 b/aap/playbooks/templates/cloud-init/user-data.j2 new file mode 100644 index 0000000..9a5b717 --- /dev/null +++ b/aap/playbooks/templates/cloud-init/user-data.j2 @@ -0,0 +1,59 @@ +#cloud-config + +users: +- name: demo + gecos: Demo + groups: wheel + lock_passwd: false + passwd: $6$pkjw0DZirHVbQuBW$U/D84I3BVGutAOyg2GmOGPcHTptM4nFhULLuzpwwUQ400eiYonbVVfaqDts7AB3VgFsPR/4P6BsMD90811n6S0 + ssh_authorized_keys: + - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPR1tt58X0+vbvsCR12gMAqr+g7vjt1Fx/qqz9EiboIs nicolas@localhost.localdomain + - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFW62WJXI1ZCMfNA4w0dMpL0fsldhbEfULNGIUB0nQui nmasse@localhost.localdomain + - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHFcI0BFE4YNt9e+Av8akeLpiGFufCyuqEWT1kxfc7ki root@edge-infra + - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5/85EkW8rBdCVBQ7utReG1HvPc9XO4Xp62dDgUpH34nugA3Eo0qpeU5hZyUZguyPBpsM6FqR1AJ8HFSQf4PN0NqoGIAqYTR/FmFS1HxW4zvqA+KLnaqEQeC23yh/6QfzIY/kbWYO9UJz0emusT2MyyU776Y68cWjg1HNJcsuMSdtDSnb9C5dhd/oBtzO5/tlZ2ddUlfKiDUcW1RCSedu9wlvTu2NF1zuGUvurUWGU2dSTCUHQWF0qF9sIw+vaL52Z/WYaBaTGloiwVDY4h0rcTlRSZOlLEG9EaTAk0Aw/A9JPVlsrIqxDqMto+p9xxwxdQqX0ZbfG2sTnEt4JdCd1 jerome@jerome-PC +- name: root + ssh_authorized_keys: + - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPR1tt58X0+vbvsCR12gMAqr+g7vjt1Fx/qqz9EiboIs nicolas@localhost.localdomain + - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFW62WJXI1ZCMfNA4w0dMpL0fsldhbEfULNGIUB0nQui nmasse@localhost.localdomain + - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHFcI0BFE4YNt9e+Av8akeLpiGFufCyuqEWT1kxfc7ki root@edge-infra + - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5/85EkW8rBdCVBQ7utReG1HvPc9XO4Xp62dDgUpH34nugA3Eo0qpeU5hZyUZguyPBpsM6FqR1AJ8HFSQf4PN0NqoGIAqYTR/FmFS1HxW4zvqA+KLnaqEQeC23yh/6QfzIY/kbWYO9UJz0emusT2MyyU776Y68cWjg1HNJcsuMSdtDSnb9C5dhd/oBtzO5/tlZ2ddUlfKiDUcW1RCSedu9wlvTu2NF1zuGUvurUWGU2dSTCUHQWF0qF9sIw+vaL52Z/WYaBaTGloiwVDY4h0rcTlRSZOlLEG9EaTAk0Aw/A9JPVlsrIqxDqMto+p9xxwxdQqX0ZbfG2sTnEt4JdCd1 jerome@jerome-PC + +write_files: +- path: /etc/sudoers + content: | + Defaults !visiblepw + Defaults always_set_home + Defaults match_group_by_gid + Defaults always_query_group_plugin + Defaults env_reset + Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS" + Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE" + Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES" + Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE" + Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY" + Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin + root ALL=(ALL) ALL + %wheel ALL=(ALL) NOPASSWD: ALL + #includedir /etc/sudoers.d + permissions: '0440' + append: false +- path: /etc/ssh/sshd_config.d/00-demo.conf + content: | + KbdInteractiveAuthentication no + GSSAPIAuthentication no + PasswordAuthentication no + PermitRootLogin prohibit-password + KerberosAuthentication no + permissions: '0440' + append: false +- path: /etc/NetworkManager/conf.d/00-static-dns.conf + content: | + [main] + rc-manager=unmanaged +- path: /etc/resolv.conf + content: | + search libvirt.test + nameserver {{ libvirt_domain_parameters.ipv4_nameserver }} + +runcmd: +- systemctl disable --now --no-block rpcbind.socket diff --git a/aap/playbooks/templates/virt-install-cmdline.j2 b/aap/playbooks/templates/virt-install-cmdline.j2 new file mode 100644 index 0000000..43bd9ad --- /dev/null +++ b/aap/playbooks/templates/virt-install-cmdline.j2 @@ -0,0 +1,28 @@ +{%- set argv = [ "virt-install", "--noautoconsole", "--name=" ~ libvirt_domain.name] -%} +{%- for param in libvirt_domain.virt_install -%} +{%- for param2, values in param.items() -%} +{%- set prefix = "--" ~ param2 -%} +{%- if values is string or values is number -%} +{%- do argv.append(prefix ~ "=" ~ (values)) -%} +{%- elif values is mapping -%} +{%- set arglist = [] -%} +{%- for item in values | dict2items -%} +{%- set arg = item.key -%} +{%- set value = item.value -%} +{%- if value is none -%} +{%- do arglist.append(arg) -%} +{%- elif value.__class__.__name__ == 'list' -%} +{%- for v in value -%} +{%- do arglist.append(arg ~ "=" ~ v) -%} +{%- endfor -%} +{%- else -%} +{%- do arglist.append(arg ~ "=" ~ value) -%} +{%- endif -%} +{%- endfor -%} +{%- do argv.append(prefix ~ "=" ~ arglist | join(",")) -%} +{%- else -%} +{%- do argv.append(prefix) -%} +{%- endif -%} +{%- endfor -%} +{%- endfor -%} +{{ argv }} \ No newline at end of file