Skip to main content
Blueprints are reusable templates that allow you to configure everything needed to automate installations of your services. They define a collection of service installations, and inputs which can be customized across environments. When you install a blueprint on an environment, it creates installations for all the services defined in the blueprint and keeps them in sync with the blueprint.
Blueprints help you standardize installations and reduce configuration duplication across environments.

When to use blueprints?

Blueprints are most powerful when you have multiple environments and find yourself repeating the same configuration patterns across them. They allow you to avoid configuration drift and ensure consistency for your services. On the other hand, if you only have a single environment, it may be premature to use blueprints and it would be easier to just manage the configuration directly at the installation level.
Start with blueprints when you have at least two environments or when you find yourself copying configurations between deployments.

Using blueprints

Blueprints are configured via Git Sync using the resource-based YAML format. See infrastructure as code to set up Git Sync before using blueprints. Here is an example of a blueprint of a simple application consisting of a frontend and backend web-server.
Install the blueprint on environments:
See Blueprint Reference for detailed information about all the blueprint fields.

Blueprint syncing

When you make changes to blueprints, these changes will result in changes to all blueprint installations automatically, if they are valid and do not require intervention.
Changes to environment variable or configuration made to installations directly will be overwritten if the same key is also defined on the blueprint and the effective value is different.
If you add an environment variable or a secret directly on the installation but this environment variable or secret does not appear in the blueprint definition, then it will be ignored and not managed by the blueprint. This also means if you remove an environment variable or secret from the blueprint definition, it will not be automatically removed from the installation.

Release versions

Each sync that changes a blueprint’s definition publishes a new release. Ryvn numbers releases automatically unless the blueprint sets spec.version to an exact SemVer version such as 1.4.0. With an exact version, identical content reuses the existing release, different content under an existing version is refused as a conflict, and a retired version is refused; Ryvn never falls back to an automatic number. Pull request previews keep their generated -preview.* identity and do not consume the stable version. Maintenance versions such as 1.4.3 after 2.0.0 are allowed and do not become channel head over a higher version. Run ryvn plan -f <blueprint.yaml> to see the requested version listed as a BlueprintRelease entry under the blueprint (create, unchanged, or blocked with the reason) before syncing; ryvn get blueprint <name> -o yaml shows spec.version when the blueprint uses an exact version, while ryvn describe blueprint <name> and the blueprint definition page show the resolved release version. Pull sync converges on the current commit and may skip intermediate commits. A release can also be imported without a source repository from a document exported with ryvn get blueprint-release:
Blueprints whose releases are imported or edited this way must stay outside the paths git sync manages. See Release versions for the version grammar, prerequisites and the document format.

Blueprint inputs

Inputs allow you to customize blueprint behavior when installing it on an environment. They support various data types:

Input properties

Each input can have these properties:
Inputs without default values are automatically converted to blueprint inputs and are required to be assigned a value when installing the blueprint.

Service configuration

Each service installation in a blueprint can be configured with:

Environment variables

For web-server services, you can define environment variables:

Service configuration

The config field contains service-specific configuration as a YAML string. This is the same configuration that you would provide to the service when installing it manually. For helm charts, this is the same as the override values.yaml file and for terraform, this is the same as the variables yaml file.

Dependencies

A service can declare which siblings must be ready before it installs for the first time, by alias or name. Ryvn resolves them to the installations it creates, so the order holds in every environment the blueprint is installed in. See Installation Dependencies.

Template variables

Configuration can reference blueprint inputs using template syntax.

Secrets management

Blueprints can define secrets that are automatically generated or referenced from variable groups:

Generated secrets

Secret types

Variable Groups

For secrets managed via variable groups (recommended):

User-defined secrets

For secrets that need to be provided by users:

Blueprint outputs

Outputs allow a blueprint to expose values produced by its underlying service installations — such as database endpoints, connection strings, or resource IDs — so that other services can consume them.

Defining outputs

Declare outputs in the blueprint spec. Each output uses a from template to resolve its value from an installation’s outputs (e.g., terraform outputs):

Consuming outputs

Other services can reference blueprint outputs in two ways: Template syntax (non-secret outputs only):
Structured references (all outputs, including secrets):
Secret outputs (isSecret: true) are not available via template syntax. Use valueFromOutput to consume them — this ensures secrets are routed through the secrets system and never rendered into plaintext manifests.

Output properties

See Blueprint Reference for the full property reference.

Installing blueprints

To install a blueprint on an environment, declare a standalone BlueprintInstallation resource:

Installation options

Installing the same blueprint multiple times on an environment must be enabled for your organization by Ryvn. Once enabled, you must provide a unique metadata.name for each installation. Until it is enabled, a second installation of the same blueprint in an environment is rejected even with a unique metadata.name.