diff --git a/kubernetes-kvm-terraform/kubernetes-deployments/flux.md b/kubernetes-kvm-terraform/kubernetes-deployments/flux.md index e69de29..4acdac7 100644 --- a/kubernetes-kvm-terraform/kubernetes-deployments/flux.md +++ b/kubernetes-kvm-terraform/kubernetes-deployments/flux.md @@ -0,0 +1,13 @@ +```bash +flux bootstrap gitea \ + --owner=kacerr \ + --repository=home-kubernetes \ + --branch=main \ + --path=gitops/home-kubernetes \ + --hostname=gitea.home.hrajfrisbee.cz \ + --personal \ + --token-auth + + +flux token: 0917566fe2c7d11cb7b46618f076003f92477352 +``` \ No newline at end of file diff --git a/kubernetes-kvm-terraform/kubernetes-deployments/metrics-server b/kubernetes-kvm-terraform/kubernetes-deployments/metrics-server index e69de29..006e46a 100644 --- a/kubernetes-kvm-terraform/kubernetes-deployments/metrics-server +++ b/kubernetes-kvm-terraform/kubernetes-deployments/metrics-server @@ -0,0 +1,3 @@ +```bash +kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml +``` \ No newline at end of file diff --git a/kubernetes-kvm-terraform/kubernetes-deployments/readme.md b/kubernetes-kvm-terraform/kubernetes-deployments/readme.md index 5b88096..0b8103b 100644 --- a/kubernetes-kvm-terraform/kubernetes-deployments/readme.md +++ b/kubernetes-kvm-terraform/kubernetes-deployments/readme.md @@ -34,8 +34,8 @@ driver: targetGroupInitiatorGroup: 1 targetGroupAuthType: "None" zfs: - datasetParentName: "pool-6g/tank/k8s/vols" - detachedSnapshotsDatasetParentName: "pool-6g/tank/k8s/snaps" + datasetParentName: "raid-1-4g/tank/k8s/vols" + detachedSnapshotsDatasetParentName: "raid-1-4g/tank/k8s/snaps" storageClasses: - name: freenas-iscsi diff --git a/kubernetes-kvm-terraform/kubernetes-deployments/values.yaml b/kubernetes-kvm-terraform/kubernetes-deployments/values.yaml index 9267253..b27d1b0 100644 --- a/kubernetes-kvm-terraform/kubernetes-deployments/values.yaml +++ b/kubernetes-kvm-terraform/kubernetes-deployments/values.yaml @@ -27,8 +27,8 @@ driver: targetGroupInitiatorGroup: 1 targetGroupAuthType: "None" zfs: - datasetParentName: "pool-6g/tank/k8s/vols" - detachedSnapshotsDatasetParentName: "pool-6g/tank/k8s/snaps" + datasetParentName: "raid-1-4g/tank/k8s/vols" + detachedSnapshotsDatasetParentName: "raid-1-4g/tank/k8s/snaps" storageClasses: - name: freenas-iscsi diff --git a/kubernetes-kvm-terraform/master.tf b/kubernetes-kvm-terraform/master.tf index fd3a951..8d7a360 100644 --- a/kubernetes-kvm-terraform/master.tf +++ b/kubernetes-kvm-terraform/master.tf @@ -229,9 +229,9 @@ resource "libvirt_volume" "cloudinit" { resource "libvirt_domain" "master" { provider = libvirt.kvm-homer name = local.master_vm_name - memory = "2048" + memory = "4096" memory_unit = "MiB" - vcpu = 2 + vcpu = 3 type = "kvm" autostart = true running = true diff --git a/kubernetes-kvm-terraform/nodes-on-beelink.tf b/kubernetes-kvm-terraform/nodes-on-beelink.tf index 21b227a..3c6ca02 100644 --- a/kubernetes-kvm-terraform/nodes-on-beelink.tf +++ b/kubernetes-kvm-terraform/nodes-on-beelink.tf @@ -131,7 +131,18 @@ locals { content: | alias k='kubectl' source <(kubectl completion bash) - complete -o default -F __start_kubectl k + complete -o default -F __start_kubectl k + + - path: /etc/systemd/system/kubelet.service.d/10-containerd.conf + content: | + [Unit] + After=containerd.service + Requires=containerd.service + + [Service] + ExecStartPre=/bin/bash -c 'until [ -S /var/run/containerd/containerd.sock ]; do sleep 1; done' + ExecStartPre=/usr/bin/crictl info + runcmd: - systemctl enable --now qemu-guest-agent @@ -151,6 +162,16 @@ locals { - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg - echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list - apt-get update && apt-get install -y containerd.io + - | + cat > /etc/containerd/config.toml <<'CONTAINERD' + version = 2 + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] + runtime_type = "io.containerd.runc.v2" + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] + SystemdCgroup = true + [plugins."io.containerd.grpc.v1.cri".registry] + config_path = "/etc/containerd/certs.d" + CONTAINERD - systemctl restart containerd # kubeadm/kubelet/kubectl v1.32 @@ -215,6 +236,10 @@ resource "libvirt_domain" "node_02" { autostart = true running = true + cpu = { + mode = "host-passthrough" + } + os = { type = "hvm" type_arch = "x86_64" diff --git a/kubernetes-kvm-terraform/nodes-on-homer.tf b/kubernetes-kvm-terraform/nodes-on-homer.tf index c3df0b6..e8127ed 100644 --- a/kubernetes-kvm-terraform/nodes-on-homer.tf +++ b/kubernetes-kvm-terraform/nodes-on-homer.tf @@ -131,7 +131,18 @@ locals { content: | alias k='kubectl' source <(kubectl completion bash) - complete -o default -F __start_kubectl k + complete -o default -F __start_kubectl k + + - path: /etc/systemd/system/kubelet.service.d/10-containerd.conf + content: | + [Unit] + After=containerd.service + Requires=containerd.service + + [Service] + ExecStartPre=/bin/bash -c 'until [ -S /var/run/containerd/containerd.sock ]; do sleep 1; done' + ExecStartPre=/usr/bin/crictl info + runcmd: - systemctl enable --now qemu-guest-agent @@ -151,6 +162,15 @@ locals { - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg - echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list - apt-get update && apt-get install -y containerd.io + - cat > /etc/containerd/config.toml <<'xEOF' + version = 2 + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] + runtime_type = "io.containerd.runc.v2" + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] + SystemdCgroup = true + [plugins."io.containerd.grpc.v1.cri".registry] + config_path = "/etc/containerd/certs.d" + xEOF - systemctl restart containerd # kubeadm/kubelet/kubectl v1.32 @@ -215,6 +235,9 @@ resource "libvirt_domain" "node_01" { autostart = true running = true + cpu = { + mode = "host-passthrough" + } os = { type = "hvm" type_arch = "x86_64" diff --git a/kubernetes-kvm-terraform/terraform.tfstate b/kubernetes-kvm-terraform/terraform.tfstate index 315f6f3..dc47ccc 100644 --- a/kubernetes-kvm-terraform/terraform.tfstate +++ b/kubernetes-kvm-terraform/terraform.tfstate @@ -1 +1 @@ -{"version":4,"terraform_version":"1.11.2","serial":77,"lineage":"69f81358-9017-b0fa-2e3d-404364b1f698","outputs":{"master_ip":{"value":"192.168.0.31","type":"string"},"node_01_ip":{"value":"192.168.0.32","type":"string"},"node_02_ip":{"value":"192.168.0.33","type":"string"}},"resources":[{"mode":"data","type":"local_file","name":"join_command","provider":"provider[\"registry.opentofu.org/hashicorp/local\"]","instances":[{"schema_version":0,"attributes":{"content":"kubeadm join 192.168.0.31:6443 --token bca05l.sem12tulotxra5mk --discovery-token-ca-cert-hash sha256:c09955e09ba79882ba7766125b57030b2e87dde0ac49af351de28e1c92d0beb9 \n","content_base64":"a3ViZWFkbSBqb2luIDE5Mi4xNjguMC4zMTo2NDQzIC0tdG9rZW4gYmNhMDVsLnNlbTEydHVsb3R4cmE1bWsgLS1kaXNjb3ZlcnktdG9rZW4tY2EtY2VydC1oYXNoIHNoYTI1NjpjMDk5NTVlMDliYTc5ODgyYmE3NzY2MTI1YjU3MDMwYjJlODdkZGUwYWM0OWFmMzUxZGUyOGUxYzkyZDBiZWI5IAo=","content_base64sha256":"+t44hPRBkSVJujVj02iIjOFgh6nfbeDel4slokcBZqo=","content_base64sha512":"or3RhHLkaTpnteMqUXiqs0sBkASBMCPNMlsNMewbIDh15zag72QEfpeo2tz0FkgAkhJv1/NartBIJpVga4zlgg==","content_md5":"484b2ae9b0cc4537cf4060343640a4a0","content_sha1":"082c2f7bacba02d6e732786daed6aab3bc1af7c5","content_sha256":"fade3884f441912549ba3563d368888ce16087a9df6de0de978b25a2470166aa","content_sha512":"a2bdd18472e4693a67b5e32a5178aab34b019004813023cd325b0d31ec1b203875e736a0ef64047e97a8dadcf416480092126fd7f35aaed0482695606b8ce582","filename":"./join-command.txt","id":"082c2f7bacba02d6e732786daed6aab3bc1af7c5"},"sensitive_attributes":[]}]},{"mode":"managed","type":"libvirt_cloudinit_disk","name":"commoninit","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"id":"9b5efd668378a2cc","meta_data":"\"instance-id\": \"kube-master-31\"\n\"local-hostname\": \"kube-master-31\"\n","name":"kube-master-31-cloudinit.iso","network_config":"version: 2\nethernets:\n eth0:\n match:\n driver: virtio_net\n addresses:\n - 192.168.0.31/24\n routes:\n - to: default\n via: 192.168.0.4\n nameservers:\n addresses:\n - 8.8.8.8\n","path":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-9b5efd668378a2cc.iso","size":49152,"user_data":"#cloud-config\nhostname: kube-master-31\nusers:\n - name: ubuntu\n sudo: ALL=(ALL) NOPASSWD:ALL\n shell: /bin/bash\n ssh_authorized_keys:\n - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTLxDOQMsumLpjIzMXvpN/hvoMfbVFcl7TDKXTYLBJIvTOLWO/elI3PeJkXNAlaIT1lgJQB7NwQED+DciPLjCLzkG3aSxuJdZRo0Z+vHm9CEUkWnq8icLTQs0zYadK6p24VpMqT61cGNv9L/riciMRWT6l2SdRN2ZBR6MhCXMZy/XgRRlcV9iN1n9T0Q9aZjaQ2CjgG59wTLdQ0bHRlFBSt2q6erFmCIiBHUJba4avDVRvYryvMgkopayL/eK2gxaloMjcMt4z+zIokxhQONPPU2AvqMcqQIsWGQYIzIkJ0UOO8ly/PAFCpgvukWJepmZR30vVBALFCRZCUN1zMbI3 jan.novak@Jans-MacBook-Air-9.local\n\nchpasswd:\n list: |\n ubuntu:yourpassword\n expire: false\nssh_pwauth: true\npackage_update: true\npackages:\n - qemu-guest-agent\n - openssh-server\n - apt-transport-https\n - ca-certificates\n - curl\n - gnupg \n\nwrite_files:\n - path: /etc/modules-load.d/k8s.conf\n content: |\n overlay\n br_netfilter\n\n - path: /etc/sysctl.d/k8s.conf\n content: |\n net.bridge.bridge-nf-call-iptables = 1\n net.bridge.bridge-nf-call-ip6tables = 1\n net.ipv4.ip_forward = 1\n\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n\n # Update existing containerd config to enable registry config_path\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n [plugins.\"io.containerd.grpc.v1.cri\".registry]\n config_path = \"/etc/containerd/certs.d\"\n\n # Mirror configs for each upstream registry\n - path: /etc/containerd/certs.d/docker.io/hosts.toml\n content: |\n server = \"https://registry-1.docker.io\"\n [host.\"http://192.168.0.30:5000/v2/docker.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/registry.k8s.io/hosts.toml\n content: |\n server = \"https://registry.k8s.io\"\n [host.\"http://192.168.0.30:5000/v2/registry.k8s.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/ghcr.io/hosts.toml\n content: |\n server = \"https://ghcr.io\"\n [host.\"http://192.168.0.30:5000/v2/ghcr.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/quay.io/hosts.toml\n content: |\n server = \"https://quay.io\"\n [host.\"http://192.168.0.30:5000/v2/quay.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true \n\n - path: /root/kubeadm-config.yaml\n content: |\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: InitConfiguration\n nodeRegistration:\n criSocket: unix:///run/containerd/containerd.sock\n ---\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: ClusterConfiguration\n networking:\n podSubnet: \"10.244.0.0/16\"\n ---\n apiVersion: kubelet.config.k8s.io/v1beta1\n kind: KubeletConfiguration\n cgroupDriver: systemd\n\n - path: /etc/profile.d/kubectl.sh\n content: |\n alias k='kubectl'\n source \u003c(kubectl completion bash)\n complete -o default -F __start_kubectl k \n\nruncmd:\n - systemctl enable --now qemu-guest-agent\n - systemctl enable --now ssh\n\n # relevant to kubernetes\n - modprobe overlay\n - modprobe br_netfilter\n - sysctl --system\n\n # containerd\n - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg\n - echo \"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" \u003e /etc/apt/sources.list.d/docker.list\n - apt-get update \u0026\u0026 apt-get install -y containerd.io\n - systemctl restart containerd\n\n # kubeadm/kubelet/kubectl v1.32\n - curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg\n - echo \"deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /\" \u003e /etc/apt/sources.list.d/kubernetes.list\n - apt-get update \u0026\u0026 apt-get install -y kubelet kubeadm kubectl\n - apt-mark hold kubelet kubeadm kubectl\n\n\n # init cluster\n - kubeadm init --config=/root/kubeadm-config.yaml --skip-phases=addon/kube-proxy\n \n # kubeconfig for root\n - mkdir -p /root/.kube \u0026\u0026 cp /etc/kubernetes/admin.conf /root/.kube/config\n\n # wait for API server\n - |\n echo \"Waiting for API server...\"\n until kubectl --kubeconfig=/etc/kubernetes/admin.conf get nodes ; do\n echo \"Waiting for API server...\"\n sleep 5\n done\n\n # CNI (cilium example, swap for flannel/calico as needed)\n - |\n CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt)\n curl -L --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-amd64.tar.gz\n tar xzvf cilium-linux-amd64.tar.gz -C /usr/local/bin\n cilium install --kubeconfig=/etc/kubernetes/admin.conf --set kubeProxyReplacement=true --wait \n"},"sensitive_attributes":[]}]},{"mode":"managed","type":"libvirt_cloudinit_disk","name":"commoninit_node_01","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"id":"9cda86046375ec96","meta_data":"\"instance-id\": \"kube-node-32\"\n\"local-hostname\": \"kube-node-32\"\n","name":"kube-node-32-cloudinit.iso","network_config":"version: 2\nethernets:\n eth0:\n match:\n driver: virtio_net\n addresses:\n - 192.168.0.32/24\n routes:\n - to: default\n via: 192.168.0.4\n nameservers:\n addresses:\n - 8.8.8.8\n","path":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-9cda86046375ec96.iso","size":49152,"user_data":"#cloud-config\nhostname: kube-node-32\nusers:\n - name: ubuntu\n sudo: ALL=(ALL) NOPASSWD:ALL\n shell: /bin/bash\n ssh_authorized_keys:\n - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTLxDOQMsumLpjIzMXvpN/hvoMfbVFcl7TDKXTYLBJIvTOLWO/elI3PeJkXNAlaIT1lgJQB7NwQED+DciPLjCLzkG3aSxuJdZRo0Z+vHm9CEUkWnq8icLTQs0zYadK6p24VpMqT61cGNv9L/riciMRWT6l2SdRN2ZBR6MhCXMZy/XgRRlcV9iN1n9T0Q9aZjaQ2CjgG59wTLdQ0bHRlFBSt2q6erFmCIiBHUJba4avDVRvYryvMgkopayL/eK2gxaloMjcMt4z+zIokxhQONPPU2AvqMcqQIsWGQYIzIkJ0UOO8ly/PAFCpgvukWJepmZR30vVBALFCRZCUN1zMbI3 jan.novak@Jans-MacBook-Air-9.local\n\nchpasswd:\n list: |\n ubuntu:yourpassword\n expire: false\nssh_pwauth: true\npackage_update: true\npackages:\n - qemu-guest-agent\n - openssh-server\n - apt-transport-https\n - ca-certificates\n - curl\n - gnupg\n - nvme-cli\n\nwrite_files:\n - path: /etc/modules-load.d/k8s.conf\n content: |\n overlay\n br_netfilter\n\n - path: /etc/sysctl.d/k8s.conf\n content: |\n net.bridge.bridge-nf-call-iptables = 1\n net.bridge.bridge-nf-call-ip6tables = 1\n net.ipv4.ip_forward = 1\n\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n\n # Update existing containerd config to enable registry config_path\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n [plugins.\"io.containerd.grpc.v1.cri\".registry]\n config_path = \"/etc/containerd/certs.d\"\n\n # Mirror configs for each upstream registry\n - path: /etc/containerd/certs.d/docker.io/hosts.toml\n content: |\n server = \"https://registry-1.docker.io\"\n [host.\"http://192.168.0.30:5000/v2/docker.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/registry.k8s.io/hosts.toml\n content: |\n server = \"https://registry.k8s.io\"\n [host.\"http://192.168.0.30:5000/v2/registry.k8s.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/ghcr.io/hosts.toml\n content: |\n server = \"https://ghcr.io\"\n [host.\"http://192.168.0.30:5000/v2/ghcr.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/quay.io/hosts.toml\n content: |\n server = \"https://quay.io\"\n [host.\"http://192.168.0.30:5000/v2/quay.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true \n\n - path: /root/kubeadm-config.yaml\n content: |\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: InitConfiguration\n nodeRegistration:\n criSocket: unix:///run/containerd/containerd.sock\n ---\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: ClusterConfiguration\n networking:\n podSubnet: \"10.244.0.0/16\"\n ---\n apiVersion: kubelet.config.k8s.io/v1beta1\n kind: KubeletConfiguration\n cgroupDriver: systemd\n\n - path: /etc/profile.d/kubectl.sh\n content: |\n alias k='kubectl'\n source \u003c(kubectl completion bash)\n complete -o default -F __start_kubectl k \n\nruncmd:\n - systemctl enable --now qemu-guest-agent\n - systemctl enable --now ssh\n\n # needed for nvme-tcp module\n - apt install linux-modules-extra-$(uname -r)\n - modprobe nvme-tcp\n - echo \"nvme-tcp\" \u003e\u003e /etc/modules-load.d/nvme-tcp.conf\n\n # relevant to kubernetes\n - modprobe overlay\n - modprobe br_netfilter\n - sysctl --system\n\n # containerd\n - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg\n - echo \"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" \u003e /etc/apt/sources.list.d/docker.list\n - apt-get update \u0026\u0026 apt-get install -y containerd.io\n - systemctl restart containerd\n\n # kubeadm/kubelet/kubectl v1.32\n - curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg\n - echo \"deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /\" \u003e /etc/apt/sources.list.d/kubernetes.list\n - apt-get update \u0026\u0026 apt-get install -y kubelet kubeadm kubectl\n - apt-mark hold kubelet kubeadm kubectl\n\n # join cluster\n - kubeadm join 192.168.0.31:6443 --token bca05l.sem12tulotxra5mk --discovery-token-ca-cert-hash sha256:c09955e09ba79882ba7766125b57030b2e87dde0ac49af351de28e1c92d0beb9\n\n"},"sensitive_attributes":[],"dependencies":["data.local_file.join_command","libvirt_cloudinit_disk.commoninit","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk","null_resource.kubeadm_token"]}]},{"mode":"managed","type":"libvirt_cloudinit_disk","name":"commoninit_node_02","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-beelink","instances":[{"schema_version":0,"attributes":{"id":"c168c9baba7630ed","meta_data":"\"instance-id\": \"kube-node-33\"\n\"local-hostname\": \"kube-node-33\"\n","name":"kube-node-33-cloudinit.iso","network_config":"version: 2\nethernets:\n eth0:\n match:\n driver: virtio_net\n addresses:\n - 192.168.0.33/24\n routes:\n - to: default\n via: 192.168.0.4\n nameservers:\n addresses:\n - 8.8.8.8\n","path":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-c168c9baba7630ed.iso","size":49152,"user_data":"#cloud-config\nhostname: kube-node-33\nusers:\n - name: ubuntu\n sudo: ALL=(ALL) NOPASSWD:ALL\n shell: /bin/bash\n ssh_authorized_keys:\n - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTLxDOQMsumLpjIzMXvpN/hvoMfbVFcl7TDKXTYLBJIvTOLWO/elI3PeJkXNAlaIT1lgJQB7NwQED+DciPLjCLzkG3aSxuJdZRo0Z+vHm9CEUkWnq8icLTQs0zYadK6p24VpMqT61cGNv9L/riciMRWT6l2SdRN2ZBR6MhCXMZy/XgRRlcV9iN1n9T0Q9aZjaQ2CjgG59wTLdQ0bHRlFBSt2q6erFmCIiBHUJba4avDVRvYryvMgkopayL/eK2gxaloMjcMt4z+zIokxhQONPPU2AvqMcqQIsWGQYIzIkJ0UOO8ly/PAFCpgvukWJepmZR30vVBALFCRZCUN1zMbI3 jan.novak@Jans-MacBook-Air-9.local\n\nchpasswd:\n list: |\n ubuntu:yourpassword\n expire: false\nssh_pwauth: true\npackage_update: true\npackages:\n - qemu-guest-agent\n - openssh-server\n - apt-transport-https\n - ca-certificates\n - curl\n - gnupg\n - nvme-cli\n\nwrite_files:\n - path: /etc/modules-load.d/k8s.conf\n content: |\n overlay\n br_netfilter\n\n - path: /etc/sysctl.d/k8s.conf\n content: |\n net.bridge.bridge-nf-call-iptables = 1\n net.bridge.bridge-nf-call-ip6tables = 1\n net.ipv4.ip_forward = 1\n\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n\n # Update existing containerd config to enable registry config_path\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n [plugins.\"io.containerd.grpc.v1.cri\".registry]\n config_path = \"/etc/containerd/certs.d\"\n\n # Mirror configs for each upstream registry\n - path: /etc/containerd/certs.d/docker.io/hosts.toml\n content: |\n server = \"https://registry-1.docker.io\"\n [host.\"http://192.168.0.30:5000/v2/docker.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/registry.k8s.io/hosts.toml\n content: |\n server = \"https://registry.k8s.io\"\n [host.\"http://192.168.0.30:5000/v2/registry.k8s.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/ghcr.io/hosts.toml\n content: |\n server = \"https://ghcr.io\"\n [host.\"http://192.168.0.30:5000/v2/ghcr.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/quay.io/hosts.toml\n content: |\n server = \"https://quay.io\"\n [host.\"http://192.168.0.30:5000/v2/quay.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true \n\n - path: /root/kubeadm-config.yaml\n content: |\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: InitConfiguration\n nodeRegistration:\n criSocket: unix:///run/containerd/containerd.sock\n ---\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: ClusterConfiguration\n networking:\n podSubnet: \"10.244.0.0/16\"\n ---\n apiVersion: kubelet.config.k8s.io/v1beta1\n kind: KubeletConfiguration\n cgroupDriver: systemd\n\n - path: /etc/profile.d/kubectl.sh\n content: |\n alias k='kubectl'\n source \u003c(kubectl completion bash)\n complete -o default -F __start_kubectl k \n\nruncmd:\n - systemctl enable --now qemu-guest-agent\n - systemctl enable --now ssh\n\n # needed for nvme-tcp module\n - apt install linux-modules-extra-$(uname -r)\n - modprobe nvme-tcp\n - echo \"nvme-tcp\" \u003e\u003e /etc/modules-load.d/nvme-tcp.conf\n\n # relevant to kubernetes\n - modprobe overlay\n - modprobe br_netfilter\n - sysctl --system\n\n # containerd\n - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg\n - echo \"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" \u003e /etc/apt/sources.list.d/docker.list\n - apt-get update \u0026\u0026 apt-get install -y containerd.io\n - systemctl restart containerd\n\n # kubeadm/kubelet/kubectl v1.32\n - curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg\n - echo \"deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /\" \u003e /etc/apt/sources.list.d/kubernetes.list\n - apt-get update \u0026\u0026 apt-get install -y kubelet kubeadm kubectl\n - apt-mark hold kubelet kubeadm kubectl\n\n # join cluster\n - kubeadm join 192.168.0.31:6443 --token bca05l.sem12tulotxra5mk --discovery-token-ca-cert-hash sha256:c09955e09ba79882ba7766125b57030b2e87dde0ac49af351de28e1c92d0beb9\n\n"},"sensitive_attributes":[],"dependencies":["data.local_file.join_command","libvirt_cloudinit_disk.commoninit","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk","null_resource.kubeadm_token"]}]},{"mode":"managed","type":"libvirt_domain","name":"master","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"autostart":true,"block_io_tune":null,"bootloader":null,"bootloader_args":null,"clock":null,"cpu":null,"cpu_tune":null,"create":null,"current_memory":null,"current_memory_unit":null,"default_io_thread":null,"description":null,"destroy":null,"devices":{"audios":null,"channels":null,"consoles":null,"controllers":null,"crypto":null,"disks":[{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":null,"driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"qcow2"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/srv/vms/kube-master-31.qcow2","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"virtio","dev":"vda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null},{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":"cdrom","driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"raw"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/srv/vms/kube-master-31-cloudinit.iso","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"sata","dev":"sda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null}],"emulator":null,"filesystems":null,"graphics":null,"hostdevs":null,"hubs":null,"inputs":null,"interfaces":[{"acpi":null,"address":null,"alias":null,"backend":null,"backend_domain":null,"bandwidth":null,"boot":null,"coalesce":null,"down_script":null,"driver":null,"filter_ref":null,"guest":null,"ip":null,"link":null,"mac":null,"managed":null,"model":{"type":"virtio"},"mtu":null,"port_forward":null,"port_options":null,"rom":null,"route":null,"script":null,"source":{"bridge":{"bridge":"br0"},"client":null,"direct":null,"ethernet":null,"hostdev":null,"internal":null,"mcast":null,"network":null,"null":null,"server":null,"udp":null,"user":null,"vdpa":null,"vds":null,"vhost_user":null},"target":null,"teaming":null,"trust_guest_rx_filters":null,"tune":null,"virtual_port":null,"vlan":null,"wait_for_ip":null}],"iommu":null,"leases":null,"mem_balloon":null,"memorydevs":null,"nvram":null,"panics":null,"parallels":null,"pstore":null,"redir_devs":null,"redir_filters":null,"rngs":null,"serials":[{"acpi":null,"address":null,"alias":null,"log":null,"protocol":null,"source":null,"target":null}],"shmems":null,"smartcards":null,"sounds":null,"tpms":null,"videos":null,"vsock":null,"watchdogs":null},"features":null,"gen_id":null,"hwuuid":null,"id":49,"id_map":null,"io_thread_i_ds":null,"io_threads":null,"key_wrap":null,"launch_security":null,"maximum_memory":null,"maximum_memory_slots":null,"maximum_memory_unit":null,"memory":2048,"memory_backing":null,"memory_dump_core":null,"memory_tune":null,"memory_unit":"MiB","metadata":null,"name":"kube-master-31","numa_tune":null,"on_crash":null,"on_poweroff":null,"on_reboot":null,"os":{"acpi":null,"bios":null,"boot_devices":null,"boot_menu":null,"cmdline":null,"dtb":null,"firmware":null,"firmware_info":null,"init":null,"init_args":null,"init_dir":null,"init_env":null,"init_group":null,"init_user":null,"initrd":null,"kernel":null,"loader":null,"loader_format":null,"loader_readonly":null,"loader_secure":null,"loader_stateless":null,"loader_type":null,"nv_ram":null,"shim":null,"sm_bios":null,"type":"hvm","type_arch":"x86_64","type_machine":"q35"},"perf":null,"pm":null,"resource":null,"running":true,"sec_label":null,"sys_info":null,"throttle_groups":null,"title":null,"type":"kvm","uuid":"1d3d2721-a2f0-49d0-a458-a905c4b6e5cd","vcpu":2,"vcpu_cpuset":null,"vcpu_current":null,"vcpu_placement":null,"vcpus":null},"sensitive_attributes":[],"dependencies":["libvirt_cloudinit_disk.commoninit","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk"]}]},{"mode":"managed","type":"libvirt_domain","name":"node_01","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"autostart":true,"block_io_tune":null,"bootloader":null,"bootloader_args":null,"clock":null,"cpu":null,"cpu_tune":null,"create":null,"current_memory":null,"current_memory_unit":null,"default_io_thread":null,"description":null,"destroy":null,"devices":{"audios":null,"channels":null,"consoles":null,"controllers":null,"crypto":null,"disks":[{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":null,"driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"qcow2"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/srv/vms/kube-node-32.qcow2","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"virtio","dev":"vda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null},{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":"cdrom","driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"raw"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/srv/vms/kube-node-32-cloudinit.iso","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"sata","dev":"sda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null}],"emulator":null,"filesystems":null,"graphics":null,"hostdevs":null,"hubs":null,"inputs":null,"interfaces":[{"acpi":null,"address":null,"alias":null,"backend":null,"backend_domain":null,"bandwidth":null,"boot":null,"coalesce":null,"down_script":null,"driver":null,"filter_ref":null,"guest":null,"ip":null,"link":null,"mac":null,"managed":null,"model":{"type":"virtio"},"mtu":null,"port_forward":null,"port_options":null,"rom":null,"route":null,"script":null,"source":{"bridge":{"bridge":"br0"},"client":null,"direct":null,"ethernet":null,"hostdev":null,"internal":null,"mcast":null,"network":null,"null":null,"server":null,"udp":null,"user":null,"vdpa":null,"vds":null,"vhost_user":null},"target":null,"teaming":null,"trust_guest_rx_filters":null,"tune":null,"virtual_port":null,"vlan":null,"wait_for_ip":null}],"iommu":null,"leases":null,"mem_balloon":null,"memorydevs":null,"nvram":null,"panics":null,"parallels":null,"pstore":null,"redir_devs":null,"redir_filters":null,"rngs":null,"serials":[{"acpi":null,"address":null,"alias":null,"log":null,"protocol":null,"source":null,"target":null}],"shmems":null,"smartcards":null,"sounds":null,"tpms":null,"videos":null,"vsock":null,"watchdogs":null},"features":null,"gen_id":null,"hwuuid":null,"id":55,"id_map":null,"io_thread_i_ds":null,"io_threads":null,"key_wrap":null,"launch_security":null,"maximum_memory":null,"maximum_memory_slots":null,"maximum_memory_unit":null,"memory":8192,"memory_backing":null,"memory_dump_core":null,"memory_tune":null,"memory_unit":"MiB","metadata":null,"name":"kube-node-32","numa_tune":null,"on_crash":null,"on_poweroff":null,"on_reboot":null,"os":{"acpi":null,"bios":null,"boot_devices":null,"boot_menu":null,"cmdline":null,"dtb":null,"firmware":null,"firmware_info":null,"init":null,"init_args":null,"init_dir":null,"init_env":null,"init_group":null,"init_user":null,"initrd":null,"kernel":null,"loader":null,"loader_format":null,"loader_readonly":null,"loader_secure":null,"loader_stateless":null,"loader_type":null,"nv_ram":null,"shim":null,"sm_bios":null,"type":"hvm","type_arch":"x86_64","type_machine":"q35"},"perf":null,"pm":null,"resource":null,"running":true,"sec_label":null,"sys_info":null,"throttle_groups":null,"title":null,"type":"kvm","uuid":"9a5c29bb-6af7-441a-ba01-143e87cf4a1c","vcpu":4,"vcpu_cpuset":null,"vcpu_current":null,"vcpu_placement":null,"vcpus":null},"sensitive_attributes":[],"dependencies":["data.local_file.join_command","libvirt_cloudinit_disk.commoninit","libvirt_cloudinit_disk.commoninit_node_01","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.cloudinit_node_01","libvirt_volume.node_01_disk","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk","null_resource.kubeadm_token"]}]},{"mode":"managed","type":"libvirt_domain","name":"node_02","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-beelink","instances":[{"schema_version":0,"attributes":{"autostart":true,"block_io_tune":null,"bootloader":null,"bootloader_args":null,"clock":null,"cpu":null,"cpu_tune":null,"create":null,"current_memory":null,"current_memory_unit":null,"default_io_thread":null,"description":null,"destroy":null,"devices":{"audios":null,"channels":null,"consoles":null,"controllers":null,"crypto":null,"disks":[{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":null,"driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"qcow2"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/var/lib/libvirt/images/kube-node-33.qcow2","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"virtio","dev":"vda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null},{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":"cdrom","driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"raw"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/var/lib/libvirt/images/kube-node-33-cloudinit.iso","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"sata","dev":"sda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null}],"emulator":null,"filesystems":null,"graphics":null,"hostdevs":null,"hubs":null,"inputs":null,"interfaces":[{"acpi":null,"address":null,"alias":null,"backend":null,"backend_domain":null,"bandwidth":null,"boot":null,"coalesce":null,"down_script":null,"driver":null,"filter_ref":null,"guest":null,"ip":null,"link":null,"mac":null,"managed":null,"model":{"type":"virtio"},"mtu":null,"port_forward":null,"port_options":null,"rom":null,"route":null,"script":null,"source":{"bridge":{"bridge":"br0"},"client":null,"direct":null,"ethernet":null,"hostdev":null,"internal":null,"mcast":null,"network":null,"null":null,"server":null,"udp":null,"user":null,"vdpa":null,"vds":null,"vhost_user":null},"target":null,"teaming":null,"trust_guest_rx_filters":null,"tune":null,"virtual_port":null,"vlan":null,"wait_for_ip":null}],"iommu":null,"leases":null,"mem_balloon":null,"memorydevs":null,"nvram":null,"panics":null,"parallels":null,"pstore":null,"redir_devs":null,"redir_filters":null,"rngs":null,"serials":[{"acpi":null,"address":null,"alias":null,"log":null,"protocol":null,"source":null,"target":null}],"shmems":null,"smartcards":null,"sounds":null,"tpms":null,"videos":null,"vsock":null,"watchdogs":null},"features":null,"gen_id":null,"hwuuid":null,"id":5,"id_map":null,"io_thread_i_ds":null,"io_threads":null,"key_wrap":null,"launch_security":null,"maximum_memory":null,"maximum_memory_slots":null,"maximum_memory_unit":null,"memory":8192,"memory_backing":null,"memory_dump_core":null,"memory_tune":null,"memory_unit":"MiB","metadata":null,"name":"kube-node-33","numa_tune":null,"on_crash":null,"on_poweroff":null,"on_reboot":null,"os":{"acpi":null,"bios":null,"boot_devices":null,"boot_menu":null,"cmdline":null,"dtb":null,"firmware":null,"firmware_info":null,"init":null,"init_args":null,"init_dir":null,"init_env":null,"init_group":null,"init_user":null,"initrd":null,"kernel":null,"loader":null,"loader_format":null,"loader_readonly":null,"loader_secure":null,"loader_stateless":null,"loader_type":null,"nv_ram":null,"shim":null,"sm_bios":null,"type":"hvm","type_arch":"x86_64","type_machine":"q35"},"perf":null,"pm":null,"resource":null,"running":true,"sec_label":null,"sys_info":null,"throttle_groups":null,"title":null,"type":"kvm","uuid":"cb5128ea-1dfa-4b28-b25c-fe59fd5f8da9","vcpu":4,"vcpu_cpuset":null,"vcpu_current":null,"vcpu_placement":null,"vcpus":null},"sensitive_attributes":[],"dependencies":["data.local_file.join_command","libvirt_cloudinit_disk.commoninit","libvirt_cloudinit_disk.commoninit_node_02","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.cloudinit_node_02","libvirt_volume.node_02_disk","libvirt_volume.ubuntu_base_beelink","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk","null_resource.kubeadm_token"]}]},{"mode":"managed","type":"libvirt_volume","name":"cloudinit","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":49152,"allocation_unit":null,"backing_store":null,"capacity":49152,"capacity_unit":null,"create":{"content":{"url":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-9b5efd668378a2cc.iso"}},"id":"/srv/vms/kube-master-31-cloudinit.iso","key":"/srv/vms/kube-master-31-cloudinit.iso","name":"kube-master-31-cloudinit.iso","path":"/srv/vms/kube-master-31-cloudinit.iso","physical":49152,"physical_unit":null,"pool":"default","target":null,"type":null},"sensitive_attributes":[],"dependencies":["libvirt_cloudinit_disk.commoninit"]}]},{"mode":"managed","type":"libvirt_volume","name":"cloudinit_node_01","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":49152,"allocation_unit":null,"backing_store":null,"capacity":49152,"capacity_unit":null,"create":{"content":{"url":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-9cda86046375ec96.iso"}},"id":"/srv/vms/kube-node-32-cloudinit.iso","key":"/srv/vms/kube-node-32-cloudinit.iso","name":"kube-node-32-cloudinit.iso","path":"/srv/vms/kube-node-32-cloudinit.iso","physical":49152,"physical_unit":null,"pool":"default","target":null,"type":null},"sensitive_attributes":[],"dependencies":["data.local_file.join_command","libvirt_cloudinit_disk.commoninit","libvirt_cloudinit_disk.commoninit_node_01","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk","null_resource.kubeadm_token"]}]},{"mode":"managed","type":"libvirt_volume","name":"cloudinit_node_02","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-beelink","instances":[{"schema_version":0,"attributes":{"allocation":49152,"allocation_unit":null,"backing_store":null,"capacity":49152,"capacity_unit":null,"create":{"content":{"url":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-c168c9baba7630ed.iso"}},"id":"/var/lib/libvirt/images/kube-node-33-cloudinit.iso","key":"/var/lib/libvirt/images/kube-node-33-cloudinit.iso","name":"kube-node-33-cloudinit.iso","path":"/var/lib/libvirt/images/kube-node-33-cloudinit.iso","physical":49152,"physical_unit":null,"pool":"default","target":null,"type":null},"sensitive_attributes":[],"dependencies":["data.local_file.join_command","libvirt_cloudinit_disk.commoninit","libvirt_cloudinit_disk.commoninit_node_02","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk","null_resource.kubeadm_token"]}]},{"mode":"managed","type":"libvirt_volume","name":"node_01_disk","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":10389749760,"allocation_unit":null,"backing_store":{"format":{"type":"qcow2"},"path":"/srv/vms/ubuntu-24.04-base.qcow2","permissions":null},"capacity":21474836480,"capacity_unit":null,"create":null,"id":"/srv/vms/kube-node-32.qcow2","key":"/srv/vms/kube-node-32.qcow2","name":"kube-node-32.qcow2","path":"/srv/vms/kube-node-32.qcow2","physical":10389684224,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/srv/vms/kube-node-32.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[],"dependencies":["libvirt_volume.ubuntu_base_homer"]}]},{"mode":"managed","type":"libvirt_volume","name":"node_02_disk","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-beelink","instances":[{"schema_version":0,"attributes":{"allocation":200704,"allocation_unit":null,"backing_store":{"format":{"type":"qcow2"},"path":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","permissions":null},"capacity":21474836480,"capacity_unit":null,"create":null,"id":"/var/lib/libvirt/images/kube-node-33.qcow2","key":"/var/lib/libvirt/images/kube-node-33.qcow2","name":"kube-node-33.qcow2","path":"/var/lib/libvirt/images/kube-node-33.qcow2","physical":196928,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/var/lib/libvirt/images/kube-node-33.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[],"dependencies":["libvirt_volume.ubuntu_base_beelink"]}]},{"mode":"managed","type":"libvirt_volume","name":"ubuntu_base_beelink","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-beelink","instances":[{"schema_version":0,"attributes":{"allocation":626663424,"allocation_unit":null,"backing_store":null,"capacity":3758096384,"capacity_unit":null,"create":{"content":{"url":"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img"}},"id":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","key":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","name":"ubuntu-24.04-base.qcow2","path":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","physical":626655744,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[]}]},{"mode":"managed","type":"libvirt_volume","name":"ubuntu_base_homer","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":626663424,"allocation_unit":null,"backing_store":null,"capacity":3758096384,"capacity_unit":null,"create":{"content":{"url":"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img"}},"id":"/srv/vms/ubuntu-24.04-base.qcow2","key":"/srv/vms/ubuntu-24.04-base.qcow2","name":"ubuntu-24.04-base.qcow2","path":"/srv/vms/ubuntu-24.04-base.qcow2","physical":626655744,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/srv/vms/ubuntu-24.04-base.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[]}]},{"mode":"managed","type":"libvirt_volume","name":"ubuntu_disk","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":4332130304,"allocation_unit":null,"backing_store":{"format":{"type":"qcow2"},"path":"/srv/vms/ubuntu-24.04-base.qcow2","permissions":null},"capacity":21474836480,"capacity_unit":null,"create":null,"id":"/srv/vms/kube-master-31.qcow2","key":"/srv/vms/kube-master-31.qcow2","name":"kube-master-31.qcow2","path":"/srv/vms/kube-master-31.qcow2","physical":4332060672,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/srv/vms/kube-master-31.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[],"dependencies":["libvirt_volume.ubuntu_base_homer"]}]},{"mode":"managed","type":"null_resource","name":"kubeadm_token","provider":"provider[\"registry.opentofu.org/hashicorp/null\"]","instances":[{"schema_version":0,"attributes":{"id":"1313601011663420265","triggers":null},"sensitive_attributes":[],"dependencies":["libvirt_cloudinit_disk.commoninit","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk"]}]},{"mode":"managed","type":"null_resource","name":"kubeconfig","provider":"provider[\"registry.opentofu.org/hashicorp/null\"]","instances":[{"schema_version":0,"attributes":{"id":"8367063358226307615","triggers":null},"sensitive_attributes":[]}]}],"check_results":null} +{"version":4,"terraform_version":"1.11.2","serial":88,"lineage":"69f81358-9017-b0fa-2e3d-404364b1f698","outputs":{"master_ip":{"value":"192.168.0.31","type":"string"},"node_01_ip":{"value":"192.168.0.32","type":"string"},"node_02_ip":{"value":"192.168.0.33","type":"string"}},"resources":[{"mode":"data","type":"local_file","name":"join_command","provider":"provider[\"registry.opentofu.org/hashicorp/local\"]","instances":[{"schema_version":0,"attributes":{"content":"kubeadm join 192.168.0.31:6443 --token nfbk24.0v2qczesuwlxcc6p --discovery-token-ca-cert-hash sha256:c09955e09ba79882ba7766125b57030b2e87dde0ac49af351de28e1c92d0beb9 \n","content_base64":"a3ViZWFkbSBqb2luIDE5Mi4xNjguMC4zMTo2NDQzIC0tdG9rZW4gbmZiazI0LjB2MnFjemVzdXdseGNjNnAgLS1kaXNjb3ZlcnktdG9rZW4tY2EtY2VydC1oYXNoIHNoYTI1NjpjMDk5NTVlMDliYTc5ODgyYmE3NzY2MTI1YjU3MDMwYjJlODdkZGUwYWM0OWFmMzUxZGUyOGUxYzkyZDBiZWI5IAo=","content_base64sha256":"UhrHXweUjlkBKNBJBsvyv/UF8Z0HavzxjmvvKtPqExI=","content_base64sha512":"9/PxTzu68Zk9icpO9YFUsMcre2PYkbUtCL1FzCPwErHDI0pxIx/kfbe5cwC8TFu6QZyCfxeyDHt49T4leKwqrw==","content_md5":"5a600470c8b9f2afabb0244f3b11cbde","content_sha1":"6f257920dd5627719ef5c5f181ce8a310b93b22f","content_sha256":"521ac75f07948e590128d04906cbf2bff505f19d076afcf18e6bef2ad3ea1312","content_sha512":"f7f3f14f3bbaf1993d89ca4ef58154b0c72b7b63d891b52d08bd45cc23f012b1c3234a71231fe47db7b97300bc4c5bba419c827f17b20c7b78f53e2578ac2aaf","filename":"./join-command.txt","id":"6f257920dd5627719ef5c5f181ce8a310b93b22f"},"sensitive_attributes":[]}]},{"mode":"managed","type":"libvirt_cloudinit_disk","name":"commoninit","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"id":"295268ac2ef5dcc3","meta_data":"\"instance-id\": \"kube-master-31\"\n\"local-hostname\": \"kube-master-31\"\n","name":"kube-master-31-cloudinit.iso","network_config":"version: 2\nethernets:\n eth0:\n match:\n driver: virtio_net\n addresses:\n - 192.168.0.31/24\n routes:\n - to: default\n via: 192.168.0.4\n nameservers:\n addresses:\n - 8.8.8.8\n","path":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-295268ac2ef5dcc3.iso","size":49152,"user_data":"#cloud-config\nhostname: kube-master-31\nusers:\n - name: ubuntu\n sudo: ALL=(ALL) NOPASSWD:ALL\n shell: /bin/bash\n ssh_authorized_keys:\n - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTLxDOQMsumLpjIzMXvpN/hvoMfbVFcl7TDKXTYLBJIvTOLWO/elI3PeJkXNAlaIT1lgJQB7NwQED+DciPLjCLzkG3aSxuJdZRo0Z+vHm9CEUkWnq8icLTQs0zYadK6p24VpMqT61cGNv9L/riciMRWT6l2SdRN2ZBR6MhCXMZy/XgRRlcV9iN1n9T0Q9aZjaQ2CjgG59wTLdQ0bHRlFBSt2q6erFmCIiBHUJba4avDVRvYryvMgkopayL/eK2gxaloMjcMt4z+zIokxhQONPPU2AvqMcqQIsWGQYIzIkJ0UOO8ly/PAFCpgvukWJepmZR30vVBALFCRZCUN1zMbI3 jan.novak@Jans-MacBook-Air-9.local\n\nchpasswd:\n list: |\n ubuntu:yourpassword\n expire: false\nssh_pwauth: true\npackage_update: true\npackages:\n - qemu-guest-agent\n - openssh-server\n - apt-transport-https\n - ca-certificates\n - curl\n - gnupg \n\nwrite_files:\n - path: /etc/modules-load.d/k8s.conf\n content: |\n overlay\n br_netfilter\n\n - path: /etc/sysctl.d/k8s.conf\n content: |\n net.bridge.bridge-nf-call-iptables = 1\n net.bridge.bridge-nf-call-ip6tables = 1\n net.ipv4.ip_forward = 1\n\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n\n # Update existing containerd config to enable registry config_path\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n [plugins.\"io.containerd.grpc.v1.cri\".registry]\n config_path = \"/etc/containerd/certs.d\"\n\n # Mirror configs for each upstream registry\n - path: /etc/containerd/certs.d/docker.io/hosts.toml\n content: |\n server = \"https://registry-1.docker.io\"\n [host.\"http://192.168.0.30:5000/v2/docker.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/registry.k8s.io/hosts.toml\n content: |\n server = \"https://registry.k8s.io\"\n [host.\"http://192.168.0.30:5000/v2/registry.k8s.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/ghcr.io/hosts.toml\n content: |\n server = \"https://ghcr.io\"\n [host.\"http://192.168.0.30:5000/v2/ghcr.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/quay.io/hosts.toml\n content: |\n server = \"https://quay.io\"\n [host.\"http://192.168.0.30:5000/v2/quay.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true \n\n - path: /root/kubeadm-config.yaml\n content: |\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: InitConfiguration\n nodeRegistration:\n criSocket: unix:///run/containerd/containerd.sock\n ---\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: ClusterConfiguration\n extraArgs:\n oidc-issuer-url: \"https://idm.home.hrajfrisbee.cz/oauth2/openid/k8s\"\n oidc-client-id: \"k8s\"\n oidc-signing-algs: \"ES256\" \n networking:\n podSubnet: \"10.244.0.0/16\"\n ---\n apiVersion: kubelet.config.k8s.io/v1beta1\n kind: KubeletConfiguration\n cgroupDriver: systemd\n\n - path: /etc/profile.d/kubectl.sh\n content: |\n alias k='kubectl'\n source \u003c(kubectl completion bash)\n complete -o default -F __start_kubectl k \n\nruncmd:\n - systemctl enable --now qemu-guest-agent\n - systemctl enable --now ssh\n\n # relevant to kubernetes\n - modprobe overlay\n - modprobe br_netfilter\n - sysctl --system\n\n # containerd\n - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg\n - echo \"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" \u003e /etc/apt/sources.list.d/docker.list\n - apt-get update \u0026\u0026 apt-get install -y containerd.io\n - systemctl restart containerd\n\n # kubeadm/kubelet/kubectl v1.32\n - curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg\n - echo \"deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /\" \u003e /etc/apt/sources.list.d/kubernetes.list\n - apt-get update \u0026\u0026 apt-get install -y kubelet kubeadm kubectl\n - apt-mark hold kubelet kubeadm kubectl\n\n\n # init cluster\n - kubeadm init --config=/root/kubeadm-config.yaml --skip-phases=addon/kube-proxy\n \n # kubeconfig for root\n - mkdir -p /root/.kube \u0026\u0026 cp /etc/kubernetes/admin.conf /root/.kube/config\n\n # wait for API server\n - |\n echo \"Waiting for API server...\"\n until kubectl --kubeconfig=/etc/kubernetes/admin.conf get nodes ; do\n echo \"Waiting for API server...\"\n sleep 5\n done\n\n # CNI (cilium example, swap for flannel/calico as needed)\n - |\n CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt)\n curl -L --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-amd64.tar.gz\n tar xzvf cilium-linux-amd64.tar.gz -C /usr/local/bin\n cilium install --kubeconfig=/etc/kubernetes/admin.conf --set kubeProxyReplacement=true --wait \n"},"sensitive_attributes":[]}]},{"mode":"managed","type":"libvirt_cloudinit_disk","name":"commoninit_node_01","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"id":"845e3681ac0f1b93","meta_data":"\"instance-id\": \"kube-node-32\"\n\"local-hostname\": \"kube-node-32\"\n","name":"kube-node-32-cloudinit.iso","network_config":"version: 2\nethernets:\n eth0:\n match:\n driver: virtio_net\n addresses:\n - 192.168.0.32/24\n routes:\n - to: default\n via: 192.168.0.4\n nameservers:\n addresses:\n - 8.8.8.8\n","path":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-845e3681ac0f1b93.iso","size":49152,"user_data":"#cloud-config\nhostname: kube-node-32\nusers:\n - name: ubuntu\n sudo: ALL=(ALL) NOPASSWD:ALL\n shell: /bin/bash\n ssh_authorized_keys:\n - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTLxDOQMsumLpjIzMXvpN/hvoMfbVFcl7TDKXTYLBJIvTOLWO/elI3PeJkXNAlaIT1lgJQB7NwQED+DciPLjCLzkG3aSxuJdZRo0Z+vHm9CEUkWnq8icLTQs0zYadK6p24VpMqT61cGNv9L/riciMRWT6l2SdRN2ZBR6MhCXMZy/XgRRlcV9iN1n9T0Q9aZjaQ2CjgG59wTLdQ0bHRlFBSt2q6erFmCIiBHUJba4avDVRvYryvMgkopayL/eK2gxaloMjcMt4z+zIokxhQONPPU2AvqMcqQIsWGQYIzIkJ0UOO8ly/PAFCpgvukWJepmZR30vVBALFCRZCUN1zMbI3 jan.novak@Jans-MacBook-Air-9.local\n\nchpasswd:\n list: |\n ubuntu:yourpassword\n expire: false\nssh_pwauth: true\npackage_update: true\npackages:\n - qemu-guest-agent\n - openssh-server\n - apt-transport-https\n - ca-certificates\n - curl\n - gnupg\n - nvme-cli\n\nwrite_files:\n - path: /etc/modules-load.d/k8s.conf\n content: |\n overlay\n br_netfilter\n\n - path: /etc/sysctl.d/k8s.conf\n content: |\n net.bridge.bridge-nf-call-iptables = 1\n net.bridge.bridge-nf-call-ip6tables = 1\n net.ipv4.ip_forward = 1\n\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n\n # Update existing containerd config to enable registry config_path\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n [plugins.\"io.containerd.grpc.v1.cri\".registry]\n config_path = \"/etc/containerd/certs.d\"\n\n # Mirror configs for each upstream registry\n - path: /etc/containerd/certs.d/docker.io/hosts.toml\n content: |\n server = \"https://registry-1.docker.io\"\n [host.\"http://192.168.0.30:5000/v2/docker.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/registry.k8s.io/hosts.toml\n content: |\n server = \"https://registry.k8s.io\"\n [host.\"http://192.168.0.30:5000/v2/registry.k8s.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/ghcr.io/hosts.toml\n content: |\n server = \"https://ghcr.io\"\n [host.\"http://192.168.0.30:5000/v2/ghcr.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/quay.io/hosts.toml\n content: |\n server = \"https://quay.io\"\n [host.\"http://192.168.0.30:5000/v2/quay.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true \n\n - path: /root/kubeadm-config.yaml\n content: |\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: InitConfiguration\n nodeRegistration:\n criSocket: unix:///run/containerd/containerd.sock\n ---\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: ClusterConfiguration\n networking:\n podSubnet: \"10.244.0.0/16\"\n ---\n apiVersion: kubelet.config.k8s.io/v1beta1\n kind: KubeletConfiguration\n cgroupDriver: systemd\n\n - path: /etc/profile.d/kubectl.sh\n content: |\n alias k='kubectl'\n source \u003c(kubectl completion bash)\n complete -o default -F __start_kubectl k\n\n - path: /etc/systemd/system/kubelet.service.d/10-containerd.conf\n content: |\n [Unit]\n After=containerd.service\n Requires=containerd.service\n\n [Service]\n ExecStartPre=/bin/bash -c 'until [ -S /var/run/containerd/containerd.sock ]; do sleep 1; done'\n ExecStartPre=/usr/bin/crictl info\n\n\nruncmd:\n - systemctl enable --now qemu-guest-agent\n - systemctl enable --now ssh\n\n # needed for nvme-tcp module\n - apt install linux-modules-extra-$(uname -r)\n - modprobe nvme-tcp\n - echo \"nvme-tcp\" \u003e\u003e /etc/modules-load.d/nvme-tcp.conf\n\n # relevant to kubernetes\n - modprobe overlay\n - modprobe br_netfilter\n - sysctl --system\n\n # containerd\n - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg\n - echo \"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" \u003e /etc/apt/sources.list.d/docker.list\n - apt-get update \u0026\u0026 apt-get install -y containerd.io\n - cat \u003e /etc/containerd/config.toml \u003c\u003c'xEOF'\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n [plugins.\"io.containerd.grpc.v1.cri\".registry]\n config_path = \"/etc/containerd/certs.d\"\n xEOF \n - systemctl restart containerd\n\n # kubeadm/kubelet/kubectl v1.32\n - curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg\n - echo \"deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /\" \u003e /etc/apt/sources.list.d/kubernetes.list\n - apt-get update \u0026\u0026 apt-get install -y kubelet kubeadm kubectl\n - apt-mark hold kubelet kubeadm kubectl\n\n # join cluster\n - kubeadm join 192.168.0.31:6443 --token nfbk24.0v2qczesuwlxcc6p --discovery-token-ca-cert-hash sha256:c09955e09ba79882ba7766125b57030b2e87dde0ac49af351de28e1c92d0beb9\n\n"},"sensitive_attributes":[],"dependencies":["data.local_file.join_command","libvirt_cloudinit_disk.commoninit","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk","null_resource.kubeadm_token"]}]},{"mode":"managed","type":"libvirt_cloudinit_disk","name":"commoninit_node_02","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-beelink","instances":[{"schema_version":0,"attributes":{"id":"bf025b8c6359dfff","meta_data":"\"instance-id\": \"kube-node-33\"\n\"local-hostname\": \"kube-node-33\"\n","name":"kube-node-33-cloudinit.iso","network_config":"version: 2\nethernets:\n eth0:\n match:\n driver: virtio_net\n addresses:\n - 192.168.0.33/24\n routes:\n - to: default\n via: 192.168.0.4\n nameservers:\n addresses:\n - 8.8.8.8\n","path":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-bf025b8c6359dfff.iso","size":49152,"user_data":"#cloud-config\nhostname: kube-node-33\nusers:\n - name: ubuntu\n sudo: ALL=(ALL) NOPASSWD:ALL\n shell: /bin/bash\n ssh_authorized_keys:\n - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTLxDOQMsumLpjIzMXvpN/hvoMfbVFcl7TDKXTYLBJIvTOLWO/elI3PeJkXNAlaIT1lgJQB7NwQED+DciPLjCLzkG3aSxuJdZRo0Z+vHm9CEUkWnq8icLTQs0zYadK6p24VpMqT61cGNv9L/riciMRWT6l2SdRN2ZBR6MhCXMZy/XgRRlcV9iN1n9T0Q9aZjaQ2CjgG59wTLdQ0bHRlFBSt2q6erFmCIiBHUJba4avDVRvYryvMgkopayL/eK2gxaloMjcMt4z+zIokxhQONPPU2AvqMcqQIsWGQYIzIkJ0UOO8ly/PAFCpgvukWJepmZR30vVBALFCRZCUN1zMbI3 jan.novak@Jans-MacBook-Air-9.local\n\nchpasswd:\n list: |\n ubuntu:yourpassword\n expire: false\nssh_pwauth: true\npackage_update: true\npackages:\n - qemu-guest-agent\n - openssh-server\n - apt-transport-https\n - ca-certificates\n - curl\n - gnupg\n - nvme-cli\n\nwrite_files:\n - path: /etc/modules-load.d/k8s.conf\n content: |\n overlay\n br_netfilter\n\n - path: /etc/sysctl.d/k8s.conf\n content: |\n net.bridge.bridge-nf-call-iptables = 1\n net.bridge.bridge-nf-call-ip6tables = 1\n net.ipv4.ip_forward = 1\n\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n\n # Update existing containerd config to enable registry config_path\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n [plugins.\"io.containerd.grpc.v1.cri\".registry]\n config_path = \"/etc/containerd/certs.d\"\n\n # Mirror configs for each upstream registry\n - path: /etc/containerd/certs.d/docker.io/hosts.toml\n content: |\n server = \"https://registry-1.docker.io\"\n [host.\"http://192.168.0.30:5000/v2/docker.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/registry.k8s.io/hosts.toml\n content: |\n server = \"https://registry.k8s.io\"\n [host.\"http://192.168.0.30:5000/v2/registry.k8s.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/ghcr.io/hosts.toml\n content: |\n server = \"https://ghcr.io\"\n [host.\"http://192.168.0.30:5000/v2/ghcr.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/quay.io/hosts.toml\n content: |\n server = \"https://quay.io\"\n [host.\"http://192.168.0.30:5000/v2/quay.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true \n\n - path: /root/kubeadm-config.yaml\n content: |\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: InitConfiguration\n nodeRegistration:\n criSocket: unix:///run/containerd/containerd.sock\n ---\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: ClusterConfiguration\n networking:\n podSubnet: \"10.244.0.0/16\"\n ---\n apiVersion: kubelet.config.k8s.io/v1beta1\n kind: KubeletConfiguration\n cgroupDriver: systemd\n\n - path: /etc/profile.d/kubectl.sh\n content: |\n alias k='kubectl'\n source \u003c(kubectl completion bash)\n complete -o default -F __start_kubectl k\n\n - path: /etc/systemd/system/kubelet.service.d/10-containerd.conf\n content: |\n [Unit]\n After=containerd.service\n Requires=containerd.service\n\n [Service]\n ExecStartPre=/bin/bash -c 'until [ -S /var/run/containerd/containerd.sock ]; do sleep 1; done'\n ExecStartPre=/usr/bin/crictl info\n\n\nruncmd:\n - systemctl enable --now qemu-guest-agent\n - systemctl enable --now ssh\n\n # needed for nvme-tcp module\n - apt install linux-modules-extra-$(uname -r)\n - modprobe nvme-tcp\n - echo \"nvme-tcp\" \u003e\u003e /etc/modules-load.d/nvme-tcp.conf\n\n # relevant to kubernetes\n - modprobe overlay\n - modprobe br_netfilter\n - sysctl --system\n\n # containerd\n - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg\n - echo \"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" \u003e /etc/apt/sources.list.d/docker.list\n - apt-get update \u0026\u0026 apt-get install -y containerd.io\n - |\n cat \u003e /etc/containerd/config.toml \u003c\u003c'CONTAINERD'\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n [plugins.\"io.containerd.grpc.v1.cri\".registry]\n config_path = \"/etc/containerd/certs.d\"\n CONTAINERD\n - systemctl restart containerd\n\n # kubeadm/kubelet/kubectl v1.32\n - curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg\n - echo \"deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /\" \u003e /etc/apt/sources.list.d/kubernetes.list\n - apt-get update \u0026\u0026 apt-get install -y kubelet kubeadm kubectl\n - apt-mark hold kubelet kubeadm kubectl\n\n # join cluster\n - kubeadm join 192.168.0.31:6443 --token nfbk24.0v2qczesuwlxcc6p --discovery-token-ca-cert-hash sha256:c09955e09ba79882ba7766125b57030b2e87dde0ac49af351de28e1c92d0beb9\n\n"},"sensitive_attributes":[],"dependencies":["data.local_file.join_command","libvirt_cloudinit_disk.commoninit","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk","null_resource.kubeadm_token"]}]},{"mode":"managed","type":"libvirt_domain","name":"master","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"autostart":true,"block_io_tune":null,"bootloader":null,"bootloader_args":null,"clock":null,"cpu":null,"cpu_tune":null,"create":null,"current_memory":null,"current_memory_unit":null,"default_io_thread":null,"description":null,"destroy":null,"devices":{"audios":null,"channels":null,"consoles":null,"controllers":null,"crypto":null,"disks":[{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":null,"driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"qcow2"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/srv/vms/kube-master-31.qcow2","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"virtio","dev":"vda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null},{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":"cdrom","driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"raw"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/srv/vms/kube-master-31-cloudinit.iso","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"sata","dev":"sda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null}],"emulator":null,"filesystems":null,"graphics":null,"hostdevs":null,"hubs":null,"inputs":null,"interfaces":[{"acpi":null,"address":null,"alias":null,"backend":null,"backend_domain":null,"bandwidth":null,"boot":null,"coalesce":null,"down_script":null,"driver":null,"filter_ref":null,"guest":null,"ip":null,"link":null,"mac":null,"managed":null,"model":{"type":"virtio"},"mtu":null,"port_forward":null,"port_options":null,"rom":null,"route":null,"script":null,"source":{"bridge":{"bridge":"br0"},"client":null,"direct":null,"ethernet":null,"hostdev":null,"internal":null,"mcast":null,"network":null,"null":null,"server":null,"udp":null,"user":null,"vdpa":null,"vds":null,"vhost_user":null},"target":null,"teaming":null,"trust_guest_rx_filters":null,"tune":null,"virtual_port":null,"vlan":null,"wait_for_ip":null}],"iommu":null,"leases":null,"mem_balloon":null,"memorydevs":null,"nvram":null,"panics":null,"parallels":null,"pstore":null,"redir_devs":null,"redir_filters":null,"rngs":null,"serials":[{"acpi":null,"address":null,"alias":null,"log":null,"protocol":null,"source":null,"target":null}],"shmems":null,"smartcards":null,"sounds":null,"tpms":null,"videos":null,"vsock":null,"watchdogs":null},"features":null,"gen_id":null,"hwuuid":null,"id":6,"id_map":null,"io_thread_i_ds":null,"io_threads":null,"key_wrap":null,"launch_security":null,"maximum_memory":null,"maximum_memory_slots":null,"maximum_memory_unit":null,"memory":2048,"memory_backing":null,"memory_dump_core":null,"memory_tune":null,"memory_unit":"MiB","metadata":null,"name":"kube-master-31","numa_tune":null,"on_crash":null,"on_poweroff":null,"on_reboot":null,"os":{"acpi":null,"bios":null,"boot_devices":null,"boot_menu":null,"cmdline":null,"dtb":null,"firmware":null,"firmware_info":null,"init":null,"init_args":null,"init_dir":null,"init_env":null,"init_group":null,"init_user":null,"initrd":null,"kernel":null,"loader":null,"loader_format":null,"loader_readonly":null,"loader_secure":null,"loader_stateless":null,"loader_type":null,"nv_ram":null,"shim":null,"sm_bios":null,"type":"hvm","type_arch":"x86_64","type_machine":"q35"},"perf":null,"pm":null,"resource":null,"running":true,"sec_label":null,"sys_info":null,"throttle_groups":null,"title":null,"type":"kvm","uuid":"1d3d2721-a2f0-49d0-a458-a905c4b6e5cd","vcpu":2,"vcpu_cpuset":null,"vcpu_current":null,"vcpu_placement":null,"vcpus":null},"sensitive_attributes":[],"dependencies":["libvirt_cloudinit_disk.commoninit","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk"]}]},{"mode":"managed","type":"libvirt_domain","name":"node_01","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"autostart":true,"block_io_tune":null,"bootloader":null,"bootloader_args":null,"clock":null,"cpu":{"cache":null,"check":null,"deprecated_features":null,"features":null,"match":null,"max_phys_addr":null,"migratable":null,"mode":"host-passthrough","model":null,"model_fallback":null,"model_vendor_id":null,"numa":null,"topology":null,"vendor":null},"cpu_tune":null,"create":null,"current_memory":null,"current_memory_unit":null,"default_io_thread":null,"description":null,"destroy":null,"devices":{"audios":null,"channels":null,"consoles":null,"controllers":null,"crypto":null,"disks":[{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":null,"driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"qcow2"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/srv/vms/kube-node-32.qcow2","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"virtio","dev":"vda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null},{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":"cdrom","driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"raw"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/srv/vms/kube-node-32-cloudinit.iso","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"sata","dev":"sda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null}],"emulator":null,"filesystems":null,"graphics":null,"hostdevs":null,"hubs":null,"inputs":null,"interfaces":[{"acpi":null,"address":null,"alias":null,"backend":null,"backend_domain":null,"bandwidth":null,"boot":null,"coalesce":null,"down_script":null,"driver":null,"filter_ref":null,"guest":null,"ip":null,"link":null,"mac":null,"managed":null,"model":{"type":"virtio"},"mtu":null,"port_forward":null,"port_options":null,"rom":null,"route":null,"script":null,"source":{"bridge":{"bridge":"br0"},"client":null,"direct":null,"ethernet":null,"hostdev":null,"internal":null,"mcast":null,"network":null,"null":null,"server":null,"udp":null,"user":null,"vdpa":null,"vds":null,"vhost_user":null},"target":null,"teaming":null,"trust_guest_rx_filters":null,"tune":null,"virtual_port":null,"vlan":null,"wait_for_ip":null}],"iommu":null,"leases":null,"mem_balloon":null,"memorydevs":null,"nvram":null,"panics":null,"parallels":null,"pstore":null,"redir_devs":null,"redir_filters":null,"rngs":null,"serials":[{"acpi":null,"address":null,"alias":null,"log":null,"protocol":null,"source":null,"target":null}],"shmems":null,"smartcards":null,"sounds":null,"tpms":null,"videos":null,"vsock":null,"watchdogs":null},"features":null,"gen_id":null,"hwuuid":null,"id":10,"id_map":null,"io_thread_i_ds":null,"io_threads":null,"key_wrap":null,"launch_security":null,"maximum_memory":null,"maximum_memory_slots":null,"maximum_memory_unit":null,"memory":8192,"memory_backing":null,"memory_dump_core":null,"memory_tune":null,"memory_unit":"MiB","metadata":null,"name":"kube-node-32","numa_tune":null,"on_crash":null,"on_poweroff":null,"on_reboot":null,"os":{"acpi":null,"bios":null,"boot_devices":null,"boot_menu":null,"cmdline":null,"dtb":null,"firmware":null,"firmware_info":null,"init":null,"init_args":null,"init_dir":null,"init_env":null,"init_group":null,"init_user":null,"initrd":null,"kernel":null,"loader":null,"loader_format":null,"loader_readonly":null,"loader_secure":null,"loader_stateless":null,"loader_type":null,"nv_ram":null,"shim":null,"sm_bios":null,"type":"hvm","type_arch":"x86_64","type_machine":"q35"},"perf":null,"pm":null,"resource":null,"running":true,"sec_label":null,"sys_info":null,"throttle_groups":null,"title":null,"type":"kvm","uuid":"c0edcd4c-f090-41ab-8dae-f49d44a56d0c","vcpu":4,"vcpu_cpuset":null,"vcpu_current":null,"vcpu_placement":null,"vcpus":null},"sensitive_attributes":[],"dependencies":["data.local_file.join_command","libvirt_cloudinit_disk.commoninit","libvirt_cloudinit_disk.commoninit_node_01","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.cloudinit_node_01","libvirt_volume.node_01_disk","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk","null_resource.kubeadm_token"]}]},{"mode":"managed","type":"libvirt_domain","name":"node_02","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-beelink","instances":[{"schema_version":0,"attributes":{"autostart":true,"block_io_tune":null,"bootloader":null,"bootloader_args":null,"clock":null,"cpu":{"cache":null,"check":null,"deprecated_features":null,"features":null,"match":null,"max_phys_addr":null,"migratable":null,"mode":"host-passthrough","model":null,"model_fallback":null,"model_vendor_id":null,"numa":null,"topology":null,"vendor":null},"cpu_tune":null,"create":null,"current_memory":null,"current_memory_unit":null,"default_io_thread":null,"description":null,"destroy":null,"devices":{"audios":null,"channels":null,"consoles":null,"controllers":null,"crypto":null,"disks":[{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":null,"driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"qcow2"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/var/lib/libvirt/images/kube-node-33.qcow2","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"virtio","dev":"vda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null},{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":"cdrom","driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"raw"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/var/lib/libvirt/images/kube-node-33-cloudinit.iso","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"sata","dev":"sda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null}],"emulator":null,"filesystems":null,"graphics":null,"hostdevs":null,"hubs":null,"inputs":null,"interfaces":[{"acpi":null,"address":null,"alias":null,"backend":null,"backend_domain":null,"bandwidth":null,"boot":null,"coalesce":null,"down_script":null,"driver":null,"filter_ref":null,"guest":null,"ip":null,"link":null,"mac":null,"managed":null,"model":{"type":"virtio"},"mtu":null,"port_forward":null,"port_options":null,"rom":null,"route":null,"script":null,"source":{"bridge":{"bridge":"br0"},"client":null,"direct":null,"ethernet":null,"hostdev":null,"internal":null,"mcast":null,"network":null,"null":null,"server":null,"udp":null,"user":null,"vdpa":null,"vds":null,"vhost_user":null},"target":null,"teaming":null,"trust_guest_rx_filters":null,"tune":null,"virtual_port":null,"vlan":null,"wait_for_ip":null}],"iommu":null,"leases":null,"mem_balloon":null,"memorydevs":null,"nvram":null,"panics":null,"parallels":null,"pstore":null,"redir_devs":null,"redir_filters":null,"rngs":null,"serials":[{"acpi":null,"address":null,"alias":null,"log":null,"protocol":null,"source":null,"target":null}],"shmems":null,"smartcards":null,"sounds":null,"tpms":null,"videos":null,"vsock":null,"watchdogs":null},"features":null,"gen_id":null,"hwuuid":null,"id":15,"id_map":null,"io_thread_i_ds":null,"io_threads":null,"key_wrap":null,"launch_security":null,"maximum_memory":null,"maximum_memory_slots":null,"maximum_memory_unit":null,"memory":8192,"memory_backing":null,"memory_dump_core":null,"memory_tune":null,"memory_unit":"MiB","metadata":null,"name":"kube-node-33","numa_tune":null,"on_crash":null,"on_poweroff":null,"on_reboot":null,"os":{"acpi":null,"bios":null,"boot_devices":null,"boot_menu":null,"cmdline":null,"dtb":null,"firmware":null,"firmware_info":null,"init":null,"init_args":null,"init_dir":null,"init_env":null,"init_group":null,"init_user":null,"initrd":null,"kernel":null,"loader":null,"loader_format":null,"loader_readonly":null,"loader_secure":null,"loader_stateless":null,"loader_type":null,"nv_ram":null,"shim":null,"sm_bios":null,"type":"hvm","type_arch":"x86_64","type_machine":"q35"},"perf":null,"pm":null,"resource":null,"running":true,"sec_label":null,"sys_info":null,"throttle_groups":null,"title":null,"type":"kvm","uuid":"83795bdf-38eb-49d2-90c4-bd37335de158","vcpu":4,"vcpu_cpuset":null,"vcpu_current":null,"vcpu_placement":null,"vcpus":null},"sensitive_attributes":[],"dependencies":["data.local_file.join_command","libvirt_cloudinit_disk.commoninit","libvirt_cloudinit_disk.commoninit_node_02","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.cloudinit_node_02","libvirt_volume.node_02_disk","libvirt_volume.ubuntu_base_beelink","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk","null_resource.kubeadm_token"]}]},{"mode":"managed","type":"libvirt_volume","name":"cloudinit","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":49152,"allocation_unit":null,"backing_store":null,"capacity":49152,"capacity_unit":null,"create":{"content":{"url":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-295268ac2ef5dcc3.iso"}},"id":"/srv/vms/kube-master-31-cloudinit.iso","key":"/srv/vms/kube-master-31-cloudinit.iso","name":"kube-master-31-cloudinit.iso","path":"/srv/vms/kube-master-31-cloudinit.iso","physical":49152,"physical_unit":null,"pool":"default","target":null,"type":null},"sensitive_attributes":[],"dependencies":["libvirt_cloudinit_disk.commoninit"]}]},{"mode":"managed","type":"libvirt_volume","name":"cloudinit_node_01","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":49152,"allocation_unit":null,"backing_store":null,"capacity":49152,"capacity_unit":null,"create":{"content":{"url":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-845e3681ac0f1b93.iso"}},"id":"/srv/vms/kube-node-32-cloudinit.iso","key":"/srv/vms/kube-node-32-cloudinit.iso","name":"kube-node-32-cloudinit.iso","path":"/srv/vms/kube-node-32-cloudinit.iso","physical":49152,"physical_unit":null,"pool":"default","target":null,"type":null},"sensitive_attributes":[],"dependencies":["data.local_file.join_command","libvirt_cloudinit_disk.commoninit","libvirt_cloudinit_disk.commoninit_node_01","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk","null_resource.kubeadm_token"]}]},{"mode":"managed","type":"libvirt_volume","name":"cloudinit_node_02","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-beelink","instances":[{"schema_version":0,"attributes":{"allocation":49152,"allocation_unit":null,"backing_store":null,"capacity":49152,"capacity_unit":null,"create":{"content":{"url":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-bf025b8c6359dfff.iso"}},"id":"/var/lib/libvirt/images/kube-node-33-cloudinit.iso","key":"/var/lib/libvirt/images/kube-node-33-cloudinit.iso","name":"kube-node-33-cloudinit.iso","path":"/var/lib/libvirt/images/kube-node-33-cloudinit.iso","physical":49152,"physical_unit":null,"pool":"default","target":null,"type":null},"sensitive_attributes":[],"dependencies":["data.local_file.join_command","libvirt_cloudinit_disk.commoninit","libvirt_cloudinit_disk.commoninit_node_02","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk","null_resource.kubeadm_token"]}]},{"mode":"managed","type":"libvirt_volume","name":"node_01_disk","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":15701405696,"allocation_unit":null,"backing_store":{"format":{"type":"qcow2"},"path":"/srv/vms/ubuntu-24.04-base.qcow2","permissions":null},"capacity":21474836480,"capacity_unit":null,"create":null,"id":"/srv/vms/kube-node-32.qcow2","key":"/srv/vms/kube-node-32.qcow2","name":"kube-node-32.qcow2","path":"/srv/vms/kube-node-32.qcow2","physical":15701245952,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/srv/vms/kube-node-32.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[],"dependencies":["libvirt_volume.ubuntu_base_homer"]}]},{"mode":"managed","type":"libvirt_volume","name":"node_02_disk","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-beelink","instances":[{"schema_version":0,"attributes":{"allocation":200704,"allocation_unit":null,"backing_store":{"format":{"type":"qcow2"},"path":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","permissions":null},"capacity":21474836480,"capacity_unit":null,"create":null,"id":"/var/lib/libvirt/images/kube-node-33.qcow2","key":"/var/lib/libvirt/images/kube-node-33.qcow2","name":"kube-node-33.qcow2","path":"/var/lib/libvirt/images/kube-node-33.qcow2","physical":196928,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/var/lib/libvirt/images/kube-node-33.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[],"dependencies":["libvirt_volume.ubuntu_base_beelink"]}]},{"mode":"managed","type":"libvirt_volume","name":"ubuntu_base_beelink","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-beelink","instances":[{"schema_version":0,"attributes":{"allocation":626663424,"allocation_unit":null,"backing_store":null,"capacity":3758096384,"capacity_unit":null,"create":{"content":{"url":"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img"}},"id":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","key":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","name":"ubuntu-24.04-base.qcow2","path":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","physical":626655744,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[]}]},{"mode":"managed","type":"libvirt_volume","name":"ubuntu_base_homer","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":626663424,"allocation_unit":null,"backing_store":null,"capacity":3758096384,"capacity_unit":null,"create":{"content":{"url":"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img"}},"id":"/srv/vms/ubuntu-24.04-base.qcow2","key":"/srv/vms/ubuntu-24.04-base.qcow2","name":"ubuntu-24.04-base.qcow2","path":"/srv/vms/ubuntu-24.04-base.qcow2","physical":626655744,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/srv/vms/ubuntu-24.04-base.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[]}]},{"mode":"managed","type":"libvirt_volume","name":"ubuntu_disk","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":7336095744,"allocation_unit":null,"backing_store":{"format":{"type":"qcow2"},"path":"/srv/vms/ubuntu-24.04-base.qcow2","permissions":null},"capacity":21474836480,"capacity_unit":null,"create":null,"id":"/srv/vms/kube-master-31.qcow2","key":"/srv/vms/kube-master-31.qcow2","name":"kube-master-31.qcow2","path":"/srv/vms/kube-master-31.qcow2","physical":7335968768,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/srv/vms/kube-master-31.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[],"dependencies":["libvirt_volume.ubuntu_base_homer"]}]},{"mode":"managed","type":"null_resource","name":"kubeadm_token","provider":"provider[\"registry.opentofu.org/hashicorp/null\"]","instances":[{"schema_version":0,"attributes":{"id":"591435519595944093","triggers":null},"sensitive_attributes":[],"dependencies":["libvirt_cloudinit_disk.commoninit","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk"]}]},{"mode":"managed","type":"null_resource","name":"kubeconfig","provider":"provider[\"registry.opentofu.org/hashicorp/null\"]","instances":[{"schema_version":0,"attributes":{"id":"8367063358226307615","triggers":null},"sensitive_attributes":[]}]}],"check_results":null} diff --git a/kubernetes-kvm-terraform/terraform.tfstate.backup b/kubernetes-kvm-terraform/terraform.tfstate.backup index 3c3b645..5df3ecf 100644 --- a/kubernetes-kvm-terraform/terraform.tfstate.backup +++ b/kubernetes-kvm-terraform/terraform.tfstate.backup @@ -1 +1 @@ -{"version":4,"terraform_version":"1.11.2","serial":76,"lineage":"69f81358-9017-b0fa-2e3d-404364b1f698","outputs":{"master_ip":{"value":"192.168.0.31","type":"string"},"node_01_ip":{"value":"192.168.0.32","type":"string"},"node_02_ip":{"value":"192.168.0.33","type":"string"}},"resources":[{"mode":"data","type":"local_file","name":"join_command","provider":"provider[\"registry.opentofu.org/hashicorp/local\"]","instances":[{"schema_version":0,"attributes":{"content":"kubeadm join 192.168.0.31:6443 --token i8sc47.w8owfnvyawzvibfr --discovery-token-ca-cert-hash sha256:c09955e09ba79882ba7766125b57030b2e87dde0ac49af351de28e1c92d0beb9 \n","content_base64":"a3ViZWFkbSBqb2luIDE5Mi4xNjguMC4zMTo2NDQzIC0tdG9rZW4gaThzYzQ3Lnc4b3dmbnZ5YXd6dmliZnIgLS1kaXNjb3ZlcnktdG9rZW4tY2EtY2VydC1oYXNoIHNoYTI1NjpjMDk5NTVlMDliYTc5ODgyYmE3NzY2MTI1YjU3MDMwYjJlODdkZGUwYWM0OWFmMzUxZGUyOGUxYzkyZDBiZWI5IAo=","content_base64sha256":"4z0aBjXMjPeB7yGR3iVOIvEEffPSeesyBacAVbgib7w=","content_base64sha512":"7pxqGceqOMNfxi90eDbDAPqH97ItEphxCTlKOuIioXE64j4v5Adt6QaH+bcrv9WAwwPcJMrgK1mglagVQp4ahw==","content_md5":"42bf34177233f04ac2089852085c9b23","content_sha1":"ffb8f5b520aeaa9521a6b6cc1244dc5167c1907b","content_sha256":"e33d1a0635cc8cf781ef2191de254e22f1047df3d279eb3205a70055b8226fbc","content_sha512":"ee9c6a19c7aa38c35fc62f747836c300fa87f7b22d12987109394a3ae222a1713ae23e2fe4076de90687f9b72bbfd580c303dc24cae02b59a095a815429e1a87","filename":"./join-command.txt","id":"ffb8f5b520aeaa9521a6b6cc1244dc5167c1907b"},"sensitive_attributes":[]}]},{"mode":"managed","type":"libvirt_cloudinit_disk","name":"commoninit","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"id":"9b5efd668378a2cc","meta_data":"\"instance-id\": \"kube-master-31\"\n\"local-hostname\": \"kube-master-31\"\n","name":"kube-master-31-cloudinit.iso","network_config":"version: 2\nethernets:\n eth0:\n match:\n driver: virtio_net\n addresses:\n - 192.168.0.31/24\n routes:\n - to: default\n via: 192.168.0.4\n nameservers:\n addresses:\n - 8.8.8.8\n","path":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-9b5efd668378a2cc.iso","size":49152,"user_data":"#cloud-config\nhostname: kube-master-31\nusers:\n - name: ubuntu\n sudo: ALL=(ALL) NOPASSWD:ALL\n shell: /bin/bash\n ssh_authorized_keys:\n - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTLxDOQMsumLpjIzMXvpN/hvoMfbVFcl7TDKXTYLBJIvTOLWO/elI3PeJkXNAlaIT1lgJQB7NwQED+DciPLjCLzkG3aSxuJdZRo0Z+vHm9CEUkWnq8icLTQs0zYadK6p24VpMqT61cGNv9L/riciMRWT6l2SdRN2ZBR6MhCXMZy/XgRRlcV9iN1n9T0Q9aZjaQ2CjgG59wTLdQ0bHRlFBSt2q6erFmCIiBHUJba4avDVRvYryvMgkopayL/eK2gxaloMjcMt4z+zIokxhQONPPU2AvqMcqQIsWGQYIzIkJ0UOO8ly/PAFCpgvukWJepmZR30vVBALFCRZCUN1zMbI3 jan.novak@Jans-MacBook-Air-9.local\n\nchpasswd:\n list: |\n ubuntu:yourpassword\n expire: false\nssh_pwauth: true\npackage_update: true\npackages:\n - qemu-guest-agent\n - openssh-server\n - apt-transport-https\n - ca-certificates\n - curl\n - gnupg \n\nwrite_files:\n - path: /etc/modules-load.d/k8s.conf\n content: |\n overlay\n br_netfilter\n\n - path: /etc/sysctl.d/k8s.conf\n content: |\n net.bridge.bridge-nf-call-iptables = 1\n net.bridge.bridge-nf-call-ip6tables = 1\n net.ipv4.ip_forward = 1\n\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n\n # Update existing containerd config to enable registry config_path\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n [plugins.\"io.containerd.grpc.v1.cri\".registry]\n config_path = \"/etc/containerd/certs.d\"\n\n # Mirror configs for each upstream registry\n - path: /etc/containerd/certs.d/docker.io/hosts.toml\n content: |\n server = \"https://registry-1.docker.io\"\n [host.\"http://192.168.0.30:5000/v2/docker.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/registry.k8s.io/hosts.toml\n content: |\n server = \"https://registry.k8s.io\"\n [host.\"http://192.168.0.30:5000/v2/registry.k8s.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/ghcr.io/hosts.toml\n content: |\n server = \"https://ghcr.io\"\n [host.\"http://192.168.0.30:5000/v2/ghcr.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/quay.io/hosts.toml\n content: |\n server = \"https://quay.io\"\n [host.\"http://192.168.0.30:5000/v2/quay.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true \n\n - path: /root/kubeadm-config.yaml\n content: |\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: InitConfiguration\n nodeRegistration:\n criSocket: unix:///run/containerd/containerd.sock\n ---\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: ClusterConfiguration\n networking:\n podSubnet: \"10.244.0.0/16\"\n ---\n apiVersion: kubelet.config.k8s.io/v1beta1\n kind: KubeletConfiguration\n cgroupDriver: systemd\n\n - path: /etc/profile.d/kubectl.sh\n content: |\n alias k='kubectl'\n source \u003c(kubectl completion bash)\n complete -o default -F __start_kubectl k \n\nruncmd:\n - systemctl enable --now qemu-guest-agent\n - systemctl enable --now ssh\n\n # relevant to kubernetes\n - modprobe overlay\n - modprobe br_netfilter\n - sysctl --system\n\n # containerd\n - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg\n - echo \"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" \u003e /etc/apt/sources.list.d/docker.list\n - apt-get update \u0026\u0026 apt-get install -y containerd.io\n - systemctl restart containerd\n\n # kubeadm/kubelet/kubectl v1.32\n - curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg\n - echo \"deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /\" \u003e /etc/apt/sources.list.d/kubernetes.list\n - apt-get update \u0026\u0026 apt-get install -y kubelet kubeadm kubectl\n - apt-mark hold kubelet kubeadm kubectl\n\n\n # init cluster\n - kubeadm init --config=/root/kubeadm-config.yaml --skip-phases=addon/kube-proxy\n \n # kubeconfig for root\n - mkdir -p /root/.kube \u0026\u0026 cp /etc/kubernetes/admin.conf /root/.kube/config\n\n # wait for API server\n - |\n echo \"Waiting for API server...\"\n until kubectl --kubeconfig=/etc/kubernetes/admin.conf get nodes ; do\n echo \"Waiting for API server...\"\n sleep 5\n done\n\n # CNI (cilium example, swap for flannel/calico as needed)\n - |\n CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt)\n curl -L --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-amd64.tar.gz\n tar xzvf cilium-linux-amd64.tar.gz -C /usr/local/bin\n cilium install --kubeconfig=/etc/kubernetes/admin.conf --set kubeProxyReplacement=true --wait \n"},"sensitive_attributes":[]}]},{"mode":"managed","type":"libvirt_domain","name":"master","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"autostart":true,"block_io_tune":null,"bootloader":null,"bootloader_args":null,"clock":null,"cpu":null,"cpu_tune":null,"create":null,"current_memory":null,"current_memory_unit":null,"default_io_thread":null,"description":null,"destroy":null,"devices":{"audios":null,"channels":null,"consoles":null,"controllers":null,"crypto":null,"disks":[{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":null,"driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"qcow2"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/srv/vms/kube-master-31.qcow2","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"virtio","dev":"vda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null},{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":"cdrom","driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"raw"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/srv/vms/kube-master-31-cloudinit.iso","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"sata","dev":"sda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null}],"emulator":null,"filesystems":null,"graphics":null,"hostdevs":null,"hubs":null,"inputs":null,"interfaces":[{"acpi":null,"address":null,"alias":null,"backend":null,"backend_domain":null,"bandwidth":null,"boot":null,"coalesce":null,"down_script":null,"driver":null,"filter_ref":null,"guest":null,"ip":null,"link":null,"mac":null,"managed":null,"model":{"type":"virtio"},"mtu":null,"port_forward":null,"port_options":null,"rom":null,"route":null,"script":null,"source":{"bridge":{"bridge":"br0"},"client":null,"direct":null,"ethernet":null,"hostdev":null,"internal":null,"mcast":null,"network":null,"null":null,"server":null,"udp":null,"user":null,"vdpa":null,"vds":null,"vhost_user":null},"target":null,"teaming":null,"trust_guest_rx_filters":null,"tune":null,"virtual_port":null,"vlan":null,"wait_for_ip":null}],"iommu":null,"leases":null,"mem_balloon":null,"memorydevs":null,"nvram":null,"panics":null,"parallels":null,"pstore":null,"redir_devs":null,"redir_filters":null,"rngs":null,"serials":[{"acpi":null,"address":null,"alias":null,"log":null,"protocol":null,"source":null,"target":null}],"shmems":null,"smartcards":null,"sounds":null,"tpms":null,"videos":null,"vsock":null,"watchdogs":null},"features":null,"gen_id":null,"hwuuid":null,"id":49,"id_map":null,"io_thread_i_ds":null,"io_threads":null,"key_wrap":null,"launch_security":null,"maximum_memory":null,"maximum_memory_slots":null,"maximum_memory_unit":null,"memory":2048,"memory_backing":null,"memory_dump_core":null,"memory_tune":null,"memory_unit":"MiB","metadata":null,"name":"kube-master-31","numa_tune":null,"on_crash":null,"on_poweroff":null,"on_reboot":null,"os":{"acpi":null,"bios":null,"boot_devices":null,"boot_menu":null,"cmdline":null,"dtb":null,"firmware":null,"firmware_info":null,"init":null,"init_args":null,"init_dir":null,"init_env":null,"init_group":null,"init_user":null,"initrd":null,"kernel":null,"loader":null,"loader_format":null,"loader_readonly":null,"loader_secure":null,"loader_stateless":null,"loader_type":null,"nv_ram":null,"shim":null,"sm_bios":null,"type":"hvm","type_arch":"x86_64","type_machine":"q35"},"perf":null,"pm":null,"resource":null,"running":true,"sec_label":null,"sys_info":null,"throttle_groups":null,"title":null,"type":"kvm","uuid":"1d3d2721-a2f0-49d0-a458-a905c4b6e5cd","vcpu":2,"vcpu_cpuset":null,"vcpu_current":null,"vcpu_placement":null,"vcpus":null},"sensitive_attributes":[],"dependencies":["libvirt_cloudinit_disk.commoninit","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk"]}]},{"mode":"managed","type":"libvirt_volume","name":"cloudinit","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":49152,"allocation_unit":null,"backing_store":null,"capacity":49152,"capacity_unit":null,"create":{"content":{"url":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-9b5efd668378a2cc.iso"}},"id":"/srv/vms/kube-master-31-cloudinit.iso","key":"/srv/vms/kube-master-31-cloudinit.iso","name":"kube-master-31-cloudinit.iso","path":"/srv/vms/kube-master-31-cloudinit.iso","physical":49152,"physical_unit":null,"pool":"default","target":null,"type":null},"sensitive_attributes":[],"dependencies":["libvirt_cloudinit_disk.commoninit"]}]},{"mode":"managed","type":"libvirt_volume","name":"node_01_disk","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":10389557248,"allocation_unit":null,"backing_store":{"format":{"type":"qcow2"},"path":"/srv/vms/ubuntu-24.04-base.qcow2","permissions":null},"capacity":21474836480,"capacity_unit":null,"create":null,"id":"/srv/vms/kube-node-32.qcow2","key":"/srv/vms/kube-node-32.qcow2","name":"kube-node-32.qcow2","path":"/srv/vms/kube-node-32.qcow2","physical":10389487616,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/srv/vms/kube-node-32.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[],"dependencies":["libvirt_volume.ubuntu_base_homer"]}]},{"mode":"managed","type":"libvirt_volume","name":"node_02_disk","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-beelink","instances":[{"schema_version":0,"attributes":{"allocation":200704,"allocation_unit":null,"backing_store":{"format":{"type":"qcow2"},"path":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","permissions":null},"capacity":21474836480,"capacity_unit":null,"create":null,"id":"/var/lib/libvirt/images/kube-node-33.qcow2","key":"/var/lib/libvirt/images/kube-node-33.qcow2","name":"kube-node-33.qcow2","path":"/var/lib/libvirt/images/kube-node-33.qcow2","physical":196928,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/var/lib/libvirt/images/kube-node-33.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[],"dependencies":["libvirt_volume.ubuntu_base_beelink"]}]},{"mode":"managed","type":"libvirt_volume","name":"ubuntu_base_beelink","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-beelink","instances":[{"schema_version":0,"attributes":{"allocation":626663424,"allocation_unit":null,"backing_store":null,"capacity":3758096384,"capacity_unit":null,"create":{"content":{"url":"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img"}},"id":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","key":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","name":"ubuntu-24.04-base.qcow2","path":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","physical":626655744,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[]}]},{"mode":"managed","type":"libvirt_volume","name":"ubuntu_base_homer","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":626663424,"allocation_unit":null,"backing_store":null,"capacity":3758096384,"capacity_unit":null,"create":{"content":{"url":"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img"}},"id":"/srv/vms/ubuntu-24.04-base.qcow2","key":"/srv/vms/ubuntu-24.04-base.qcow2","name":"ubuntu-24.04-base.qcow2","path":"/srv/vms/ubuntu-24.04-base.qcow2","physical":626655744,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/srv/vms/ubuntu-24.04-base.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[]}]},{"mode":"managed","type":"libvirt_volume","name":"ubuntu_disk","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":4331999232,"allocation_unit":null,"backing_store":{"format":{"type":"qcow2"},"path":"/srv/vms/ubuntu-24.04-base.qcow2","permissions":null},"capacity":21474836480,"capacity_unit":null,"create":null,"id":"/srv/vms/kube-master-31.qcow2","key":"/srv/vms/kube-master-31.qcow2","name":"kube-master-31.qcow2","path":"/srv/vms/kube-master-31.qcow2","physical":4331929600,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/srv/vms/kube-master-31.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[],"dependencies":["libvirt_volume.ubuntu_base_homer"]}]},{"mode":"managed","type":"null_resource","name":"kubeconfig","provider":"provider[\"registry.opentofu.org/hashicorp/null\"]","instances":[{"schema_version":0,"attributes":{"id":"8367063358226307615","triggers":null},"sensitive_attributes":[]}]}],"check_results":null} +{"version":4,"terraform_version":"1.11.2","serial":87,"lineage":"69f81358-9017-b0fa-2e3d-404364b1f698","outputs":{"master_ip":{"value":"192.168.0.31","type":"string"},"node_01_ip":{"value":"192.168.0.32","type":"string"},"node_02_ip":{"value":"192.168.0.33","type":"string"}},"resources":[{"mode":"data","type":"local_file","name":"join_command","provider":"provider[\"registry.opentofu.org/hashicorp/local\"]","instances":[{"schema_version":0,"attributes":{"content":"kubeadm join 192.168.0.31:6443 --token nfbk24.0v2qczesuwlxcc6p --discovery-token-ca-cert-hash sha256:c09955e09ba79882ba7766125b57030b2e87dde0ac49af351de28e1c92d0beb9 \n","content_base64":"a3ViZWFkbSBqb2luIDE5Mi4xNjguMC4zMTo2NDQzIC0tdG9rZW4gbmZiazI0LjB2MnFjemVzdXdseGNjNnAgLS1kaXNjb3ZlcnktdG9rZW4tY2EtY2VydC1oYXNoIHNoYTI1NjpjMDk5NTVlMDliYTc5ODgyYmE3NzY2MTI1YjU3MDMwYjJlODdkZGUwYWM0OWFmMzUxZGUyOGUxYzkyZDBiZWI5IAo=","content_base64sha256":"UhrHXweUjlkBKNBJBsvyv/UF8Z0HavzxjmvvKtPqExI=","content_base64sha512":"9/PxTzu68Zk9icpO9YFUsMcre2PYkbUtCL1FzCPwErHDI0pxIx/kfbe5cwC8TFu6QZyCfxeyDHt49T4leKwqrw==","content_md5":"5a600470c8b9f2afabb0244f3b11cbde","content_sha1":"6f257920dd5627719ef5c5f181ce8a310b93b22f","content_sha256":"521ac75f07948e590128d04906cbf2bff505f19d076afcf18e6bef2ad3ea1312","content_sha512":"f7f3f14f3bbaf1993d89ca4ef58154b0c72b7b63d891b52d08bd45cc23f012b1c3234a71231fe47db7b97300bc4c5bba419c827f17b20c7b78f53e2578ac2aaf","filename":"./join-command.txt","id":"6f257920dd5627719ef5c5f181ce8a310b93b22f"},"sensitive_attributes":[]}]},{"mode":"managed","type":"libvirt_cloudinit_disk","name":"commoninit","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"id":"295268ac2ef5dcc3","meta_data":"\"instance-id\": \"kube-master-31\"\n\"local-hostname\": \"kube-master-31\"\n","name":"kube-master-31-cloudinit.iso","network_config":"version: 2\nethernets:\n eth0:\n match:\n driver: virtio_net\n addresses:\n - 192.168.0.31/24\n routes:\n - to: default\n via: 192.168.0.4\n nameservers:\n addresses:\n - 8.8.8.8\n","path":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-295268ac2ef5dcc3.iso","size":49152,"user_data":"#cloud-config\nhostname: kube-master-31\nusers:\n - name: ubuntu\n sudo: ALL=(ALL) NOPASSWD:ALL\n shell: /bin/bash\n ssh_authorized_keys:\n - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTLxDOQMsumLpjIzMXvpN/hvoMfbVFcl7TDKXTYLBJIvTOLWO/elI3PeJkXNAlaIT1lgJQB7NwQED+DciPLjCLzkG3aSxuJdZRo0Z+vHm9CEUkWnq8icLTQs0zYadK6p24VpMqT61cGNv9L/riciMRWT6l2SdRN2ZBR6MhCXMZy/XgRRlcV9iN1n9T0Q9aZjaQ2CjgG59wTLdQ0bHRlFBSt2q6erFmCIiBHUJba4avDVRvYryvMgkopayL/eK2gxaloMjcMt4z+zIokxhQONPPU2AvqMcqQIsWGQYIzIkJ0UOO8ly/PAFCpgvukWJepmZR30vVBALFCRZCUN1zMbI3 jan.novak@Jans-MacBook-Air-9.local\n\nchpasswd:\n list: |\n ubuntu:yourpassword\n expire: false\nssh_pwauth: true\npackage_update: true\npackages:\n - qemu-guest-agent\n - openssh-server\n - apt-transport-https\n - ca-certificates\n - curl\n - gnupg \n\nwrite_files:\n - path: /etc/modules-load.d/k8s.conf\n content: |\n overlay\n br_netfilter\n\n - path: /etc/sysctl.d/k8s.conf\n content: |\n net.bridge.bridge-nf-call-iptables = 1\n net.bridge.bridge-nf-call-ip6tables = 1\n net.ipv4.ip_forward = 1\n\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n\n # Update existing containerd config to enable registry config_path\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n [plugins.\"io.containerd.grpc.v1.cri\".registry]\n config_path = \"/etc/containerd/certs.d\"\n\n # Mirror configs for each upstream registry\n - path: /etc/containerd/certs.d/docker.io/hosts.toml\n content: |\n server = \"https://registry-1.docker.io\"\n [host.\"http://192.168.0.30:5000/v2/docker.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/registry.k8s.io/hosts.toml\n content: |\n server = \"https://registry.k8s.io\"\n [host.\"http://192.168.0.30:5000/v2/registry.k8s.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/ghcr.io/hosts.toml\n content: |\n server = \"https://ghcr.io\"\n [host.\"http://192.168.0.30:5000/v2/ghcr.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/quay.io/hosts.toml\n content: |\n server = \"https://quay.io\"\n [host.\"http://192.168.0.30:5000/v2/quay.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true \n\n - path: /root/kubeadm-config.yaml\n content: |\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: InitConfiguration\n nodeRegistration:\n criSocket: unix:///run/containerd/containerd.sock\n ---\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: ClusterConfiguration\n extraArgs:\n oidc-issuer-url: \"https://idm.home.hrajfrisbee.cz/oauth2/openid/k8s\"\n oidc-client-id: \"k8s\"\n oidc-signing-algs: \"ES256\" \n networking:\n podSubnet: \"10.244.0.0/16\"\n ---\n apiVersion: kubelet.config.k8s.io/v1beta1\n kind: KubeletConfiguration\n cgroupDriver: systemd\n\n - path: /etc/profile.d/kubectl.sh\n content: |\n alias k='kubectl'\n source \u003c(kubectl completion bash)\n complete -o default -F __start_kubectl k \n\nruncmd:\n - systemctl enable --now qemu-guest-agent\n - systemctl enable --now ssh\n\n # relevant to kubernetes\n - modprobe overlay\n - modprobe br_netfilter\n - sysctl --system\n\n # containerd\n - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg\n - echo \"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" \u003e /etc/apt/sources.list.d/docker.list\n - apt-get update \u0026\u0026 apt-get install -y containerd.io\n - systemctl restart containerd\n\n # kubeadm/kubelet/kubectl v1.32\n - curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg\n - echo \"deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /\" \u003e /etc/apt/sources.list.d/kubernetes.list\n - apt-get update \u0026\u0026 apt-get install -y kubelet kubeadm kubectl\n - apt-mark hold kubelet kubeadm kubectl\n\n\n # init cluster\n - kubeadm init --config=/root/kubeadm-config.yaml --skip-phases=addon/kube-proxy\n \n # kubeconfig for root\n - mkdir -p /root/.kube \u0026\u0026 cp /etc/kubernetes/admin.conf /root/.kube/config\n\n # wait for API server\n - |\n echo \"Waiting for API server...\"\n until kubectl --kubeconfig=/etc/kubernetes/admin.conf get nodes ; do\n echo \"Waiting for API server...\"\n sleep 5\n done\n\n # CNI (cilium example, swap for flannel/calico as needed)\n - |\n CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt)\n curl -L --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-amd64.tar.gz\n tar xzvf cilium-linux-amd64.tar.gz -C /usr/local/bin\n cilium install --kubeconfig=/etc/kubernetes/admin.conf --set kubeProxyReplacement=true --wait \n"},"sensitive_attributes":[]}]},{"mode":"managed","type":"libvirt_cloudinit_disk","name":"commoninit_node_01","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"id":"845e3681ac0f1b93","meta_data":"\"instance-id\": \"kube-node-32\"\n\"local-hostname\": \"kube-node-32\"\n","name":"kube-node-32-cloudinit.iso","network_config":"version: 2\nethernets:\n eth0:\n match:\n driver: virtio_net\n addresses:\n - 192.168.0.32/24\n routes:\n - to: default\n via: 192.168.0.4\n nameservers:\n addresses:\n - 8.8.8.8\n","path":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-845e3681ac0f1b93.iso","size":49152,"user_data":"#cloud-config\nhostname: kube-node-32\nusers:\n - name: ubuntu\n sudo: ALL=(ALL) NOPASSWD:ALL\n shell: /bin/bash\n ssh_authorized_keys:\n - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTLxDOQMsumLpjIzMXvpN/hvoMfbVFcl7TDKXTYLBJIvTOLWO/elI3PeJkXNAlaIT1lgJQB7NwQED+DciPLjCLzkG3aSxuJdZRo0Z+vHm9CEUkWnq8icLTQs0zYadK6p24VpMqT61cGNv9L/riciMRWT6l2SdRN2ZBR6MhCXMZy/XgRRlcV9iN1n9T0Q9aZjaQ2CjgG59wTLdQ0bHRlFBSt2q6erFmCIiBHUJba4avDVRvYryvMgkopayL/eK2gxaloMjcMt4z+zIokxhQONPPU2AvqMcqQIsWGQYIzIkJ0UOO8ly/PAFCpgvukWJepmZR30vVBALFCRZCUN1zMbI3 jan.novak@Jans-MacBook-Air-9.local\n\nchpasswd:\n list: |\n ubuntu:yourpassword\n expire: false\nssh_pwauth: true\npackage_update: true\npackages:\n - qemu-guest-agent\n - openssh-server\n - apt-transport-https\n - ca-certificates\n - curl\n - gnupg\n - nvme-cli\n\nwrite_files:\n - path: /etc/modules-load.d/k8s.conf\n content: |\n overlay\n br_netfilter\n\n - path: /etc/sysctl.d/k8s.conf\n content: |\n net.bridge.bridge-nf-call-iptables = 1\n net.bridge.bridge-nf-call-ip6tables = 1\n net.ipv4.ip_forward = 1\n\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n\n # Update existing containerd config to enable registry config_path\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n [plugins.\"io.containerd.grpc.v1.cri\".registry]\n config_path = \"/etc/containerd/certs.d\"\n\n # Mirror configs for each upstream registry\n - path: /etc/containerd/certs.d/docker.io/hosts.toml\n content: |\n server = \"https://registry-1.docker.io\"\n [host.\"http://192.168.0.30:5000/v2/docker.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/registry.k8s.io/hosts.toml\n content: |\n server = \"https://registry.k8s.io\"\n [host.\"http://192.168.0.30:5000/v2/registry.k8s.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/ghcr.io/hosts.toml\n content: |\n server = \"https://ghcr.io\"\n [host.\"http://192.168.0.30:5000/v2/ghcr.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/quay.io/hosts.toml\n content: |\n server = \"https://quay.io\"\n [host.\"http://192.168.0.30:5000/v2/quay.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true \n\n - path: /root/kubeadm-config.yaml\n content: |\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: InitConfiguration\n nodeRegistration:\n criSocket: unix:///run/containerd/containerd.sock\n ---\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: ClusterConfiguration\n networking:\n podSubnet: \"10.244.0.0/16\"\n ---\n apiVersion: kubelet.config.k8s.io/v1beta1\n kind: KubeletConfiguration\n cgroupDriver: systemd\n\n - path: /etc/profile.d/kubectl.sh\n content: |\n alias k='kubectl'\n source \u003c(kubectl completion bash)\n complete -o default -F __start_kubectl k\n\n - path: /etc/systemd/system/kubelet.service.d/10-containerd.conf\n content: |\n [Unit]\n After=containerd.service\n Requires=containerd.service\n\n [Service]\n ExecStartPre=/bin/bash -c 'until [ -S /var/run/containerd/containerd.sock ]; do sleep 1; done'\n ExecStartPre=/usr/bin/crictl info\n\n\nruncmd:\n - systemctl enable --now qemu-guest-agent\n - systemctl enable --now ssh\n\n # needed for nvme-tcp module\n - apt install linux-modules-extra-$(uname -r)\n - modprobe nvme-tcp\n - echo \"nvme-tcp\" \u003e\u003e /etc/modules-load.d/nvme-tcp.conf\n\n # relevant to kubernetes\n - modprobe overlay\n - modprobe br_netfilter\n - sysctl --system\n\n # containerd\n - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg\n - echo \"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" \u003e /etc/apt/sources.list.d/docker.list\n - apt-get update \u0026\u0026 apt-get install -y containerd.io\n - cat \u003e /etc/containerd/config.toml \u003c\u003c'xEOF'\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n [plugins.\"io.containerd.grpc.v1.cri\".registry]\n config_path = \"/etc/containerd/certs.d\"\n xEOF \n - systemctl restart containerd\n\n # kubeadm/kubelet/kubectl v1.32\n - curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg\n - echo \"deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /\" \u003e /etc/apt/sources.list.d/kubernetes.list\n - apt-get update \u0026\u0026 apt-get install -y kubelet kubeadm kubectl\n - apt-mark hold kubelet kubeadm kubectl\n\n # join cluster\n - kubeadm join 192.168.0.31:6443 --token nfbk24.0v2qczesuwlxcc6p --discovery-token-ca-cert-hash sha256:c09955e09ba79882ba7766125b57030b2e87dde0ac49af351de28e1c92d0beb9\n\n"},"sensitive_attributes":[],"dependencies":["data.local_file.join_command","libvirt_cloudinit_disk.commoninit","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk","null_resource.kubeadm_token"]}]},{"mode":"managed","type":"libvirt_cloudinit_disk","name":"commoninit_node_02","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-beelink","instances":[{"schema_version":0,"attributes":{"id":"bf025b8c6359dfff","meta_data":"\"instance-id\": \"kube-node-33\"\n\"local-hostname\": \"kube-node-33\"\n","name":"kube-node-33-cloudinit.iso","network_config":"version: 2\nethernets:\n eth0:\n match:\n driver: virtio_net\n addresses:\n - 192.168.0.33/24\n routes:\n - to: default\n via: 192.168.0.4\n nameservers:\n addresses:\n - 8.8.8.8\n","path":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-bf025b8c6359dfff.iso","size":49152,"user_data":"#cloud-config\nhostname: kube-node-33\nusers:\n - name: ubuntu\n sudo: ALL=(ALL) NOPASSWD:ALL\n shell: /bin/bash\n ssh_authorized_keys:\n - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTLxDOQMsumLpjIzMXvpN/hvoMfbVFcl7TDKXTYLBJIvTOLWO/elI3PeJkXNAlaIT1lgJQB7NwQED+DciPLjCLzkG3aSxuJdZRo0Z+vHm9CEUkWnq8icLTQs0zYadK6p24VpMqT61cGNv9L/riciMRWT6l2SdRN2ZBR6MhCXMZy/XgRRlcV9iN1n9T0Q9aZjaQ2CjgG59wTLdQ0bHRlFBSt2q6erFmCIiBHUJba4avDVRvYryvMgkopayL/eK2gxaloMjcMt4z+zIokxhQONPPU2AvqMcqQIsWGQYIzIkJ0UOO8ly/PAFCpgvukWJepmZR30vVBALFCRZCUN1zMbI3 jan.novak@Jans-MacBook-Air-9.local\n\nchpasswd:\n list: |\n ubuntu:yourpassword\n expire: false\nssh_pwauth: true\npackage_update: true\npackages:\n - qemu-guest-agent\n - openssh-server\n - apt-transport-https\n - ca-certificates\n - curl\n - gnupg\n - nvme-cli\n\nwrite_files:\n - path: /etc/modules-load.d/k8s.conf\n content: |\n overlay\n br_netfilter\n\n - path: /etc/sysctl.d/k8s.conf\n content: |\n net.bridge.bridge-nf-call-iptables = 1\n net.bridge.bridge-nf-call-ip6tables = 1\n net.ipv4.ip_forward = 1\n\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n\n # Update existing containerd config to enable registry config_path\n - path: /etc/containerd/config.toml\n content: |\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n [plugins.\"io.containerd.grpc.v1.cri\".registry]\n config_path = \"/etc/containerd/certs.d\"\n\n # Mirror configs for each upstream registry\n - path: /etc/containerd/certs.d/docker.io/hosts.toml\n content: |\n server = \"https://registry-1.docker.io\"\n [host.\"http://192.168.0.30:5000/v2/docker.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/registry.k8s.io/hosts.toml\n content: |\n server = \"https://registry.k8s.io\"\n [host.\"http://192.168.0.30:5000/v2/registry.k8s.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/ghcr.io/hosts.toml\n content: |\n server = \"https://ghcr.io\"\n [host.\"http://192.168.0.30:5000/v2/ghcr.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true\n\n - path: /etc/containerd/certs.d/quay.io/hosts.toml\n content: |\n server = \"https://quay.io\"\n [host.\"http://192.168.0.30:5000/v2/quay.io\"]\n capabilities = [\"pull\", \"resolve\"]\n skip_verify = true\n override_path = true \n\n - path: /root/kubeadm-config.yaml\n content: |\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: InitConfiguration\n nodeRegistration:\n criSocket: unix:///run/containerd/containerd.sock\n ---\n apiVersion: kubeadm.k8s.io/v1beta3\n kind: ClusterConfiguration\n networking:\n podSubnet: \"10.244.0.0/16\"\n ---\n apiVersion: kubelet.config.k8s.io/v1beta1\n kind: KubeletConfiguration\n cgroupDriver: systemd\n\n - path: /etc/profile.d/kubectl.sh\n content: |\n alias k='kubectl'\n source \u003c(kubectl completion bash)\n complete -o default -F __start_kubectl k\n\n - path: /etc/systemd/system/kubelet.service.d/10-containerd.conf\n content: |\n [Unit]\n After=containerd.service\n Requires=containerd.service\n\n [Service]\n ExecStartPre=/bin/bash -c 'until [ -S /var/run/containerd/containerd.sock ]; do sleep 1; done'\n ExecStartPre=/usr/bin/crictl info\n\n\nruncmd:\n - systemctl enable --now qemu-guest-agent\n - systemctl enable --now ssh\n\n # needed for nvme-tcp module\n - apt install linux-modules-extra-$(uname -r)\n - modprobe nvme-tcp\n - echo \"nvme-tcp\" \u003e\u003e /etc/modules-load.d/nvme-tcp.conf\n\n # relevant to kubernetes\n - modprobe overlay\n - modprobe br_netfilter\n - sysctl --system\n\n # containerd\n - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg\n - echo \"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\" \u003e /etc/apt/sources.list.d/docker.list\n - apt-get update \u0026\u0026 apt-get install -y containerd.io\n - |\n cat \u003e /etc/containerd/config.toml \u003c\u003c'CONTAINERD'\n version = 2\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc]\n runtime_type = \"io.containerd.runc.v2\"\n [plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n SystemdCgroup = true\n [plugins.\"io.containerd.grpc.v1.cri\".registry]\n config_path = \"/etc/containerd/certs.d\"\n CONTAINERD\n - systemctl restart containerd\n\n # kubeadm/kubelet/kubectl v1.32\n - curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg\n - echo \"deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /\" \u003e /etc/apt/sources.list.d/kubernetes.list\n - apt-get update \u0026\u0026 apt-get install -y kubelet kubeadm kubectl\n - apt-mark hold kubelet kubeadm kubectl\n\n # join cluster\n - kubeadm join 192.168.0.31:6443 --token nfbk24.0v2qczesuwlxcc6p --discovery-token-ca-cert-hash sha256:c09955e09ba79882ba7766125b57030b2e87dde0ac49af351de28e1c92d0beb9\n\n"},"sensitive_attributes":[],"dependencies":["data.local_file.join_command","libvirt_cloudinit_disk.commoninit","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk","null_resource.kubeadm_token"]}]},{"mode":"managed","type":"libvirt_domain","name":"master","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"autostart":true,"block_io_tune":null,"bootloader":null,"bootloader_args":null,"clock":null,"cpu":null,"cpu_tune":null,"create":null,"current_memory":null,"current_memory_unit":null,"default_io_thread":null,"description":null,"destroy":null,"devices":{"audios":null,"channels":null,"consoles":null,"controllers":null,"crypto":null,"disks":[{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":null,"driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"qcow2"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/srv/vms/kube-master-31.qcow2","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"virtio","dev":"vda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null},{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":"cdrom","driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"raw"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/srv/vms/kube-master-31-cloudinit.iso","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"sata","dev":"sda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null}],"emulator":null,"filesystems":null,"graphics":null,"hostdevs":null,"hubs":null,"inputs":null,"interfaces":[{"acpi":null,"address":null,"alias":null,"backend":null,"backend_domain":null,"bandwidth":null,"boot":null,"coalesce":null,"down_script":null,"driver":null,"filter_ref":null,"guest":null,"ip":null,"link":null,"mac":null,"managed":null,"model":{"type":"virtio"},"mtu":null,"port_forward":null,"port_options":null,"rom":null,"route":null,"script":null,"source":{"bridge":{"bridge":"br0"},"client":null,"direct":null,"ethernet":null,"hostdev":null,"internal":null,"mcast":null,"network":null,"null":null,"server":null,"udp":null,"user":null,"vdpa":null,"vds":null,"vhost_user":null},"target":null,"teaming":null,"trust_guest_rx_filters":null,"tune":null,"virtual_port":null,"vlan":null,"wait_for_ip":null}],"iommu":null,"leases":null,"mem_balloon":null,"memorydevs":null,"nvram":null,"panics":null,"parallels":null,"pstore":null,"redir_devs":null,"redir_filters":null,"rngs":null,"serials":[{"acpi":null,"address":null,"alias":null,"log":null,"protocol":null,"source":null,"target":null}],"shmems":null,"smartcards":null,"sounds":null,"tpms":null,"videos":null,"vsock":null,"watchdogs":null},"features":null,"gen_id":null,"hwuuid":null,"id":6,"id_map":null,"io_thread_i_ds":null,"io_threads":null,"key_wrap":null,"launch_security":null,"maximum_memory":null,"maximum_memory_slots":null,"maximum_memory_unit":null,"memory":2048,"memory_backing":null,"memory_dump_core":null,"memory_tune":null,"memory_unit":"MiB","metadata":null,"name":"kube-master-31","numa_tune":null,"on_crash":null,"on_poweroff":null,"on_reboot":null,"os":{"acpi":null,"bios":null,"boot_devices":null,"boot_menu":null,"cmdline":null,"dtb":null,"firmware":null,"firmware_info":null,"init":null,"init_args":null,"init_dir":null,"init_env":null,"init_group":null,"init_user":null,"initrd":null,"kernel":null,"loader":null,"loader_format":null,"loader_readonly":null,"loader_secure":null,"loader_stateless":null,"loader_type":null,"nv_ram":null,"shim":null,"sm_bios":null,"type":"hvm","type_arch":"x86_64","type_machine":"q35"},"perf":null,"pm":null,"resource":null,"running":true,"sec_label":null,"sys_info":null,"throttle_groups":null,"title":null,"type":"kvm","uuid":"1d3d2721-a2f0-49d0-a458-a905c4b6e5cd","vcpu":2,"vcpu_cpuset":null,"vcpu_current":null,"vcpu_placement":null,"vcpus":null},"sensitive_attributes":[],"dependencies":["libvirt_cloudinit_disk.commoninit","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk"]}]},{"mode":"managed","type":"libvirt_domain","name":"node_01","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"autostart":true,"block_io_tune":null,"bootloader":null,"bootloader_args":null,"clock":null,"cpu":{"cache":null,"check":null,"deprecated_features":null,"features":null,"match":null,"max_phys_addr":null,"migratable":null,"mode":"host-passthrough","model":null,"model_fallback":null,"model_vendor_id":null,"numa":null,"topology":null,"vendor":null},"cpu_tune":null,"create":null,"current_memory":null,"current_memory_unit":null,"default_io_thread":null,"description":null,"destroy":null,"devices":{"audios":null,"channels":null,"consoles":null,"controllers":null,"crypto":null,"disks":[{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":null,"driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"qcow2"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/srv/vms/kube-node-32.qcow2","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"virtio","dev":"vda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null},{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":"cdrom","driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"raw"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/srv/vms/kube-node-32-cloudinit.iso","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"sata","dev":"sda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null}],"emulator":null,"filesystems":null,"graphics":null,"hostdevs":null,"hubs":null,"inputs":null,"interfaces":[{"acpi":null,"address":null,"alias":null,"backend":null,"backend_domain":null,"bandwidth":null,"boot":null,"coalesce":null,"down_script":null,"driver":null,"filter_ref":null,"guest":null,"ip":null,"link":null,"mac":null,"managed":null,"model":{"type":"virtio"},"mtu":null,"port_forward":null,"port_options":null,"rom":null,"route":null,"script":null,"source":{"bridge":{"bridge":"br0"},"client":null,"direct":null,"ethernet":null,"hostdev":null,"internal":null,"mcast":null,"network":null,"null":null,"server":null,"udp":null,"user":null,"vdpa":null,"vds":null,"vhost_user":null},"target":null,"teaming":null,"trust_guest_rx_filters":null,"tune":null,"virtual_port":null,"vlan":null,"wait_for_ip":null}],"iommu":null,"leases":null,"mem_balloon":null,"memorydevs":null,"nvram":null,"panics":null,"parallels":null,"pstore":null,"redir_devs":null,"redir_filters":null,"rngs":null,"serials":[{"acpi":null,"address":null,"alias":null,"log":null,"protocol":null,"source":null,"target":null}],"shmems":null,"smartcards":null,"sounds":null,"tpms":null,"videos":null,"vsock":null,"watchdogs":null},"features":null,"gen_id":null,"hwuuid":null,"id":10,"id_map":null,"io_thread_i_ds":null,"io_threads":null,"key_wrap":null,"launch_security":null,"maximum_memory":null,"maximum_memory_slots":null,"maximum_memory_unit":null,"memory":8192,"memory_backing":null,"memory_dump_core":null,"memory_tune":null,"memory_unit":"MiB","metadata":null,"name":"kube-node-32","numa_tune":null,"on_crash":null,"on_poweroff":null,"on_reboot":null,"os":{"acpi":null,"bios":null,"boot_devices":null,"boot_menu":null,"cmdline":null,"dtb":null,"firmware":null,"firmware_info":null,"init":null,"init_args":null,"init_dir":null,"init_env":null,"init_group":null,"init_user":null,"initrd":null,"kernel":null,"loader":null,"loader_format":null,"loader_readonly":null,"loader_secure":null,"loader_stateless":null,"loader_type":null,"nv_ram":null,"shim":null,"sm_bios":null,"type":"hvm","type_arch":"x86_64","type_machine":"q35"},"perf":null,"pm":null,"resource":null,"running":true,"sec_label":null,"sys_info":null,"throttle_groups":null,"title":null,"type":"kvm","uuid":"c0edcd4c-f090-41ab-8dae-f49d44a56d0c","vcpu":4,"vcpu_cpuset":null,"vcpu_current":null,"vcpu_placement":null,"vcpus":null},"sensitive_attributes":[],"dependencies":["data.local_file.join_command","libvirt_cloudinit_disk.commoninit","libvirt_cloudinit_disk.commoninit_node_01","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.cloudinit_node_01","libvirt_volume.node_01_disk","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk","null_resource.kubeadm_token"]}]},{"mode":"managed","type":"libvirt_domain","name":"node_02","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-beelink","instances":[{"schema_version":0,"attributes":{"autostart":true,"block_io_tune":null,"bootloader":null,"bootloader_args":null,"clock":null,"cpu":{"cache":null,"check":null,"deprecated_features":null,"features":null,"match":null,"max_phys_addr":null,"migratable":null,"mode":"host-passthrough","model":null,"model_fallback":null,"model_vendor_id":null,"numa":null,"topology":null,"vendor":null},"cpu_tune":null,"create":null,"current_memory":null,"current_memory_unit":null,"default_io_thread":null,"description":null,"destroy":null,"devices":{"audios":null,"channels":null,"consoles":null,"controllers":null,"crypto":null,"disks":[{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":null,"driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"qcow2"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/var/lib/libvirt/images/kube-node-33.qcow2","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"virtio","dev":"vda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null},{"acpi":null,"address":null,"alias":null,"auth":null,"backend_domain":null,"backing_store":null,"block_io":null,"boot":null,"device":"cdrom","driver":{"ats":null,"cache":null,"copy_on_read":null,"detect_zeros":null,"discard":null,"discard_no_unref":null,"error_policy":null,"event_idx":null,"io":null,"io_event_fd":null,"io_thread":null,"io_threads":null,"iommu":null,"metadata_cache":null,"name":"qemu","packed":null,"page_per_vq":null,"queue_size":null,"queues":null,"rerror_policy":null,"type":"raw"},"encryption":null,"geometry":null,"io_tune":null,"mirror":null,"model":null,"product":null,"raw_io":null,"read_only":null,"serial":null,"sgio":null,"shareable":null,"snapshot":null,"source":{"block":null,"cookies":null,"data_store":null,"dir":null,"encryption":null,"file":{"fd_group":null,"file":"/var/lib/libvirt/images/kube-node-33-cloudinit.iso","sec_label":null},"index":null,"network":null,"nvme":null,"readahead":null,"reservations":null,"slices":null,"ssl":null,"startup_policy":null,"timeout":null,"vhost_user":null,"vhost_vdpa":null,"volume":null},"target":{"bus":"sata","dev":"sda","removable":null,"rotation_rate":null,"tray":null},"throttle_filters":null,"transient":null,"vendor":null,"wwn":null}],"emulator":null,"filesystems":null,"graphics":null,"hostdevs":null,"hubs":null,"inputs":null,"interfaces":[{"acpi":null,"address":null,"alias":null,"backend":null,"backend_domain":null,"bandwidth":null,"boot":null,"coalesce":null,"down_script":null,"driver":null,"filter_ref":null,"guest":null,"ip":null,"link":null,"mac":null,"managed":null,"model":{"type":"virtio"},"mtu":null,"port_forward":null,"port_options":null,"rom":null,"route":null,"script":null,"source":{"bridge":{"bridge":"br0"},"client":null,"direct":null,"ethernet":null,"hostdev":null,"internal":null,"mcast":null,"network":null,"null":null,"server":null,"udp":null,"user":null,"vdpa":null,"vds":null,"vhost_user":null},"target":null,"teaming":null,"trust_guest_rx_filters":null,"tune":null,"virtual_port":null,"vlan":null,"wait_for_ip":null}],"iommu":null,"leases":null,"mem_balloon":null,"memorydevs":null,"nvram":null,"panics":null,"parallels":null,"pstore":null,"redir_devs":null,"redir_filters":null,"rngs":null,"serials":[{"acpi":null,"address":null,"alias":null,"log":null,"protocol":null,"source":null,"target":null}],"shmems":null,"smartcards":null,"sounds":null,"tpms":null,"videos":null,"vsock":null,"watchdogs":null},"features":null,"gen_id":null,"hwuuid":null,"id":14,"id_map":null,"io_thread_i_ds":null,"io_threads":null,"key_wrap":null,"launch_security":null,"maximum_memory":null,"maximum_memory_slots":null,"maximum_memory_unit":null,"memory":8192,"memory_backing":null,"memory_dump_core":null,"memory_tune":null,"memory_unit":"MiB","metadata":null,"name":"kube-node-33","numa_tune":null,"on_crash":null,"on_poweroff":null,"on_reboot":null,"os":{"acpi":null,"bios":null,"boot_devices":null,"boot_menu":null,"cmdline":null,"dtb":null,"firmware":null,"firmware_info":null,"init":null,"init_args":null,"init_dir":null,"init_env":null,"init_group":null,"init_user":null,"initrd":null,"kernel":null,"loader":null,"loader_format":null,"loader_readonly":null,"loader_secure":null,"loader_stateless":null,"loader_type":null,"nv_ram":null,"shim":null,"sm_bios":null,"type":"hvm","type_arch":"x86_64","type_machine":"q35"},"perf":null,"pm":null,"resource":null,"running":true,"sec_label":null,"sys_info":null,"throttle_groups":null,"title":null,"type":"kvm","uuid":"f0a8cdd3-e7aa-4316-b6f6-39121e8612f5","vcpu":4,"vcpu_cpuset":null,"vcpu_current":null,"vcpu_placement":null,"vcpus":null},"sensitive_attributes":[],"dependencies":["data.local_file.join_command","libvirt_cloudinit_disk.commoninit","libvirt_cloudinit_disk.commoninit_node_02","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.cloudinit_node_02","libvirt_volume.node_02_disk","libvirt_volume.ubuntu_base_beelink","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk","null_resource.kubeadm_token"]}]},{"mode":"managed","type":"libvirt_volume","name":"cloudinit","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":49152,"allocation_unit":null,"backing_store":null,"capacity":49152,"capacity_unit":null,"create":{"content":{"url":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-295268ac2ef5dcc3.iso"}},"id":"/srv/vms/kube-master-31-cloudinit.iso","key":"/srv/vms/kube-master-31-cloudinit.iso","name":"kube-master-31-cloudinit.iso","path":"/srv/vms/kube-master-31-cloudinit.iso","physical":49152,"physical_unit":null,"pool":"default","target":null,"type":null},"sensitive_attributes":[],"dependencies":["libvirt_cloudinit_disk.commoninit"]}]},{"mode":"managed","type":"libvirt_volume","name":"cloudinit_node_01","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":49152,"allocation_unit":null,"backing_store":null,"capacity":49152,"capacity_unit":null,"create":{"content":{"url":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-845e3681ac0f1b93.iso"}},"id":"/srv/vms/kube-node-32-cloudinit.iso","key":"/srv/vms/kube-node-32-cloudinit.iso","name":"kube-node-32-cloudinit.iso","path":"/srv/vms/kube-node-32-cloudinit.iso","physical":49152,"physical_unit":null,"pool":"default","target":null,"type":null},"sensitive_attributes":[],"dependencies":["data.local_file.join_command","libvirt_cloudinit_disk.commoninit","libvirt_cloudinit_disk.commoninit_node_01","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk","null_resource.kubeadm_token"]}]},{"mode":"managed","type":"libvirt_volume","name":"cloudinit_node_02","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-beelink","instances":[{"schema_version":0,"attributes":{"allocation":49152,"allocation_unit":null,"backing_store":null,"capacity":49152,"capacity_unit":null,"create":{"content":{"url":"/var/folders/dq/h32yg2mx55b2m8hxmf1yh66r0000gn/T/terraform-provider-libvirt-cloudinit/cloudinit-bf025b8c6359dfff.iso"}},"id":"/var/lib/libvirt/images/kube-node-33-cloudinit.iso","key":"/var/lib/libvirt/images/kube-node-33-cloudinit.iso","name":"kube-node-33-cloudinit.iso","path":"/var/lib/libvirt/images/kube-node-33-cloudinit.iso","physical":49152,"physical_unit":null,"pool":"default","target":null,"type":null},"sensitive_attributes":[],"dependencies":["data.local_file.join_command","libvirt_cloudinit_disk.commoninit","libvirt_cloudinit_disk.commoninit_node_02","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk","null_resource.kubeadm_token"]}]},{"mode":"managed","type":"libvirt_volume","name":"node_01_disk","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":15701139456,"allocation_unit":null,"backing_store":{"format":{"type":"qcow2"},"path":"/srv/vms/ubuntu-24.04-base.qcow2","permissions":null},"capacity":21474836480,"capacity_unit":null,"create":null,"id":"/srv/vms/kube-node-32.qcow2","key":"/srv/vms/kube-node-32.qcow2","name":"kube-node-32.qcow2","path":"/srv/vms/kube-node-32.qcow2","physical":15700983808,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/srv/vms/kube-node-32.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[],"dependencies":["libvirt_volume.ubuntu_base_homer"]}]},{"mode":"managed","type":"libvirt_volume","name":"node_02_disk","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-beelink","instances":[{"schema_version":0,"attributes":{"allocation":1112686592,"allocation_unit":null,"backing_store":{"format":{"type":"qcow2"},"path":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","permissions":null},"capacity":21474836480,"capacity_unit":null,"create":null,"id":"/var/lib/libvirt/images/kube-node-33.qcow2","key":"/var/lib/libvirt/images/kube-node-33.qcow2","name":"kube-node-33.qcow2","path":"/var/lib/libvirt/images/kube-node-33.qcow2","physical":1112735744,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/var/lib/libvirt/images/kube-node-33.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[],"dependencies":["libvirt_volume.ubuntu_base_beelink"]}]},{"mode":"managed","type":"libvirt_volume","name":"ubuntu_base_beelink","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-beelink","instances":[{"schema_version":0,"attributes":{"allocation":626663424,"allocation_unit":null,"backing_store":null,"capacity":3758096384,"capacity_unit":null,"create":{"content":{"url":"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img"}},"id":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","key":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","name":"ubuntu-24.04-base.qcow2","path":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","physical":626655744,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/var/lib/libvirt/images/ubuntu-24.04-base.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[]}]},{"mode":"managed","type":"libvirt_volume","name":"ubuntu_base_homer","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":626663424,"allocation_unit":null,"backing_store":null,"capacity":3758096384,"capacity_unit":null,"create":{"content":{"url":"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img"}},"id":"/srv/vms/ubuntu-24.04-base.qcow2","key":"/srv/vms/ubuntu-24.04-base.qcow2","name":"ubuntu-24.04-base.qcow2","path":"/srv/vms/ubuntu-24.04-base.qcow2","physical":626655744,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/srv/vms/ubuntu-24.04-base.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[]}]},{"mode":"managed","type":"libvirt_volume","name":"ubuntu_disk","provider":"provider[\"registry.opentofu.org/dmacvicar/libvirt\"].kvm-homer","instances":[{"schema_version":0,"attributes":{"allocation":7335309312,"allocation_unit":null,"backing_store":{"format":{"type":"qcow2"},"path":"/srv/vms/ubuntu-24.04-base.qcow2","permissions":null},"capacity":21474836480,"capacity_unit":null,"create":null,"id":"/srv/vms/kube-master-31.qcow2","key":"/srv/vms/kube-master-31.qcow2","name":"kube-master-31.qcow2","path":"/srv/vms/kube-master-31.qcow2","physical":7335182336,"physical_unit":null,"pool":"default","target":{"cluster_size":null,"cluster_size_unit":null,"compat":null,"encryption":null,"features":null,"format":{"type":"qcow2"},"path":"/srv/vms/kube-master-31.qcow2","permissions":null,"timestamps":null},"type":null},"sensitive_attributes":[],"dependencies":["libvirt_volume.ubuntu_base_homer"]}]},{"mode":"managed","type":"null_resource","name":"kubeadm_token","provider":"provider[\"registry.opentofu.org/hashicorp/null\"]","instances":[{"schema_version":0,"attributes":{"id":"591435519595944093","triggers":null},"sensitive_attributes":[],"dependencies":["libvirt_cloudinit_disk.commoninit","libvirt_domain.master","libvirt_volume.cloudinit","libvirt_volume.ubuntu_base_homer","libvirt_volume.ubuntu_disk"]}]},{"mode":"managed","type":"null_resource","name":"kubeconfig","provider":"provider[\"registry.opentofu.org/hashicorp/null\"]","instances":[{"schema_version":0,"attributes":{"id":"8367063358226307615","triggers":null},"sensitive_attributes":[]}]}],"check_results":null}