Terratest v2.0.0: Modular Go Libraries for Testing Terraform and Kubernetes Infrastructure
Terratest v2.0.0 splits into 16 Go modules under /v2 import paths, trims dependencies, and changes two Kubernetes behaviors. Upgrade notes inside.
DevOps
Provision Talos Linux Kubernetes nodes with Terraform on AWS, vSphere, and Proxmox: machine config, talosctl bootstrap, and automated upgrades.
Talos Linux is an immutable, API-driven Kubernetes OS: no SSH, no shell, no package manager — only talosctl. The siderolabs/talos Terraform provider generates and applies machine configs. Combined with aws_instance (or vSphere / Proxmox), Terraform fully bootstraps a cluster.
terraform {
required_providers {
talos = {
source = "siderolabs/talos"
version = "~> 0.7"
}
}
}resource "talos_machine_secrets" "this" {}
data "talos_machine_configuration" "controlplane" {
cluster_name = var.cluster_name
machine_type = "controlplane"
cluster_endpoint = "https://${aws_lb.cp.dns_name}:6443"
machine_secrets = talos_machine_secrets.this.machine_secrets
}
data "talos_machine_configuration" "worker" {
cluster_name = var.cluster_name
machine_type = "worker"
cluster_endpoint = "https://${aws_lb.cp.dns_name}:6443"
machine_secrets = talos_machine_secrets.this.machine_secrets
}resource "talos_machine_configuration_apply" "cp" {
for_each = aws_instance.controlplane
client_configuration = talos_machine_secrets.this.client_configuration
machine_configuration_input = data.talos_machine_configuration.controlplane.machine_configuration
node = each.value.private_ip
}
resource "talos_machine_bootstrap" "this" {
depends_on = [talos_machine_configuration_apply.cp]
client_configuration = talos_machine_secrets.this.client_configuration
node = aws_instance.controlplane["0"].private_ip
}
data "talos_cluster_kubeconfig" "this" {
client_configuration = talos_machine_secrets.this.client_configuration
node = aws_instance.controlplane["0"].private_ip
depends_on = [talos_machine_bootstrap.this]
}talos_machine_upgrade — never SSH (you can't anyway).The flow is: talos_machine_secrets generates the PKI, talos_machine_configuration (data source) renders control-plane and worker configs, talos_machine_configuration_apply pushes them to each node, talos_machine_bootstrap initializes etcd on the first control plane, and talos_cluster_kubeconfig returns the kubeconfig — all in one terraform apply.
No. Talos is intentionally immutable and API-only — there is no SSH, shell, or package manager. You manage nodes exclusively through talosctl (or the siderolabs/talos Terraform provider), which is what makes it so secure and reproducible.
Use the talos_cluster_kubeconfig data source with a depends_on the bootstrap resource. Write its output to a file with a local_file resource (or pull it into your CI), but store the long-lived copy in a secrets manager rather than committing it.
Use the talos_machine_upgrade resource pointing at the target image version. Talos performs an atomic A/B upgrade and reboots into the new image — never attempt an in-place package upgrade (there's no package manager to do it).
Terratest v2.0.0 splits into 16 Go modules under /v2 import paths, trims dependencies, and changes two Kubernetes behaviors. Upgrade notes inside.
DevOpsProvision AWS EKS Auto Mode with Terraform. Automated node management, built-in Karpenter, pod identity, and comparison with standard EKS managed node groups.
Provision Bottlerocket OS Kubernetes nodes with Terraform on Amazon EKS: managed node groups, custom AMIs, settings, and automated updates.
Terraform Helm provider v3.3.0 bumps Helm to 3.20.2, updates k8s.io deps, and triggers a one-time manifest diff for experiments.manifest users.