This commit is contained in:
Eric Meehan 2024-11-23 21:51:47 -05:00
parent d844bd3933
commit cff19d90ad
21 changed files with 198 additions and 44 deletions

8
.gitmodules vendored
View File

@ -1,18 +1,18 @@
[submodule "roles/ericomeehan.eom"] [submodule "roles/ericomeehan.eom"]
path = roles/ericomeehan.eom path = roles/ericomeehan.eom
url = git@git.eom.dev:eom/ansible-role-eom.git url = git@git.eom.dev:DevOps/ansible-role-eom.git
[submodule "roles/ericomeehan.debian"] [submodule "roles/ericomeehan.debian"]
path = roles/ericomeehan.debian path = roles/ericomeehan.debian
url = git@git.eom.dev:eom/ansible-role-debian.git url = git@git.eom.dev:DevOps/ansible-role-debian.git
[submodule "roles/ericomeehan.gondwana"] [submodule "roles/ericomeehan.gondwana"]
path = roles/ericomeehan.gondwana path = roles/ericomeehan.gondwana
url = git@git.eom.dev:eom/ansible-role-gondwana.git url = git@git.eom.dev:eom/ansible-role-gondwana.git
[submodule "roles/ericomeehan.ericomeehan"] [submodule "roles/ericomeehan.ericomeehan"]
path = roles/ericomeehan.ericomeehan path = roles/ericomeehan.ericomeehan
url = git@git.eom.dev:eom/ansible-role-ericomeehan.git url = git@git.eom.dev:eric/ansible-role-ericomeehan.git
[submodule "roles/ericomeehan.nvidia_driver"] [submodule "roles/ericomeehan.nvidia_driver"]
path = roles/ericomeehan.nvidia_driver path = roles/ericomeehan.nvidia_driver
url = git@git.eom.dev:eom/ansible-role-nvidia-driver.git url = git@git.eom.dev:DevOps/ansible-role-nvidia-driver.git
[submodule "roles/ericomeehan.kraken-bot"] [submodule "roles/ericomeehan.kraken-bot"]
path = roles/ericomeehan.kraken-bot path = roles/ericomeehan.kraken-bot
url = git@git.eom.dev:kraken/ansible-role-kraken-bot.git url = git@git.eom.dev:kraken/ansible-role-kraken-bot.git

View File

@ -1,6 +1,7 @@
--- ---
# Group vars for Kubernetes control plane nodes # Group vars for Kubernetes control plane nodes
kubernetes_role: control_plane kubernetes_role: control_plane
helm_version: 'v3.16.3'
open_ports: open_ports:
- interface: any - interface: any
protocol: tcp protocol: tcp

View File

@ -0,0 +1 @@
name: alpha-worker-10

View File

@ -0,0 +1 @@
name: alpha-worker-11

View File

@ -0,0 +1 @@
name: alpha-worker-12

View File

@ -0,0 +1 @@
name: alpha-worker-4

View File

@ -0,0 +1 @@
name: alpha-worker-5

View File

@ -0,0 +1 @@
name: alpha-worker-6

View File

@ -0,0 +1 @@
name: alpha-worker-7

View File

@ -0,0 +1 @@
name: alpha-worker-8

View File

@ -0,0 +1 @@
name: alpha-worker-9

View File

@ -1 +0,0 @@
name: gamma-worker-0

View File

@ -1 +0,0 @@
name: gamma-worker-1

View File

@ -1 +0,0 @@
name: gamma-worker-2

View File

@ -1 +0,0 @@
name: gamma-worker-3

View File

@ -19,15 +19,14 @@ libvirt_guests:
- alpha-worker-1 - alpha-worker-1
- alpha-worker-2 - alpha-worker-2
- alpha-worker-3 - alpha-worker-3
- beta-control-plane - alpha-worker-4
- beta-worker-0 - alpha-worker-5
- beta-worker-1 - alpha-worker-6
- beta-worker-2 - alpha-worker-7
- beta-worker-3 - alpha-worker-8
- gamma-control-plane - alpha-worker-9
- gamma-worker-0 - alpha-worker-10
- gamma-worker-1 - alpha-worker-11
- gamma-worker-2 - alpha-worker-12
- gamma-worker-3
nfs_exports: ["/data *(rw,sync,no_root_squash)"] nfs_exports: ["/data *(rw,sync,no_root_squash)"]
nvidia_driver_needed: true nvidia_driver_needed: true

View File

@ -19,22 +19,21 @@ all:
control_planes: control_planes:
hosts: hosts:
alpha-control-plane: alpha-control-plane:
beta-control-plane:
gamma-control-plane:
workers: workers:
hosts: hosts:
alpha-worker-0: alpha-worker-0:
alpha-worker-1: alpha-worker-1:
alpha-worker-2: alpha-worker-2:
alpha-worker-3: alpha-worker-3:
beta-worker-0: alpha-worker-4:
beta-worker-1: alpha-worker-5:
beta-worker-2: alpha-worker-6:
beta-worker-3: alpha-worker-7:
gamma-worker-0: alpha-worker-8:
gamma-worker-1: alpha-worker-9:
gamma-worker-2: alpha-worker-10:
gamma-worker-3: alpha-worker-11:
alpha-worker-12:
alpha: alpha:
hosts: hosts:
alpha-control-plane: alpha-control-plane:
@ -42,17 +41,12 @@ all:
alpha-worker-1: alpha-worker-1:
alpha-worker-2: alpha-worker-2:
alpha-worker-3: alpha-worker-3:
beta: alpha-worker-4:
hosts: alpha-worker-5:
beta-control-plane: alpha-worker-6:
beta-worker-0: alpha-worker-7:
beta-worker-1: alpha-worker-8:
beta-worker-2: alpha-worker-9:
beta-worker-3: alpha-worker-10:
gamma: alpha-worker-11:
hosts: alpha-worker-12:
gamma-control-plane:
gamma-worker-0:
gamma-worker-1:
gamma-worker-2:
gamma-worker-3:

View File

@ -53,6 +53,7 @@
- qemu-utils - qemu-utils
- qemu-system-x86 - qemu-system-x86
- libvirt-daemon-system - libvirt-daemon-system
- prometheus-libvirt-exporter
- python3-libvirt - python3-libvirt
- python3-lxml - python3-lxml
state: present state: present

154
reassign.yaml Normal file
View File

@ -0,0 +1,154 @@
- 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

@ -1 +1 @@
Subproject commit 67778bbe57120fb67dec9d019559cf911af3b0a6 Subproject commit e8178f218d8fcbf58a46b928ee7451901e104125

@ -1 +1 @@
Subproject commit 4b9534a27ef2c7a096f58959d9762647f524b96d Subproject commit 7a3c04febc0ab5d6370da362ab80d862bfc3dd39