Setup Terraform#
Terraform can manage resources in your SCO project using the Kubernetes provider. The same project kubeconfig used by kubectl provides Terraform with access.
Prerequisites#
- Terraform installed (official install guide)
- Your project kubeconfig (see Setup kubectl)
Step 1: Configure the Provider#
terraform {
required_providers {
kubernetes = {
source = "hashicorp/kubernetes"
version = "~> 2.0"
}
}
}
provider "kubernetes" {
config_path = pathexpand("~/.kube/my-project.yaml")
config_context = "my-project"
}
Or use the KUBECONFIG environment variable:
export KUBECONFIG=~/.kube/my-project.yaml
provider "kubernetes" {}
Step 2: Provision a Service#
Use kubernetes_manifest to apply SCO claims:
resource "kubernetes_manifest" "dev_vm" {
manifest = {
apiVersion = "compute.cloud.stakater.com/v1"
kind = "VirtualMachine"
metadata = {
name = "dev-vm"
}
spec = {
parameters = {
flavour = "rhel9"
instanceType = "o1.medium"
connection = "private"
sshPublicKey = var.ssh_public_key
}
}
}
timeouts {
create = "10m"
delete = "10m"
}
}
Apply:
terraform init
terraform plan
terraform apply
Step 3: Read Status#
data "kubernetes_resource" "dev_vm" {
api_version = "compute.cloud.stakater.com/v1"
kind = "VirtualMachine"
metadata {
name = "dev-vm"
}
}
output "vm_status" {
value = data.kubernetes_resource.dev_vm.object.status
}
What's Next?#
- Kubernetes Provider — Advanced patterns and multiple project configuration
- Provisioning Solutions — SCO claim structure reference
- API Reference — Full parameter reference for all services