Skip to content

Pipeline Templates

Occasionally there will be a need for the deployment / update of one resource to affect a change in another. This section outlines how that can be achieved with Pipeline Templates.

Overview

A pipeline template is an optional pipeline: {} block that can be added to the top level of a resource schema document. It allows a template developer to define actions to run against other resources before and after the primary resource is deployed.

Example

Consider the following template_schema.json:

{
  "$schema": "http://json-schema.org/draft-07/schema",
  "$id": "https://github.com/microsoft/AzureTRE/templates/workspace_services/guacamole/user_resources/guacamole-dev-vm/template_schema.json",
  ...
  "properties": {...},
  "pipeline": {
    "install": [
      {
        "stepId": "6d2d7eb7-984e-4330-bd3c-c7ec98658402",
        "stepTitle": "Update the firewall name",
        "resourceTemplateName": "tre-shared-service-firewall",
        "resourceType": "shared_service",
        "resourceAction": "upgrade",
        "properties": [
        {
          "name": "display_name",
          "type": "string",
          "value": "A new name here!"
        }]
      },
      {
        "stepId": "main"
      },
      {
        "stepId": "2fe8a6a7-2c27-4c49-8773-127df8a48b4e",
        ...
      }
    ]
  }
}

When a user deploys this resource, the API will read the install: [] array within the pipeline: {} block, and will: - Orchestrate the upgrade of the tre-shared-service-firewall, changing the display_name property to A new name here!. - Run the main (primary resource) install - Complete the next step

A single Operation document will be used to keep track of which steps in the deployment chain have completed.

Current Limitations

This feature is undergoing active development, and is currently limited in the following ways: - Only statically addressable resources can be referred to - shared_services, as these are singletons and can be referenced by a template name. - Only the upgrade action for each secondary resource is supported. Support for install / uninstall of secondary resources is planned. - No current planned support for customActions.