Terraform ist eine deklarative Beschreibungssprache für Cloud-Infrastrukturen.

Unterstützt werden viele Cloudprovider, unter anderem auch lxd.

Ein kleines Beispiel für das Deployment von zwei lxd-Containern:

terraform {

	required_providers {
        	lxd = {
                	source = "terraform-lxd/lxd"
			version = "1.6.0"
        	}
	}
}

provider "lxd" {
  generate_client_certificates = true
  accept_remote_certificate    = true

 lxd_remote {
    name     = "rpi4-8gb"
    scheme   = "https"
    address  = "10.10.10.1"
    password = "sowasvongeheim"
    default  = true
    }
}

resource "lxd_cached_image" "focal" {
  source_remote = "ubuntu"
  source_image  = "ed6764dcaa08"
}

 resource "lxd_container" "pg" {
  name      = "pg0${count.index}"
  count     = 2
  image     = "${lxd_cached_image.focal.fingerprint}"
  profiles  = ["pgbase"]
  ephemeral = false

  config = {
    "boot.autostart" = true
  }

  limits = {
    cpu = 1
  }
}


output "ip_adresses" {
  value = {
	for container in lxd_container.pg:
	container.name => container.ipv4_address
	}
}