mirror of
				https://github.com/optim-enterprises-bv/homelab.git
				synced 2025-11-03 19:37:55 +00:00 
			
		
		
		
	feat(cloud-init): Kubeadm cluster
wip: DNS shenanigans
This commit is contained in:
		
				
					committed by
					
						
						Vegard Stenhjem Hagen
					
				
			
			
				
	
			
			
			
						parent
						
							d035bec693
						
					
				
				
					commit
					e343d41b85
				
			
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -4,6 +4,7 @@ charts/example
 | 
				
			|||||||
*secret*.yaml
 | 
					*secret*.yaml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**/.terraform/*
 | 
					**/.terraform/*
 | 
				
			||||||
 | 
					**/output
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*.tfstate
 | 
					*.tfstate
 | 
				
			||||||
*.tfstate.*
 | 
					*.tfstate.*
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										10
									
								
								PROXMOX.md
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								PROXMOX.md
									
									
									
									
									
								
							@@ -35,8 +35,6 @@ dmesg | grep -e DMAR -e IOMMU
 | 
				
			|||||||
DMAR: IOMMU enabled
 | 
					DMAR: IOMMU enabled
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Nvidia
 | 
					Nvidia
 | 
				
			||||||
```shell
 | 
					```shell
 | 
				
			||||||
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf 
 | 
					echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf 
 | 
				
			||||||
