Blueprints

Blueprints are the core of Bluebricks, allowing you to define and manage your infrastructure templates. Blueprints compose one or more artifacts (or other blueprints) and define how they work together.

Complete Example: bricks.yaml

Below is a copy-paste-ready example of a blueprint that demonstrates data references, secret references, and hardcoded/user-provided props:

name: my_app_stack # (Required) Unique blueprint name
version: 1.0.0 # (Required) Semantic version (MAJOR.MINOR.PATCH)
description: Deploys a VPC, database, and app server with secure secret handling  # (Optional)
tag: [app, vpc, database, server] # (Optional)
inputs:
  region:
    type: string
    allowed_values:
      - us-east-1
      - us-west-2

packages:
  - name: vpc # Reference to an artifact or blueprint
    version: 1.0.0
    props:
      region: inputs.region # Reference to an global input
      cidr_block: 10.0.0.0/16 # Hardcoded value

  - name: database
    version: 1.0.0
    props:
      region: inputs.region #Reference to an global input
      db_user: admin # Hardcoded value
      db_password: secrets.db_password # Secret reference
      vpc_id: data.vpc.vpc_id # Data reference to an output of another package

  - name: app_server
    version: 1.0.0
    props:
      db_host: data.databse.endpoint # Data reference to an output of another package
      db_user: admin # Hardcoded value
      db_password: secrets.db_password # Secret reference
      
outputs:
  app_server_ip:
    description: Public IP address of the app server
    value: data.app_server.public_ip # Data reference to an output of a package

Validation Rules

  • Blueprint (name): Must start with a letter or underscore, and contain only letters, numbers, and underscores.

  • inputs and output names: Must start with a letter or underscore, and contain only letters, numbers, and underscores.

  • No spaces or special characters are allowed in names.

  • Version: Must follow semantic versioning (MAJOR.MINOR.PATCH), e.g., 1.0.0.

Key Fields

  • name: Blueprint identifier

  • version: Semantic version (required)

  • description: Human-readable description

  • packages: List of referenced artifacts/blueprints

  • inputs: Input parameters for the blueprint

  • outputs: Output values exposed by the blueprint

Properties options

Properties defined the input variables that the blueprint will use and how they will be used, including restrictions or origin of variable (from another package).

inputs fields:

  • Property name: defines the name of the property as it will be used throughout the code and/or during deployment.

  • type: The data type of the property

  • description: Human-readable description

  • default: Default value if exist for the property, this value will be used if not supplied during deployment

  • allowed_values: List of values that are allowed to be used. During install, the supplied variable will be verified against this list. The app will list only these options on the deployment page.

inputs structure:

Bluebricks app allowed values example:

Allowed values selection

Last updated

Was this helpful?