Blueprints are templates that streamline the provisioning process using standardized configurations built on best practices, allowing you to quickly define your infrastructure provisioning parameters, customize them, and begin deploying your applications.

The blueprints feature is part of the DevOps as Code feature set. You use the XL CLI blueprint command to select a blueprint. The XL CLI then walks you through questions and settings specific to the selected blueprint and creates declarative YAML files that you can store with your code and use to provision cloud resources, deploy applications and manage your release pipeline.

Blueprints repository

A blueprints repository is a remote repository that contains templates and source code for blueprint functionality. Each time you run the XL CLI xl blueprint command, it fetches code from the blueprint repository.

Using the default blueprints repository

By default, the XL CLI is configured to access the XebiaLabs public blueprint repository provided in the XebiaLabs public software distribution site. This repository includes the public blueprints developed by XebiaLabs and the URL to access it is defined in the ~/.xebialabs/config.yaml file. If you are simply utilizing the XebiaLabs-provided blueprints provided in this repository, you can run the xl blueprint command and select from one of these publicly-available blueprints.

Establishing your own blueprints repository

As your organization matures in the development and use of blueprints, you can choose to establish your own blueprints repository, storing them in an accessible location and configuring the XL CLI to point to that repository. Then, when running the xl blueprint command, you can do one of the following:

  • Explicitly specify your blueprints repository with the command. For example:

    xl blueprint --blueprint-repository-url https://mycompany/myblueprints --blueprint-repository-username USERNAME --blueprint-repository-password PASSWORD
    
  • Configure your repository location and credentials in the XL CLI configuration file (~/.xebialabs/config.yaml):

    blueprint-repository:
    username: "USERNAME"
    password: "PASSWORD"
    url: https://mycompany/myblueprints
    

Repository structure example

A good way to understand the file and folder structure of a blueprint repository is to review the public XebiaLabs blueprint repository. For example, the blueprint for AWS microservices-ecommerce folder includes multiple folders and applications.

├── index.json
└── aws/
      └── microservice-ecommerce/
            ├── blueprint.yaml
            ├── xebialabs.yaml
            ├── cloudformation/
            │     ├── template1.yaml.tmpl
            │     └── template2.yaml
            │
            └── xebialabs/
                  ├── xld-environment.yaml.tmpl
                  ├── xld-infrastructure.yaml.tmpl
                  ├── xlr-pipeline.yaml.tmpl
                  └── README.md.tmpl
└── docker/
      └── simple-demo-app/

The repository structure consists of:

  • templatename.yaml.tmpl: All files with tmpl extension are considered templates for the blueprint. These template files will be passed through generator so “ready-to-use” YAML files will be generated.

  • Regular files and folders: All files and directories will be copied as is.

index.json file

There should be index.json file at the root level of your blueprint repository and provides a definition of all folder(s) and application(s) inside folders used for blueprint generation.

For example, the index.json file in the XebiaLabs public repository defines three applications inside the aws folder:

[
  "aws/monolith",
  "aws/microservice-ecommerce",
  "aws/datalake"
]

blueprint.yaml file

Each application must have a blueprint.yaml in which you specify the required user prompts and files used for the blueprint. For a working example, open the XebiaLabs Microservices e-commerce blueprint.yaml file to review the metadata, parameters, variables and files defined for this blueprint.

Note: See the Blueprint YAML format for a description of this file structure.

xebialabs.yaml file

This file is an entry point for xl apply command. For your convenience, this file combines all XL Deploy and XL Release YAML templates as an Import kind.

xebialabs folder

You put your XL Deploy and XL Release YAML templates in this folder.

cloudformation folder

This folder is specific to AWS, containing CloudFormation templates used to provision the AWS infrastructure from XL Deploy.