Terraform - deploy LXD container
Terraform, numer jeden jeżeli chodzi o IaC (Infrastructure as Code). W bardzo przyjemny sposób można zarządzać infrastrukturą cloudową jak i on-premise.
W tym przypadku opiszę pokrótce jak deployować virtualną maszynę w LXD.
Konfiguracja
Mamy mało kodu, więc tworzymy wszystko w jednym pliku main.tf:
terraform {
required_providers {
lxd = {
source = "terraform-lxd/lxd"
}
}
}
provider "lxd" {
generate_client_certificates = true
accept_remote_certificate = true
lxd_remote {
name = "lxd-1"
scheme = "https"
address = "lxd.kuzdzal.pl"
port = "8443"
default = true
}
}
resource "lxd_container" "worker" {
count = 3
remote = "lxd-1"
name = "k8s-${count.index}"
image = "ubuntu:20.04"
ephemeral = false
type = "virtual-machine"
config = {
"user.access_interface" = "enp5s0"
}
limits = {
"memory" = "8GB"
"cpu" = 4
}
profiles = ["default"]
device {
name = "root"
properties = {
"path" = "/"
"pool" = "pool_nvme"
"size" = "25GB"
}
type = "disk"
}
}
output "droplet_ip_addresses" {
value = {
for droplet in lxd_container.worker:
droplet.name => droplet.ipv4_address
}
}
Uruchomienie
Inicjalizacja, czyli pobranie wszystkich wymaganych pluginów (w tym przypadku tylko lxd), zsetupowanie i na końcu zniszczenie zasobów:
~ terraform init
~ terraform apply -auto-approve
~ terraform destroy -auto-approve