Skip to main content
Terraform installations deploy Terraform services to environments. Configure infrastructure resources, secrets, and service-specific settings for your cloud infrastructure.

Properties

service

string — required Name of the Terraform service to install.

environment

string — required Target environment for this installation.

name

string — optional Custom name for this installation. If not specified, uses the service name.

namespace

string — optional Kubernetes namespace to install into. If not provided, uses the environment’s default namespace, which has the same name as the environment. Cannot be changed after install. See Namespaces.

releaseChannel

string — optional Release channel to follow for this installation. If not specified, uses the environment’s channel.

dependencies

array — optional Installations that must be ready before this installation installs for the first time. Ryvn holds the first install until every entry is satisfied. After that, dependencies hold nothing: upgrades, configuration changes, and secret rotations deploy even while a dependency is being reinstalled. Each entry sets exactly one key: Dependencies have no version bounds; version requirements belong in the service’s release dependencies. When this installation’s release depends on a service and dependencies names installations of that service, the release’s range is checked against the named installations only. See Installation dependencies. You can name several installations of the same service. An entry can’t name this installation, name its own service with service, repeat another entry, sit beside a serviceInstallation entry of the same service, or form a cycle with other installations’ dependencies. Installations created by a blueprint take their dependencies from the blueprint; to set them directly, exclude the installation from blueprint updates first. See Installation Dependencies.

Variable Groups

All variable groups in the environment are automatically available to Terraform installations as Kubernetes secrets — no explicit linking required. Terraform variables take literal values, so read individual keys with k8sSecretValue:
Unlike server and job installations, Terraform installations do not use the variableGroups field. Any variable group created in the environment is automatically accessible.

config

string or array — optional Service configuration. For Terraform, this is the terraform variables in YAML format.

secrets

array — optional Secrets to be passed to the Terraform module. Each secret can be generated or get values from blueprint inputs. To share values across installations, use variable groups: all environment variable groups are available to Terraform installations as Kubernetes secrets and can be referenced in config via k8sSecretValue.

secrets[].name

string — required Name of the secret.

secrets[].generated

object — optional Configuration for generating a secret automatically. Cannot be used with values.

secrets[].generated.type

string — required Type of secret to generate. Valid values: random-string, random-bytes, rsa-key, ec-key.

secrets[].generated.length

integer — optional Length of the random string or bytes to generate. Only valid for random-string and random-bytes types.

secrets[].values

array — optional Key-value pairs for the secret. Cannot be used with generated.

secrets[].values[].key

string — required Secret key name.

secrets[].values[].valueFromInput

object — optional Reference to a blueprint input for the value. If the referenced input has a condition that evaluates to false, this secret key is automatically omitted.

secrets[].values[].valueFromInput.name

string — required Name of the blueprint input to get the value from.

Outputs

Terraform installation outputs are available to other installations via template syntax. After a Terraform service completes its apply, any outputs defined in the Terraform module become available for reference in other installation configs.

Referencing outputs

Use the serviceInstallation template function to reference outputs from a Terraform installation: {{ (serviceInstallation "installation-name").outputs.* }}

Scalar outputs

Reference simple string, number, or boolean outputs directly:

Nested outputs

Access nested object properties using dot notation:

Array outputs

Use the index function to access array elements:

Complex outputs with toJson

For complex data structures, use toJson to serialize the entire output:

Default values

Provide fallback values for optional outputs:

Combining with environment state

Combine installation outputs with environment values:

Cross-installation dependencies

When one installation references another’s outputs, Ryvn automatically manages the deployment order:

Examples

RDS database with generated password:
With generated secrets and variable group references in config: