155 lines
3.9 KiB
YAML
155 lines
3.9 KiB
YAML
- name: Deploy virtual machines
|
|
hosts: poweredge-t640
|
|
become: true
|
|
vars_files:
|
|
- ../secrets.yaml
|
|
vars:
|
|
libvirt_guests:
|
|
- alpha-worker-8
|
|
- alpha-worker-9
|
|
- alpha-worker-10
|
|
- alpha-worker-11
|
|
- alpha-worker-12
|
|
tasks:
|
|
- name: Download base image
|
|
get_url:
|
|
url: https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2
|
|
dest: /var/lib/libvirt/images/debian-12-generic-amd64.qcow2
|
|
force: true
|
|
|
|
- name: Copy base image
|
|
copy:
|
|
src: /var/lib/libvirt/images/debian-12-generic-amd64.qcow2
|
|
remote_src: true
|
|
dest: "/var/lib/libvirt/images/{{ item }}.qcow2"
|
|
force: true
|
|
loop: "{{ libvirt_guests }}"
|
|
|
|
- name: Resize images
|
|
command: "qemu-img resize -f qcow2 /var/lib/libvirt/images/{{ item }}.qcow2 16G"
|
|
loop: "{{ libvirt_guests }}"
|
|
|
|
- name: Create cloud-config directory
|
|
file:
|
|
path: "/tmp/{{ item }}"
|
|
state: directory
|
|
loop: "{{ libvirt_guests }}"
|
|
|
|
- name: Copy cloud-config user-data template
|
|
template:
|
|
src: user-data.j2
|
|
dest: "/tmp/{{ domain.name }}/user-data"
|
|
force: true
|
|
loop: "{{ libvirt_guests }}"
|
|
vars:
|
|
domain: "{{ hostvars[item] }}"
|
|
|
|
- name: Copy cloud-config meta-data template
|
|
template:
|
|
src: meta-data.j2
|
|
dest: "/tmp/{{ domain.name }}/meta-data"
|
|
force: true
|
|
loop: "{{ libvirt_guests }}"
|
|
vars:
|
|
domain: "{{ hostvars[item] }}"
|
|
|
|
- name: Generate iso
|
|
command: "genisoimage -output /var/lib/libvirt/images/{{ item }}.iso -volid cidata -joliet -rock /tmp/{{ item }}/user-data /tmp/{{ item }}/meta-data"
|
|
loop: "{{ libvirt_guests }}"
|
|
|
|
- name: Define libvirt virtual machine
|
|
community.libvirt.virt:
|
|
command: define
|
|
xml: "{{ lookup('template', 'libvirt-vm.xml.j2') }}"
|
|
loop: "{{ libvirt_guests }}"
|
|
vars:
|
|
domain: "{{ hostvars[item] }}"
|
|
|
|
- name: Create libvirt virtual machine
|
|
community.libvirt.virt:
|
|
name: "{{ item }}"
|
|
command: create
|
|
loop: "{{ libvirt_guests }}"
|
|
|
|
- name: Autostart libvirt virtual machines
|
|
community.libvirt.virt:
|
|
name: "{{ item }}"
|
|
autostart: true
|
|
loop: "{{ libvirt_guests }}"
|
|
|
|
- name: Wait for guest initialization
|
|
wait_for:
|
|
timeout: 300
|
|
|
|
- name: Reset libvirt virtual machines for filesystem resize
|
|
command: "virsh reset {{ item }}"
|
|
loop: "{{ libvirt_guests }}"
|
|
|
|
- name: Wait for manual tasks
|
|
hosts: localhost
|
|
tasks:
|
|
- name: Trust SSH identities
|
|
pause:
|
|
prompt: "Press Enter to continue..."
|
|
|
|
- name: Initialize virtual machines
|
|
hosts:
|
|
- alpha-worker-8
|
|
- alpha-worker-9
|
|
- alpha-worker-10
|
|
- alpha-worker-11
|
|
- alpha-worker-12
|
|
become: true
|
|
vars_files:
|
|
- ../secrets.yaml
|
|
roles:
|
|
- role: ericomeehan.ericomeehan
|
|
|
|
- name: Initialize Kubernetes clusters
|
|
hosts:
|
|
- alpha-worker-8
|
|
- alpha-worker-9
|
|
- alpha-worker-10
|
|
- alpha-worker-11
|
|
- alpha-worker-12
|
|
become: true
|
|
pre_tasks:
|
|
- name: Enable IPv4 packet forwarding
|
|
lineinfile:
|
|
path: /etc/sysctl.conf
|
|
line: 'net.ipv4.ip_forward = 1'
|
|
state: present
|
|
|
|
- name: Enable IPv6 packet forwarding
|
|
lineinfile:
|
|
path: /etc/sysctl.conf
|
|
line: 'net.ipv6.conf.all.forwarding = 1'
|
|
state: present
|
|
|
|
- name: Reload sysctl configuration
|
|
command: sysctl --system
|
|
|
|
- name: Enable br_netfilter kernel module
|
|
command: modprobe br_netfilter
|
|
|
|
- name: Add the module to a configuration file for persistence
|
|
lineinfile:
|
|
path: /etc/modules-load.d/modules.conf
|
|
line: "br_netfilter"
|
|
|
|
- name: Install kubernetes library
|
|
apt:
|
|
name: python3-kubernetes
|
|
state: present
|
|
|
|
roles:
|
|
- role: geerlingguy.containerd
|
|
|
|
- name: Alpha Cluster
|
|
hosts:
|
|
- alpha
|
|
become: true
|
|
roles:
|
|
- role: geerlingguy.kubernetes
|
|
|