> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nuon.co/llms.txt
> Use this file to discover all available pages before exploring further.

> JSON Schema reference for terraform configuration

# Terraform

# Terraform

## Properties

| Property                                                         | Description                                                                                                                                                                                                                                 | Values                               | Example                                                                                                          |
| ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------- |
| **`type`**<br />string                                           | component type Type of component to deploy. Determines which configuration block is required (helm\_chart, terraform\_module, docker\_build, container\_image, kubernetes\_manifest, or job)                                                | **✅ Required**                       | `"terraform_module"`, `"helm_chart"`, `"docker_build"`, `"container_image"`, `"kubernetes_manifest"`, `"pulumi"` |
| **`name`**<br />string                                           | component name Unique identifier for the component within the app. Used for referencing in dependencies and templates                                                                                                                       | **✅ Required**                       | `"database"`, `"api-server"`, `"frontend"`                                                                       |
| **`terraform_version`**<br />string                              | Terraform version Version of Terraform to use for deployments                                                                                                                                                                               | **✅ Required**                       | `"1.5.0"`, `"1.6.0"`, `"latest"`                                                                                 |
| **`var_name`**<br />string                                       | 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"`                                                                                    |
| **`labels`**<br />object                                         | Key/value labels used to organize and filter components. Metadata only; does not affect deployment                                                                                                                                          | **Optional**                         | -                                                                                                                |
| **`dependencies`**<br />array                                    | component dependencies List of other components that must be deployed before this component. Automatically extracted from template references                                                                                               | **Optional**                         | `"database"`, `"infrastructure"`                                                                                 |
| **`operation_roles`**<br />[array](#operation_roles)             | 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**                         | -                                                                                                                |
| **`toggleable`**<br />boolean                                    | -                                                                                                                                                                                                                                           | **Optional**                         | -                                                                                                                |
| **`default_enabled`**<br />boolean                               | -                                                                                                                                                                                                                                           | **Optional**                         | -                                                                                                                |
| **`env_vars`**<br />object                                       | environment variables Map of environment variables passed to Terraform as key-value pairs                                                                                                                                                   | **Optional**                         | -                                                                                                                |
| **`vars`**<br />object                                           | Terraform variables Map of Terraform input variables as key-value pairs. Supports templating                                                                                                                                                | **Optional**                         | -                                                                                                                |
| **`var_file`**<br />[array](#var_file)                           | 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](https://example.com/vars.tfvars)), git rep... | **Optional**                         | -                                                                                                                |
| **`public_repo`**<br />[PublicRepoConfig](#public_repo)          | public repository configuration Configuration for a public repository accessible without authentication                                                                                                                                     | **Optional**                         | -                                                                                                                |
| **`connected_repo`**<br />[ConnectedRepoConfig](#connected_repo) | connected repository configuration Configuration for a private repository connected to the Nuon platform                                                                                                                                    | **Optional**                         | -                                                                                                                |
| **`drift_schedule`**<br />string                                 | drift detection schedule Cron expression for periodic drift detection. If not set, drift detection is disabled. Supports templating                                                                                                         | **Optional**                         | `"0 2 * * *"`, `"*/10 * * * *"`                                                                                  |
| **`build_timeout`**<br />string                                  | build operation timeout Duration string for build operations (e.g., "30m", "1h"). Default: 5m. Max: 1h                                                                                                                                      | **Optional**<br />Default: `"5m"`    | `"30m"`, `"1h"`                                                                                                  |
| **`deploy_timeout`**<br />string                                 | deploy operation timeout Duration string for deploy operations (e.g., "30m", "1h"). Default: 60m. Max: 1h                                                                                                                                   | **Optional**<br />Default: `"60m"`   | `"30m"`, `"1h"`                                                                                                  |
| **`max_auto_retries`**<br />integer                              | 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**<br />Default: `"0"`     | `"3"`, `"5"`                                                                                                     |
| **`skip_noops`**<br />boolean                                    | Skip the deploy step when the plan has no changes (a no-op). Defaults to false                                                                                                                                                              | **Optional**<br />Default: `"false"` | `"true"`                                                                                                         |
| **`auto_approve_on_policies_passing`**<br />boolean              | Auto-approve the deploy when all policy checks pass. Defaults to false                                                                                                                                                                      | **Optional**<br />Default: `"false"` | `"true"`                                                                                                         |
| **`var`**<br />[array](#var)                                     | deprecated: use vars map instead Deprecated: Array of name/value pairs for Terraform variables. Use the vars map instead                                                                                                                    | **Optional**                         | -                                                                                                                |
| **`env_var`**<br />[array](#env_var)                             | 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                                                                  |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------------------------------ |
| **`operation`**<br />string | operation type Type of operation: provision, deprovision, update, reprovision, or trigger                        | **✅ Required** | `"provision"`, `"deploy"`, `"deprovision"`                               |
| **`role`**<br />string      | 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                                                 |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------ | ------------------------------------------------------- |
| **`contents`**<br />string | variable file contents Contents of a Terraform .tfvars file. Supports Nuon templating and external file sources: HTTP(S) URLs ([https://example.com/vars.tfvars](https://example.com/vars.tfvars)), git repositories (git::[https://githu](https://githu)... | **Optional** | `"./sandbox.tfvars"`, `"./variables/production.tfvars"` |

### `public_repo`

| Property                    | Description                                                          | Values         | Example                                                                                 |
| --------------------------- | -------------------------------------------------------------------- | -------------- | --------------------------------------------------------------------------------------- |
| **`repo`**<br />string      | repository URL HTTPS URL to the public Git repository                | **✅ Required** | `"https://github.com/user/repo.git"`, `"https://github.com/user/terraform-modules.git"` |
| **`directory`**<br />string | directory path Path within the repository to the configuration files | **✅ Required** | `"terraform"`, `"infra/terraform"`                                                      |
| **`branch`**<br />string    | Git branch Git branch to checkout and use for deployments            | **✅ Required** | `"main"`, `"develop"`, `"production"`                                                   |

### `connected_repo`

| Property                    | Description                                                                                  | Values         | Example                                    |
| --------------------------- | -------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------ |
| **`repo`**<br />string      | repository identifier Identifier of the connected repository configured in the Nuon platform | **✅ Required** | `"my-repo"`, `"production-infrastructure"` |
| **`directory`**<br />string | directory path Path within the repository to the configuration files                         | **✅ Required** | `"terraform"`, `"infra/terraform"`         |
| **`branch`**<br />string    | Git branch Git branch to checkout and use for deployments                                    | **✅ Required** | `"main"`, `"develop"`, `"production"`      |

### `var`

| Property                | Description              | Values       | Example                                           |
| ----------------------- | ------------------------ | ------------ | ------------------------------------------------- |
| **`name`**<br />string  | terraform variable name  | **Optional** | `"cluster_name"`, `"install_id"`, `"region"`      |
| **`value`**<br />string | terraform variable value | **Optional** | `"{{.nuon.install.id}}"`, `"true"`, `"us-west-2"` |

### `env_var`

| Property                | Description                | Values       | Example                                                    |
| ----------------------- | -------------------------- | ------------ | ---------------------------------------------------------- |
| **`name`**<br />string  | environment variable name  | **Optional** | `"NAMESPACE"`, `"INGRESS_NAME"`, `"LOG_LEVEL"`             |
| **`value`**<br />string | environment variable value | **Optional** | `"kube-system"`, `"{{.nuon.install.id}}-public"`, `"info"` |
