Compare commits

..

No commits in common. "5796aedcb4277650c25df7f54581f309f4bbe636" and "bf7954c5aec21ca2a4d3aade71eab74dbf6f32af" have entirely different histories.

14 changed files with 144 additions and 93 deletions

View File

@ -1,22 +0,0 @@
name: deployLibvirtGuests
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Ansible
run: |
apt update -y
apt install python3-pip -y
python3 -m pip install ansible
- name: Run playbook
uses: dawidd6/action-ansible-playbook@v2
with:
playbook: libvirtGuests.yaml
key: ${{secrets.SSH_PRIVATE_KEY}}
vault_password: ${{secrets.VAULT_PASSWORD}}
options: |
--inventory inventories/eom.dev.yaml

3
.gitmodules vendored
View File

@ -19,6 +19,3 @@
[submodule "roles/ericomeehan.libvirt-guest"] [submodule "roles/ericomeehan.libvirt-guest"]
path = roles/ericomeehan.libvirt-guest path = roles/ericomeehan.libvirt-guest
url = git@gitea.eom.dev:DevOps/ansible-role-libvirt-guest.git url = git@gitea.eom.dev:DevOps/ansible-role-libvirt-guest.git
[submodule "roles/ericomeehan.matrix-stack"]
path = roles/ericomeehan.matrix-stack
url = git@gitea.eom.dev:DevOps/ansible-role-matrix-stack.git

View File

@ -1,2 +1 @@
name: alpha-worker-0 name: alpha-worker-0
nvidia_driver_needed: true

View File

@ -4,13 +4,13 @@ all:
workstations: workstations:
hosts: hosts:
latitude-7230: latitude-7230:
latitude-7424:
inspiron-3670: inspiron-3670:
imac:
raspberrypi:
hypervisors: hypervisors:
hosts: hosts:
poweredge-r350: poweredge-r350:
poweredge-r720:
poweredge-t640: poweredge-t640:
vms: vms:

View File

@ -1,10 +0,0 @@
---
# playbook for libvirtGuests.yaml
- name: Libvirt guests
hosts: poweredge-r720
become: true
roles:
- role: ericomeehan.libvirtguest
vars:
libvirt_networks: {}
libvirt_guests: {}

159
main.yaml
View File

@ -40,15 +40,147 @@
- /data/gamma - /data/gamma
- /data/eric - /data/eric
- name: Setup virtualization - name: Prepare virtualization environments
hosts: hypervisors
become: true
tasks:
- name: Install packages for virtualization
apt:
update_cache: yes
name:
- bridge-utils
- genisoimage
- qemu-utils
- qemu-system-x86
- libvirt-daemon-system
- prometheus-libvirt-exporter
- python3-libvirt
- python3-lxml
state: present
- 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: Copy interfaces template
template:
src: interfaces.j2
dest: /etc/network/interfaces
- name: Reload sysctl configuration
command: sysctl --system
- name: Reload network service
service:
name: networking
state: restarted
- name: Deploy virtual machines
hosts: hypervisors hosts: hypervisors
become: true become: true
vars_files: vars_files:
- ../secrets.yaml - ../secrets.yaml
roles: tasks:
- role: ericomeehan.libvirt_guests - name: Define libvirt networks
community.libvirt.virt_net:
name: "{{ item.name }}"
command: define
xml: "{{ lookup('template', 'libvirt-network.xml.j2') }}"
loop: "{{ libvirt_networks }}"
- name: Create libvirt networks
community.libvirt.virt_net:
name: "{{ item.name }}"
command: create
loop: "{{ libvirt_networks }}"
- name: Autostart libvirt networks
community.libvirt.virt_net:
name: "{{ item.name }}"
autostart: true
loop: "{{ libvirt_networks }}"
- 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: vars:
doSetup: true 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 - name: Wait for manual tasks
hosts: localhost hosts: localhost
@ -64,8 +196,6 @@
- ../secrets.yaml - ../secrets.yaml
roles: roles:
- role: ericomeehan.ericomeehan - role: ericomeehan.ericomeehan
- role: ericomeehan.nvidia_driver
when: nvidia_driver_needed == true
- name: Initialize Kubernetes clusters - name: Initialize Kubernetes clusters
hosts: clusters hosts: clusters
@ -155,11 +285,6 @@
name: bitnami name: bitnami
repo_url: https://charts.bitnami.com/bitnami repo_url: https://charts.bitnami.com/bitnami
- name: Add nvidia repository
kubernetes.core.helm_repository:
name: nvidia
repo_url: https://helm.ngc.nvidia.com/nvidia
- name: Update Helm repos - name: Update Helm repos
command: helm repo update command: helm repo update
@ -268,18 +393,6 @@
ingress: ingress:
ingressClassName: nginx ingressClassName: nginx
- name: Deploy nvidia gpu operator
kubernetes.core.helm:
name: gpu-operator
chart_ref: nvidia/gpu-operator
release_namespace: gpu-operator
create_namespace: true
values:
driver:
enabled: false
toolkit:
enabled: false
- name: Port forward HTTP(S) to Ingress Controllers - name: Port forward HTTP(S) to Ingress Controllers
hosts: localhost hosts: localhost
tasks: tasks:

View File

@ -1,23 +0,0 @@
- name: Deploy nvdp
hosts: control_planes
become: true
tasks:
- name: Add nvdp repository
kubernetes.core.helm_repository:
name: nvidia
repo_url: https://helm.ngc.nvidia.com/nvidia
- name: Update Helm repos
command: helm repo update
- name: Deploy nvidia gpu operator
kubernetes.core.helm:
name: gpu-operator
chart_ref: nvidia/gpu-operator
release_namespace: gpu-operator
create_namespace: true
values:
driver:
enabled: false
toolkit:
enabled: false

@ -1 +1 @@
Subproject commit 148f933eb51b158e673dd41e21c631c925ab3899 Subproject commit 81b3f7827715a1433bb74ea4e53e60eec69ec9ac

@ -1 +1 @@
Subproject commit 969a46feb589453ec8b1a4fc803cdf6bb3ffd77d Subproject commit 4dc7f7917edb012b15268a4e94c81b55592130a5

@ -1 +1 @@
Subproject commit db0d438c699f33b2d143fd2fdfc3c314958932d5 Subproject commit d5681a95e437b86347c624abb6bb74c427444698

@ -1 +1 @@
Subproject commit 439661f40be5d5cb2ab167c44602a2792d450727 Subproject commit 45c0352dde33deab8c7a1a62f0d289014c617154

@ -1 +0,0 @@
Subproject commit eed66cd1834e81e7eb7c341f4f06d0354ce00f82

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

View File

@ -4,6 +4,4 @@
vars_files: vars_files:
- ../secrets.yaml - ../secrets.yaml
roles: roles:
- role: ericomeehan.matrix-stack - role: ericomeehan.eom
vars:
server_name: eom.dev