@@ -53,10 +51,16 @@ pvesh get /nodes/<NODE_NAME>/hardware/pci --pci-class-blacklist ""
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
https://3os.org/infrastructure/proxmox/gpu-passthrough/igpu-passthrough-to-vm/#linux-virtual-machine-igpu-passthrough-configuration
 | 
					https://3os.org/infrastructure/proxmox/gpu-passthrough/igpu-passthrough-to-vm/#linux-virtual-machine-igpu-passthrough-configuration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In Guest VM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```shell
 | 
					```shell
 | 
				
			||||||
 sudo lspci -nnv | grep VGA
 | 
					sudo lspci -nnv | grep VGA
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Mapped device
 | 
				
			||||||
 | 
					https://pve.proxmox.com/pve-docs/pve-admin-guide.html#resource_mapping
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Pass through Disk
 | 
					## Pass through Disk
 | 
				
			||||||
https://pve.proxmox.com/wiki/Passthrough_Physical_Disk_to_Virtual_Machine_(VM)
 | 
					https://pve.proxmox.com/wiki/Passthrough_Physical_Disk_to_Virtual_Machine_(VM)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										86
									
								
								machines/euclid/cloud-init/control-plane.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								machines/euclid/cloud-init/control-plane.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,86 @@
 | 
				
			|||||||
 | 
					#cloud-config
 | 
				
			||||||
 | 
					users:
 | 
				
			||||||
 | 
					  - name: ${username}
 | 
				
			||||||
 | 
					    groups:
 | 
				
			||||||
 | 
					      - sudo
 | 
				
			||||||
 | 
					    shell: /bin/bash
 | 
				
			||||||
 | 
					    ssh_authorized_keys:
 | 
				
			||||||
 | 
					      - ${pub-key}
 | 
				
			||||||
 | 
					    sudo: ALL=(ALL) NOPASSWD:ALL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					network:
 | 
				
			||||||
 | 
					  version: 1
 | 
				
			||||||
 | 
					  config:
 | 
				
			||||||
 | 
					    - type: nameserver
 | 
				
			||||||
 | 
					      address:
 | 
				
			||||||
 | 
					        - 1.1.1.1
 | 
				
			||||||
 | 
					        - 8.8.8.8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					hostname: ${hostname}
 | 
				
			||||||
 | 
					create_hostname_file: true
 | 
				
			||||||
 | 
					package_update: true
 | 
				
			||||||
 | 
					package_upgrade: true
 | 
				
			||||||
 | 
					locale: en_US.UTF-8
 | 
				
			||||||
 | 
					timezone: Europe/Oslo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					write_files:
 | 
				
			||||||
 | 
					  - path: /etc/modules-load.d/k8s.conf
 | 
				
			||||||
 | 
					    content: |
 | 
				
			||||||
 | 
					      overlay
 | 
				
			||||||
 | 
					      br_netfilter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - path: /etc/sysctl.d/k8s.conf
 | 
				
			||||||
 | 
					    content: |
 | 
				
			||||||
 | 
					      net.bridge.bridge-nf-call-ip6tables = 1
 | 
				
			||||||
 | 
					      net.bridge.bridge-nf-call-iptables  = 1
 | 
				
			||||||
 | 
					      net.ipv4.ip_forward                 = 1
 | 
				
			||||||
 | 
					  # https://serverfault.com/questions/1148659/overwriting-provider-dns-via-cloud-init
 | 
				
			||||||
 | 
					  - path: /etc/systemd/resolved.conf.d/dns_servers.conf
 | 
				
			||||||
 | 
					    content: |
 | 
				
			||||||
 | 
					      [Resolve]
 | 
				
			||||||
 | 
					      DNS=1.1.1.1 8.8.8.8
 | 
				
			||||||
 | 
					      Domains=~.
 | 
				
			||||||
 | 
					    permissions: '0644'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					packages:
 | 
				
			||||||
 | 
					  - qemu-guest-agent
 | 
				
			||||||
 | 
					  - net-tools
 | 
				
			||||||
 | 
					  - vim
 | 
				
			||||||
 | 
					  - apt-transport-https
 | 
				
			||||||
 | 
					  - ca-certificates
 | 
				
			||||||
 | 
					  - curl
 | 
				
			||||||
 | 
					  - gpg
 | 
				
			||||||
 | 
					  - open-iscsi
 | 
				
			||||||
 | 
					  - jq
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					runcmd:
 | 
				
			||||||
 | 
					  - systemctl enable qemu-guest-agent
 | 
				
			||||||
 | 
					  - systemctl start qemu-guest-agent
 | 
				
			||||||
 | 
					  - localectl set-locale LANG=en_US.UTF-8
 | 
				
			||||||
 | 
					  - curl -fsSL https://pkgs.k8s.io/core:/stable:/v${k8s-version}/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
 | 
				
			||||||
 | 
					  - echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v${k8s-version}/deb/ /' | tee /etc/apt/sources.list.d/kubernetes.list
 | 
				
			||||||
 | 
					  - apt update
 | 
				
			||||||
 | 
					  - apt install -y kubelet kubeadm kubectl
 | 
				
			||||||
 | 
					  - apt-mark hold kubelet kubeadm kubectl
 | 
				
			||||||
 | 
					  - apt install -y runc containerd
 | 
				
			||||||
 | 
					  - containerd config default | tee /etc/containerd/config.toml
 | 
				
			||||||
 | 
					  - sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
 | 
				
			||||||
 | 
					  - modprobe overlay
 | 
				
			||||||
 | 
					  - modprobe br_netfilter
 | 
				
			||||||
 | 
					  - sysctl --system
 | 
				
			||||||
 | 
					  - systemctl restart containerd
 | 
				
			||||||
 | 
					  - systemctl restart systemd-resolved
 | 
				
			||||||
 | 
					  - ${kubeadm-cmd}
 | 
				
			||||||
 | 
					  - mkdir -p /home/${username}/.kube
 | 
				
			||||||
 | 
					  - cp /etc/kubernetes/admin.conf /home/${username}/.kube/config
 | 
				
			||||||
 | 
					  - chown -R ${username}:${username} /home/${username}/.kube
 | 
				
			||||||
 | 
					  - curl -sfLO --fail https://github.com/cilium/cilium-cli/releases/download/v${cilium-cli-version}/cilium-linux-amd64.tar.gz
 | 
				
			||||||
 | 
					  - tar xzvfC cilium-linux-amd64.tar.gz /usr/local/bin
 | 
				
			||||||
 | 
					  - rm cilium-linux-amd64.tar.gz
 | 
				
			||||||
 | 
					  - ${cilium-cli-cmd}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					power_state:
 | 
				
			||||||
 | 
					  delay: now
 | 
				
			||||||
 | 
					  mode: reboot
 | 
				
			||||||
 | 
					  message: Rebooting after cloud-init completion
 | 
				
			||||||
 | 
					  condition: true
 | 
				
			||||||
@@ -5,10 +5,17 @@ users:
 | 
				
			|||||||
      - sudo
 | 
					      - sudo
 | 
				
			||||||
    shell: /bin/bash
 | 
					    shell: /bin/bash
 | 
				
			||||||
    ssh_authorized_keys:
 | 
					    ssh_authorized_keys:
 | 
				
			||||||
      - ${pub_key}
 | 
					      - ${pub-key}
 | 
				
			||||||
    sudo: ALL=(ALL) NOPASSWD:ALL
 | 
					    sudo: ALL=(ALL) NOPASSWD:ALL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
manage_etc_hosts: true
 | 
					network:
 | 
				
			||||||
 | 
					  version: 1
 | 
				
			||||||
 | 
					  config:
 | 
				
			||||||
 | 
					    - type: nameserver
 | 
				
			||||||
 | 
					      address:
 | 
				
			||||||
 | 
					        - 1.1.1.1
 | 
				
			||||||
 | 
					        - 8.8.8.8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
hostname: ${hostname}
 | 
					hostname: ${hostname}
 | 
				
			||||||
create_hostname_file: true
 | 
					create_hostname_file: true
 | 
				
			||||||
package_update: true
 | 
					package_update: true
 | 
				
			||||||
@@ -27,6 +34,13 @@ write_files:
 | 
				
			|||||||
      net.bridge.bridge-nf-call-ip6tables = 1
 | 
					      net.bridge.bridge-nf-call-ip6tables = 1
 | 
				
			||||||
      net.bridge.bridge-nf-call-iptables  = 1
 | 
					      net.bridge.bridge-nf-call-iptables  = 1
 | 
				
			||||||
      net.ipv4.ip_forward                 = 1
 | 
					      net.ipv4.ip_forward                 = 1
 | 
				
			||||||
 | 
					  # https://serverfault.com/questions/1148659/overwriting-provider-dns-via-cloud-init
 | 
				
			||||||
 | 
					  - path: /etc/systemd/resolved.conf.d/dns_servers.conf
 | 
				
			||||||
 | 
					    content: |
 | 
				
			||||||
 | 
					      [Resolve]
 | 
				
			||||||
 | 
					      DNS=1.1.1.1 8.8.8.8
 | 
				
			||||||
 | 
					      Domains=~.
 | 
				
			||||||
 | 
					    permissions: '0644'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
packages:
 | 
					packages:
 | 
				
			||||||
  - qemu-guest-agent
 | 
					  - qemu-guest-agent
 | 
				
			||||||
@@ -43,8 +57,8 @@ runcmd:
 | 
				
			|||||||
  - systemctl enable qemu-guest-agent
 | 
					  - systemctl enable qemu-guest-agent
 | 
				
			||||||
  - systemctl start qemu-guest-agent
 | 
					  - systemctl start qemu-guest-agent
 | 
				
			||||||
  - localectl set-locale LANG=en_US.UTF-8
 | 
					  - localectl set-locale LANG=en_US.UTF-8
 | 
				
			||||||
  - curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
 | 
					  - curl -fsSL https://pkgs.k8s.io/core:/stable:/v${k8s-version}/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
 | 
				
			||||||
  - echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | tee /etc/apt/sources.list.d/kubernetes.list
 | 
					  - echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v${k8s-version}/deb/ /' | tee /etc/apt/sources.list.d/kubernetes.list
 | 
				
			||||||
  - apt update
 | 
					  - apt update
 | 
				
			||||||
  - apt install -y kubelet kubeadm kubectl
 | 
					  - apt install -y kubelet kubeadm kubectl
 | 
				
			||||||
  - apt-mark hold kubelet kubeadm kubectl
 | 
					  - apt-mark hold kubelet kubeadm kubectl
 | 
				
			||||||
@@ -55,3 +69,11 @@ runcmd:
 | 
				
			|||||||
  - modprobe br_netfilter
 | 
					  - modprobe br_netfilter
 | 
				
			||||||
  - sysctl --system
 | 
					  - sysctl --system
 | 
				
			||||||
  - systemctl restart containerd
 | 
					  - systemctl restart containerd
 | 
				
			||||||
 | 
					  - systemctl restart systemd-resolved
 | 
				
			||||||
 | 
					  - ${kubeadm-cmd}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					power_state:
 | 
				
			||||||
 | 
					  delay: now
 | 
				
			||||||
 | 
					  mode: reboot
 | 
				
			||||||
 | 
					  message: Rebooting after cloud-init completion
 | 
				
			||||||
 | 
					  condition: true
 | 
				
			||||||
@@ -1,2 +1,2 @@
 | 
				
			|||||||
wget https://github.com/home-assistant/operating-system/releases/download/12.0/haos_ova-12.0.qcow2.xz
 | 
					wget https://github.com/home-assistant/operating-system/releases/download/12.1/haos_ova-12.1.qcow2.xz
 | 
				
			||||||
xz -d haos_ova-12.0.qcow2.xz
 | 
					xz -d haos_ova-12.1.qcow2.xz
 | 
				
			||||||
@@ -26,3 +26,13 @@ variable "vm_pub-key" {
 | 
				
			|||||||
  description = "vm username"
 | 
					  description = "vm username"
 | 
				
			||||||
  type        = string
 | 
					  type        = string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					variable "k8s-version" {
 | 
				
			||||||
 | 
					  description = "Kubernetes version"
 | 
				
			||||||
 | 
					  type = string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					variable "cilium-cli-version" {
 | 
				
			||||||
 | 
					  description = "Cilium CLI version"
 | 
				
			||||||
 | 
					  type = string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,8 +5,8 @@ resource "proxmox_virtual_environment_file" "haos_generic_image" {
 | 
				
			|||||||
  datastore_id = "local"
 | 
					  datastore_id = "local"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  source_file {
 | 
					  source_file {
 | 
				
			||||||
    path      = "images/haos_ova-12.0.qcow2"
 | 
					    path      = "images/haos_ova-12.1.qcow2"
 | 
				
			||||||
    file_name = "haos_ova-12.0.img"
 | 
					    file_name = "haos_ova-12.1.img"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,31 +19,19 @@ resource "proxmox_virtual_environment_file" "cloud-init-ctrl-01" {
 | 
				
			|||||||
  datastore_id = "local"
 | 
					  datastore_id = "local"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  source_raw {
 | 
					  source_raw {
 | 
				
			||||||
    data = templatefile("./cloud-init/user.yaml", {
 | 
					    data = templatefile("./cloud-init/control-plane.yaml", {
 | 
				
			||||||
      username = var.vm_user
 | 
					 | 
				
			||||||
      pub_key  = var.vm_pub-key
 | 
					 | 
				
			||||||
      hostname           = "k8s-ctrl-01"
 | 
					      hostname           = "k8s-ctrl-01"
 | 
				
			||||||
 | 
					      username           = var.vm_user
 | 
				
			||||||
 | 
					      pub-key            = var.vm_pub-key
 | 
				
			||||||
 | 
					      k8s-version        = var.k8s-version
 | 
				
			||||||
 | 
					      kubeadm-cmd        = "kubeadm init --skip-phases=addon/kube-proxy"
 | 
				
			||||||
 | 
					      cilium-cli-version = var.cilium-cli-version
 | 
				
			||||||
 | 
					      cilium-cli-cmd     = "KUBECONFIG=/etc/kubernetes/admin.conf cilium install --set kubeProxyReplacement=true"
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    file_name = "cloud-init-k8s-ctrl-01.yaml"
 | 
					    file_name = "cloud-init-k8s-ctrl-01.yaml"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
resource "proxmox_virtual_environment_file" "cloud-init-work-01" {
 | 
					 | 
				
			||||||
  provider     = proxmox.euclid
 | 
					 | 
				
			||||||
  node_name    = var.euclid.node_name
 | 
					 | 
				
			||||||
  content_type = "snippets"
 | 
					 | 
				
			||||||
  datastore_id = "local"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  source_raw {
 | 
					 | 
				
			||||||
    data = templatefile("./cloud-init/user.yaml", {
 | 
					 | 
				
			||||||
      username = var.vm_user
 | 
					 | 
				
			||||||
      pub_key  = var.vm_pub-key
 | 
					 | 
				
			||||||
      hostname = "k8s-work-01"
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
    file_name = "cloud-init-k8s-work-01.yaml"
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
resource "proxmox_virtual_environment_vm" "k8s-ctrl-01" {
 | 
					resource "proxmox_virtual_environment_vm" "k8s-ctrl-01" {
 | 
				
			||||||
  provider  = proxmox.euclid
 | 
					  provider  = proxmox.euclid
 | 
				
			||||||
  node_name = var.euclid.node_name
 | 
					  node_name = var.euclid.node_name
 | 
				
			||||||
@@ -113,6 +101,63 @@ resource "proxmox_virtual_environment_vm" "k8s-ctrl-01" {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					output "ctrl_01_ipv4_address" {
 | 
				
			||||||
 | 
					  depends_on = [proxmox_virtual_environment_vm.k8s-ctrl-01]
 | 
				
			||||||
 | 
					  value      = proxmox_virtual_environment_vm.k8s-ctrl-01.ipv4_addresses[1][0]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					resource "local_file" "ctrl-01-ip" {
 | 
				
			||||||
 | 
					  content         = proxmox_virtual_environment_vm.k8s-ctrl-01.ipv4_addresses[1][0]
 | 
				
			||||||
 | 
					  filename        = "output/ctrl-01-ip.txt"
 | 
				
			||||||
 | 
					  file_permission = "0644"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module "sleep" {
 | 
				
			||||||
 | 
					  depends_on   = [local_file.ctrl-01-ip]
 | 
				
			||||||
 | 
					  source       = "Invicton-Labs/shell-data/external"
 | 
				
			||||||
 | 
					  version      = "0.4.2"
 | 
				
			||||||
 | 
					  command_unix = "sleep 120"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module "kube-config" {
 | 
				
			||||||
 | 
					  depends_on   = [module.sleep]
 | 
				
			||||||
 | 
					  source       = "Invicton-Labs/shell-resource/external"
 | 
				
			||||||
 | 
					  version      = "0.4.1"
 | 
				
			||||||
 | 
					  command_unix = "ssh -o StrictHostKeyChecking=no ${var.vm_user}@${local_file.ctrl-01-ip.content} cat /home/${var.vm_user}/.kube/config"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					resource "local_file" "kube-config" {
 | 
				
			||||||
 | 
					  content         = module.kube-config.stdout
 | 
				
			||||||
 | 
					  filename        = "output/config"
 | 
				
			||||||
 | 
					  file_permission = "0600"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module "kubeadm-join" {
 | 
				
			||||||
 | 
					  depends_on   = [local_file.kube-config]
 | 
				
			||||||
 | 
					  source       = "Invicton-Labs/shell-resource/external"
 | 
				
			||||||
 | 
					  version      = "0.4.1"
 | 
				
			||||||
 | 
					  # https://stackoverflow.com/questions/21383806/how-can-i-force-ssh-to-accept-a-new-host-fingerprint-from-the-command-line
 | 
				
			||||||
 | 
					  command_unix = "ssh -o StrictHostKeyChecking=no ${var.vm_user}@${local_file.ctrl-01-ip.content} /usr/bin/kubeadm token create --print-join-command"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					resource "proxmox_virtual_environment_file" "cloud-init-work-01" {
 | 
				
			||||||
 | 
					  provider     = proxmox.euclid
 | 
				
			||||||
 | 
					  node_name    = var.euclid.node_name
 | 
				
			||||||
 | 
					  content_type = "snippets"
 | 
				
			||||||
 | 
					  datastore_id = "local"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  source_raw {
 | 
				
			||||||
 | 
					    data = templatefile("./cloud-init/worker.yaml", {
 | 
				
			||||||
 | 
					      hostname    = "k8s-work-01"
 | 
				
			||||||
 | 
					      username    = var.vm_user
 | 
				
			||||||
 | 
					      pub-key     = var.vm_pub-key
 | 
				
			||||||
 | 
					      k8s-version = var.k8s-version
 | 
				
			||||||
 | 
					      kubeadm-cmd = module.kubeadm-join.stdout
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    file_name = "cloud-init-k8s-work-01.yaml"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
resource "proxmox_virtual_environment_vm" "k8s-work-01" {
 | 
					resource "proxmox_virtual_environment_vm" "k8s-work-01" {
 | 
				
			||||||
  provider  = proxmox.euclid
 | 
					  provider  = proxmox.euclid
 | 
				
			||||||
  node_name = var.euclid.node_name
 | 
					  node_name = var.euclid.node_name
 | 
				
			||||||
@@ -183,17 +228,12 @@ resource "proxmox_virtual_environment_vm" "k8s-work-01" {
 | 
				
			|||||||
  hostpci {
 | 
					  hostpci {
 | 
				
			||||||
    # Passthrough iGPU
 | 
					    # Passthrough iGPU
 | 
				
			||||||
    device  = "hostpci0"
 | 
					    device  = "hostpci0"
 | 
				
			||||||
    id     = "0000:00:02"
 | 
					    #id     = "0000:00:02"
 | 
				
			||||||
 | 
					    mapping = "iGPU"
 | 
				
			||||||
    pcie    = true
 | 
					    pcie    = true
 | 
				
			||||||
    rombar  = true
 | 
					    rombar  = true
 | 
				
			||||||
    xvga    = false
 | 
					    xvga    = false
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
output "ctrl_01_ipv4_address" {
 | 
					 | 
				
			||||||
  depends_on = [proxmox_virtual_environment_vm.k8s-ctrl-01]
 | 
					 | 
				
			||||||
  value      = proxmox_virtual_environment_vm.k8s-ctrl-01.ipv4_addresses[1][0]
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
output "work_01_ipv4_address" {
 | 
					output "work_01_ipv4_address" {
 | 
				
			||||||
@@ -201,13 +241,7 @@ output "work_01_ipv4_address" {
 | 
				
			|||||||
  value      = proxmox_virtual_environment_vm.k8s-work-01.ipv4_addresses[1][0]
 | 
					  value      = proxmox_virtual_environment_vm.k8s-work-01.ipv4_addresses[1][0]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
resource "local_file" "ctrl_01_ip" {
 | 
					resource "local_file" "work-01-ip" {
 | 
				
			||||||
  content         = proxmox_virtual_environment_vm.k8s-ctrl-01.ipv4_addresses[1][0]
 | 
					 | 
				
			||||||
  filename        = "output/ctrl-01-ip.txt"
 | 
					 | 
				
			||||||
  file_permission = "0644"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
resource "local_file" "work_01_ip" {
 | 
					 | 
				
			||||||
  content         = proxmox_virtual_environment_vm.k8s-work-01.ipv4_addresses[1][0]
 | 
					  content         = proxmox_virtual_environment_vm.k8s-work-01.ipv4_addresses[1][0]
 | 
				
			||||||
  filename        = "output/work-01-ip.txt"
 | 
					  filename        = "output/work-01-ip.txt"
 | 
				
			||||||
  file_permission = "0644"
 | 
					  file_permission = "0644"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user