Terraform
Properties
| Property | Description | Values | Example |
|---|---|---|---|
typestring | component type Type of component to deploy. Determines which configuration block is required (helm_chart, terraform_module, container_image, kubernetes_manifest, or job) | ✅ Required"terraform_module" | - |
namestring | component name Unique identifier for the component within the app. Used for referencing in dependencies and templates | ✅ Required | "database", "api-server", "frontend" |
terraform_versionstring | Terraform version Version of Terraform to use for deployments | ✅ Required | "1.5.0", "1.6.0", "latest" |
var_namestring | variable name for component output Optional name to use when storing component outputs as variables. If not specified, uses the component name | Optional | "db_endpoint", "api_host" |
labelsobject | Key/value labels used to organize and filter components. Metadata only; does not affect deployment | Optional | - |
dependenciesarray | component dependencies List of other components that must be deployed before this component. Automatically extracted from template references | Optional | "database", "infrastructure" |
operation_rolesarray | operation-specific IAM role assignments Map of component operations to IAM role names. Allows using different roles for different operations (provision, deprovision, update). Roles must be defined … | Optional | - |
toggleableboolean | - | Optional | - |
default_enabledboolean | - | Optional | - |
kubernetes_contextstring | kubernetes context binding Optional. Name of a kubernetes_context defined at the app level. If set, the component targets the cluster produced by that context’s source component. If omitted, the co… | Optional | "data-cluster" |
env_varsobject | environment variables Map of environment variables passed to Terraform as key-value pairs | Optional | - |
varsobject | Terraform variables Map of Terraform input variables as key-value pairs. Supports templating | Optional | - |
var_filearray | Terraform variable files Array of external Terraform variable files to load. Each file contents support templating and external file sources: HTTP(S) URLs (https://example.com/vars.tfvars), git rep… | Optional | - |
public_repoPublicRepoConfig | public repository configuration Configuration for a public repository accessible without authentication | Optional | - |
connected_repoConnectedRepoConfig | connected repository configuration Configuration for a private repository connected to the Nuon platform | Optional | - |
drift_schedulestring | drift detection schedule Cron expression for periodic drift detection. If not set, drift detection is disabled. Supports templating | Optional | "0 2 * * *", "*/10 * * * *" |
build_timeoutstring | build operation timeout Duration string for build operations (e.g., “30m”, “1h”). Default: 5m. Max: 1h | Optional Default: "5m" | "30m", "1h" |
deploy_timeoutstring | deploy operation timeout Duration string for deploy operations (e.g., “30m”, “1h”). Default: 60m. Max: 1h | Optional Default: "60m" | "30m", "1h" |
max_auto_retriesinteger | maximum automatic retry attempts on deploy failure Maximum number of automatic retry attempts for failed deployments. Set to 0 to disable auto-retry. Default: 0 (disabled) | Optional Default: "0" | "3", "5" |
skip_noopsboolean | Skip the deploy step when the plan has no changes (a no-op). Defaults to false | Optional Default: "false" | "true" |
auto_approve_on_policies_passingboolean | Auto-approve the deploy when all policy checks pass. Defaults to false | Optional Default: "false" | "true" |
teardownComponentTeardownConfig | teardown behavior Controls what happens to the component’s resources when it is torn down. Resources listed in retain are removed from Terraform state and left in place instead of being destroyed | Optional | - |
vararray | deprecated: use vars map instead Deprecated: Array of name/value pairs for Terraform variables. Use the vars map instead | Optional | - |
env_vararray | deprecated: use env_vars map instead Deprecated: Array of name/value pairs for environment variables. Use the env_vars map instead | Optional | - |
operation_roles
| Property | Description | Values | Example |
|---|---|---|---|
operationstring | operation type Type of operation: provision, deprovision, update, reprovision, or trigger | ✅ Required | "provision", "deploy", "deprovision" |
rolestring | IAM role name Name of the IAM role to use for this operation (not ARN). Role must exist in install stack outputs | ✅ Required | "{{.nuon.install.id}}-maintenance", "{{.nuon.install.id}}-provision" |
var_file
| Property | Description | Values | Example |
|---|---|---|---|
contentsstring | variable file contents Contents of a Terraform .tfvars file. Supports Nuon templating and external file sources: HTTP(S) URLs (https://example.com/vars.tfvars), git repositories (git::https://githu… | Optional | "./sandbox.tfvars", "./variables/production.tfvars" |
public_repo
| Property | Description | Values | Example |
|---|---|---|---|
repostring | repository URL HTTPS URL to the public Git repository | ✅ Required | "https://github.com/user/repo.git", "https://github.com/user/terraform-modules.git" |
directorystring | directory path Path within the repository to the configuration files | ✅ Required | "terraform", "infra/terraform" |
branchstring | Git branch Git branch to checkout and use for deployments | ✅ Required | "main", "develop", "production" |
connected_repo
| Property | Description | Values | Example |
|---|---|---|---|
repostring | repository identifier Identifier of the connected repository configured in the Nuon platform | ✅ Required | "my-repo", "production-infrastructure" |
directorystring | directory path Path within the repository to the configuration files | ✅ Required | "terraform", "infra/terraform" |
branchstring | Git branch Git branch to checkout and use for deployments | ✅ Required | "main", "develop", "production" |
teardown
| Property | Description | Values | Example |
|---|---|---|---|
retainarray | resources to leave in place on teardown Terraform resource or module addresses that are removed from state instead of destroyed when the component is torn down. An address without an index selects … | Optional | ["aws_rds_cluster.main","aws_s3_bucket.data[\"logs\"]","module.buckets"] |
var
| Property | Description | Values | Example |
|---|---|---|---|
namestring | terraform variable name | Optional | "cluster_name", "install_id", "region" |
valuestring | terraform variable value | Optional | "{{.nuon.install.id}}", "true", "us-west-2" |
env_var
| Property | Description | Values | Example |
|---|---|---|---|
namestring | environment variable name | Optional | "NAMESPACE", "INGRESS_NAME", "LOG_LEVEL" |
valuestring | environment variable value | Optional | "kube-system", "{{.nuon.install.id}}-public", "info" |