adamant-kite-43734
09/05/2024, 7:20 PMbright-flag-87778
09/06/2024, 3:39 AMxenorchestra_cloud_config
-> harvester_cloudinit_secret
• template
-> network_data
bright-flag-87778
09/06/2024, 5:33 AM|--- terraform-harvester-example/
|--- provider.tf
|--- kubeconfig.yaml
|--- cloud_config.tpl
|--- network_data.tpl
provider.tf
terraform {
required_providers {
harvester = {
source = "harvester/harvester"
}
}
}
provider "harvester" {
# Configuration options
kubeconfig = "${path.root}/kubeconfig.yaml"
}
resource "harvester_image" "ubuntu" {
name = "ubuntu"
display_name = "ubuntu"
namespace = "default"
source_type = "download"
url = "<https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img>"
}
resource "harvester_network" "mgmt-vlan1" {
name = "mgmt-vlan1"
namespace = "default"
vlan_id = 1
route_mode = "auto"
route_dhcp_server_ip = ""
cluster_network_name = "mgmt"
}
variable "test-vm-ip" {
type = string
default = "192.168.100.11/24"
}
resource "harvester_cloudinit_secret" "cloud-config-default" {
name = "cloud-config-default"
namespace = "default"
user_data = templatefile("${path.root}/cloud_config.tpl", {})
network_data = templatefile("${path.root}/network_data.tpl", {
ip = var.test-vm-ip
})
}
resource "harvester_virtualmachine" "test-vm" {
depends_on = [
harvester_image.ubuntu,
harvester_network.mgmt-vlan1
]
name = "test-vm"
namespace = "default"
cpu = 2
memory = "2Gi"
cloudinit {
user_data_secret_name = "cloud-config-default"
network_data_secret_name = "cloud-config-default"
}
network_interface {
name = "test-nic"
network_name = "default/mgmt-vlan1"
}
disk {
name = "test-disk"
size = "10Gi"
image = "ubuntu"
auto_delete = true
}
}
cloud_config.tpl
#cloud-config
package_update: true
packages:
- qemu-guest-agent
runcmd:
- - systemctl
- enable
- --now
- qemu-guest-agent.service
password: password
chpasswd: { expire: False }
ssh_pwauth: True
network_data.tpl
network:
version: 2
ethernets:
enp1s0:
dhcp4: false
addresses:
- ${ip}
routes:
- to: 0.0.0.0/0
via: 192.168.100.1
on-link: true
type: unicast
metric: 100
mtu: 1500
nameservers:
addresses:
- 1.1.1.1
- 8.8.4.4