Skip to main content
Config files allow you to define a BYOC application using TOML files. Under the hood, Nuon will handle keeping your configuration in sync.

Create an app

Create a local App directory - Create a directory and name it after your app. This directory will contain your app’s configuration files.
nuon
Config files are used to sync the configuration for a single app. The app name must be the same as the directory you created above.
nuon

Sync an App

To sync an app, and it’s configuration run:
nuon

Language Server Protocol (LSP)

Nuon has a Language Server with a VS Code extension that provides autocompletion, validation, and inline documentation for Nuon configuration TOML files.
The Language Server is a beta feature and included in Nuon Labs so please report any bugs or inconsistencies as a GitHub issue.
The Language Server requires the Nuon CLI so please download it first. Future versions of the Language Server will include the CLI. The component type is required after a # at the top of each Nuon configuration TOML file.
components/certificate.toml
Here are the valid component types in the Nuon OSS repository.

Breaking up Config Files

Since configs can get complex as your application grows, we follow a structured approach to organize your configuration files. Create a components directory in your project root with individual files for each component. e.g., components/helm_deploy.toml.
components/helm_deploy.toml
See our example-app-configs repository for common directory structures.

Reference

Input

Define inputs for an app using inputs.toml file. To configure a sensitive api_key and vpc_id input:
inputs.toml
Inputs are not required, unless you are using a sandbox or components that require inputs. e.g., root_domain for the aws-eks-sandbox.

Sandbox

Define the sandbox using the sandbox.toml file. To define an aws-eks-sandbox Sandbox:
sandbox.toml
Nuon maintains managed sandboxes for the platforms we support.
Notice how variables can be defined in the vars block and with var_file.

Component Config

You can define components by creating <component>.toml files in a components directory. Components must declare a type field and any relevant component-specific configuration.

Component Dependencies

Dependencies can be explicitly defined using the dependencies field in each component’s configuration file. You can specify which components a given component depends on by listing their names in the dependencies array. Learn more about depencencies here. In this example, an application load balancer component requires certificate and whoami helm components are deployed first.
components/alb.toml

Terraform Module Component

To define a terraform module component use the terraform_module type. To configure a terraform component using a connected repo:
components/terraform.toml

Pulumi Component

To define a pulumi component use the pulumi type. To configure a pulumi component using a connected repo:
components/pulumi.toml

Helm Chart Component

To define a helm chart component use the helm_chart type. To configure a helm chart in a connected repo:
components/helm.toml

Kubernetes Manifest Component

To define a kubernetes manifest component use the kubernetes_manifest type.
manifest-db-secret.toml

Docker Build Component

To define a docker build component use the docker_build type. To configure a docker build component from a private repo:
components/docker_build.toml

Container Image Component

To define a container image component use the container_image type. To configure a public container image:
components/container_image.toml
To configure a container image from an ECR repo:
components/container_image_ecr.toml

Install Configs

You can create and manage installs by creating <install>.toml files in an installs directory managed separately from the apps. An install must declare a name field and any relevant install-specific configuration. Install config files allow you to update multiple installs simultaneously, offering a more streamlined experience than the dashboard. By defining these configurations in code, you can automate your workflow using a CI system like GitHub Actions. The inputs are defined as a list of input groups. This is just for logical grouping, and inputs from different groups can be defined together. Note that if an input is defined multiple times, the last defined value would be used. Input configs will be grouped together, reflecting the input groups you have defined in the app. Sensitive inputs will be excluded, to avoid saving them in plain text in version control. When syncing install config files, sensitive inputs will be ignored. They can still be managed manually via the dashboard.
Currently only AWS installs are supported using install config files.
Generate an Install Config File To manage existing installs using CI, use the CLI command nuon installs generate-config to export an existing install to stdout. Create a TOML config file for the install in the installs folder of your app’s config and paste the stout.
Update an Install The nuon installs sync command can be used with a single install config file or with a directory containing multiple install config files.
In the dashboard, see the newly-created workflow to track the install’s upgrade process. An Example Install Config File
installs/install.toml
All input values should be defined as strings. They will be parsed into the correct type by Nuon.