About Workflow Recipes

Tempest offers two types of recipes: applications and workflows. Whereas applications are used to deploy complete application stacks, workflows are are simpler recipes that can be used to quickly turn your manual request processes into self-service workflows.

Workflow recipes are great for:

  • Provisioning infrastructure components like VMs, databases, and more
  • Issuing credentials such as service accounts and API keys
  • Creating DNS records
  • Adding tenants to an environment

Workflows are built with the same resources that all Tempest recipes use, sourced from a combination of:

  • Tempest first-party apps
  • Your custom Private Apps

Workflows can have one or more resources. Add more resources, and the order the resources are created in will be calculated automatically based on any data dependencies between your resource steps.

A workflow for provisioning an AWS EC2 VM

Once created, workflows will be available in discoverable under the Deploy section, accessible from the navigation menu on the left of your Tempest web console. Your users can find and deploy these workflows from there.

Rerunning Workflows

By default, your users will be able to rerun a workflow as many times as they want from their Workflow project page.

Workflows & Private Apps

Workflows can manage resources from your Private Apps. When creating workflows from your Private Apps, you have complete control over what logic is executed by your resource. Here is how the lifecycle of workflows map to your Private App resource operations:

User ActionResource Operation
User creates workflow from the DeployResource CreateFn operation is called
User reruns workflow from a ProjectResource CreateFn operation is called again

Workflow Instructions

Additionally, you can provide you can configure your Private App resource to provide your users with a custom set of Markdown instructions to be displayed once they have created a project from your workflow. In your Private App ResourceDefinition, set the InstructionsMarkdown property:

A simple Hello World instructions example
package helloworld

import "github.com/tempestdx/sdk-go/app"

markdown := `# Hello {{ resource.name }}`

hw := &app.ResourceDefinition{
    Name: "Hello World",
    InstructionsMarkdown: markdown,
}