PowerEdge R720 QEMU & Kubernetes Setup (#23)
* Added 5 VMs to Alpha cluster. * Created personal dev node
This commit is contained in:
parent
3e8c8a3566
commit
9015a48417
4
host_vars/alpha-worker-13.yaml
Normal file
4
host_vars/alpha-worker-13.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
name: alpha-worker-13
|
||||||
|
vcpu:
|
||||||
|
placement: static
|
||||||
|
value: 2
|
4
host_vars/alpha-worker-14.yaml
Normal file
4
host_vars/alpha-worker-14.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
name: alpha-worker-14
|
||||||
|
vcpu:
|
||||||
|
placement: static
|
||||||
|
value: 2
|
4
host_vars/alpha-worker-15.yaml
Normal file
4
host_vars/alpha-worker-15.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
name: alpha-worker-15
|
||||||
|
vcpu:
|
||||||
|
placement: static
|
||||||
|
value: 2
|
4
host_vars/alpha-worker-16.yaml
Normal file
4
host_vars/alpha-worker-16.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
name: alpha-worker-16
|
||||||
|
vcpu:
|
||||||
|
placement: static
|
||||||
|
value: 2
|
4
host_vars/alpha-worker-17.yaml
Normal file
4
host_vars/alpha-worker-17.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
name: alpha-worker-17
|
||||||
|
vcpu:
|
||||||
|
placement: static
|
||||||
|
value: 2
|
1
host_vars/evm.yaml
Normal file
1
host_vars/evm.yaml
Normal file
@ -0,0 +1 @@
|
|||||||
|
name: evm
|
17
host_vars/poweredge-r720.yaml
Normal file
17
host_vars/poweredge-r720.yaml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
# Host vars for poweredge-r720
|
||||||
|
libvirt_networks:
|
||||||
|
- name: wan
|
||||||
|
forward:
|
||||||
|
mode: bridge
|
||||||
|
bridge:
|
||||||
|
name: wan
|
||||||
|
dev: eno1
|
||||||
|
libvirt_guests:
|
||||||
|
- alpha-worker-13
|
||||||
|
- alpha-worker-14
|
||||||
|
- alpha-worker-15
|
||||||
|
- alpha-worker-16
|
||||||
|
- alpha-worker-17
|
||||||
|
- evm
|
||||||
|
nfs_exports: ["/data *(rw,sync,no_root_squash)"]
|
@ -15,6 +15,9 @@ all:
|
|||||||
|
|
||||||
vms:
|
vms:
|
||||||
children:
|
children:
|
||||||
|
user:
|
||||||
|
hosts:
|
||||||
|
evm:
|
||||||
clusters:
|
clusters:
|
||||||
children:
|
children:
|
||||||
control_planes:
|
control_planes:
|
||||||
@ -35,6 +38,11 @@ all:
|
|||||||
alpha-worker-10:
|
alpha-worker-10:
|
||||||
alpha-worker-11:
|
alpha-worker-11:
|
||||||
alpha-worker-12:
|
alpha-worker-12:
|
||||||
|
alpha-worker-13:
|
||||||
|
alpha-worker-14:
|
||||||
|
alpha-worker-15:
|
||||||
|
alpha-worker-16:
|
||||||
|
alpha-worker-17:
|
||||||
alpha:
|
alpha:
|
||||||
hosts:
|
hosts:
|
||||||
alpha-control-plane:
|
alpha-control-plane:
|
||||||
@ -51,3 +59,8 @@ all:
|
|||||||
alpha-worker-10:
|
alpha-worker-10:
|
||||||
alpha-worker-11:
|
alpha-worker-11:
|
||||||
alpha-worker-12:
|
alpha-worker-12:
|
||||||
|
alpha-worker-13:
|
||||||
|
alpha-worker-14:
|
||||||
|
alpha-worker-15:
|
||||||
|
alpha-worker-16:
|
||||||
|
alpha-worker-17:
|
||||||
|
253
poweredge-r720.yaml
Normal file
253
poweredge-r720.yaml
Normal file
@ -0,0 +1,253 @@
|
|||||||
|
---
|
||||||
|
# Playbook for eom.dev
|
||||||
|
- name: Initialize hypervisors
|
||||||
|
hosts: poweredge-r720
|
||||||
|
become: true
|
||||||
|
vars_files:
|
||||||
|
- ../secrets.yaml
|
||||||
|
roles:
|
||||||
|
- role: ericomeehan.debian
|
||||||
|
- role: ericomeehan.ericomeehan
|
||||||
|
|
||||||
|
- name: Initialize Network File Systems
|
||||||
|
hosts: poweredge-r720
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- role: geerlingguy.nfs
|
||||||
|
tasks:
|
||||||
|
- name: Create NFS directories
|
||||||
|
file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: directory
|
||||||
|
loop:
|
||||||
|
- /data/alpha
|
||||||
|
- /data/beta
|
||||||
|
- /data/gamma
|
||||||
|
|
||||||
|
- name: Deploy virtual machines
|
||||||
|
hosts: poweredge-r720
|
||||||
|
become: true
|
||||||
|
vars_files:
|
||||||
|
- ../secrets.yaml
|
||||||
|
pre_tasks:
|
||||||
|
- name: Install packages for virtualization
|
||||||
|
apt:
|
||||||
|
update_cache: yes
|
||||||
|
name:
|
||||||
|
- bridge-utils
|
||||||
|
- genisoimage
|
||||||
|
- qemu-utils
|
||||||
|
- qemu-system-x86
|
||||||
|
- libvirt-daemon-system
|
||||||
|
- 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: 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:
|
||||||
|
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-13
|
||||||
|
- alpha-worker-14
|
||||||
|
- alpha-worker-15
|
||||||
|
- alpha-worker-16
|
||||||
|
- alpha-worker-17
|
||||||
|
- evm
|
||||||
|
become: true
|
||||||
|
vars_files:
|
||||||
|
- ../secrets.yaml
|
||||||
|
roles:
|
||||||
|
- role: ericomeehan.ericomeehan
|
||||||
|
|
||||||
|
- name: Initialize Kubernetes clusters
|
||||||
|
hosts:
|
||||||
|
- alpha-worker-13
|
||||||
|
- alpha-worker-14
|
||||||
|
- alpha-worker-15
|
||||||
|
- alpha-worker-16
|
||||||
|
- alpha-worker-17
|
||||||
|
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-control-plane
|
||||||
|
- alpha-worker-13
|
||||||
|
- alpha-worker-14
|
||||||
|
- alpha-worker-15
|
||||||
|
- alpha-worker-16
|
||||||
|
- alpha-worker-17
|
||||||
|
become: true
|
||||||
|
roles:
|
||||||
|
- role: geerlingguy.kubernetes
|
||||||
|
|
||||||
|
- name: Deploy base Kubernetes resources
|
||||||
|
hosts: alpha-control-plane
|
||||||
|
become: true
|
||||||
|
tasks:
|
||||||
|
- name: Deploy NFS Provisioner
|
||||||
|
kubernetes.core.helm:
|
||||||
|
name: r720-nfs-subdir-external-provisioner
|
||||||
|
chart_ref: nfs-subdir-external-provisioner/nfs-subdir-external-provisioner
|
||||||
|
release_namespace: r720-nfs-provisioner
|
||||||
|
create_namespace: true
|
||||||
|
values:
|
||||||
|
nfs:
|
||||||
|
server: poweredge-r720
|
||||||
|
path: "/data/alpha"
|
||||||
|
storageClass:
|
||||||
|
defaultClass: false
|
||||||
|
name: r720-nfs-client
|
@ -1 +1 @@
|
|||||||
Subproject commit 410e87d127cdc942f01bbed09b6a6c1ba041d237
|
Subproject commit 5de5270b7346a6b4a3c69fbea3aa56116f158547
|
Loading…
Reference in New Issue
Block a user