## vcluster Terraform Provider Custom Terraform provider that talks to a vcluster API and calls `/createcluster` to create clusters. ### Build ```bash cd /home/behrooz/Projects/vcluster_terraform go build -o terraform-provider-vcluster ``` ### Install locally for Terraform Terraform expects the provider binary in a specific directory based on `////_`. For a local provider with: - **source**: `local/vcluster/vcluster` - **version**: `0.1` Copy the binary like this (Linux amd64 example): ```bash mkdir -p ~/.terraform.d/plugins/local/vcluster/vcluster/0.1/linux_amd64 cp terraform-provider-vcluster ~/.terraform.d/plugins/local/vcluster/vcluster/0.1/linux_amd64/ ``` Adjust the OS/arch folder name if necessary. ### Example Terraform configuration Create a new directory for using the provider, e.g. `example/` and add `main.tf`: ```hcl terraform { required_providers { vcluster = { source = "local/vcluster/vcluster" version = "0.1" } } } provider "vcluster" { base_url = "http://localhost:8082" # Credentials used for POST /login. The provider will automatically # call /login, get the token from {"token": "..."} and send it as # the Authorization header on subsequent API calls. username = "admin" password = "admin" } resource "vcluster_cluster" "example" { name = "mytiny" cluster_id = "2qjqhhqr" control_plane = "k8s" status = "Progressing" cpu = "1" memory = "1024" platform_version = "v1.31.6" health_check = "" alert = "" endpoint = "" cluster_type = "tiny" coredns_cpu = "0.1" coredns_memory = "0.25Gi" apiserver_cpu = "0.1" apiserver_memory = "0.25Gi" } ``` Then run: ```bash cd example terraform init terraform apply ```