Lyra is a workflow engine for provisioning and orchestrating cloud native infrastructure.
Writing a Lyra workflow in YAML
Running Lyra in Kubernetes controller mode
Consists of a Provider Framework, a Lookup Framework, a Workflow Engine, and polyglot Language front-ends.
A Workflow describes a collection of Steps and must be declared in such a way that all input requirements of all contained activities have the potential to be fulfilled within the workflow itself. The workflow engine loads this declaration, validates it, and invokes its steps in an order determined by their parameters and returns declarations.
A Step is an abstract executable unit, analog to “a function in a program”, that consumes named parameters and produces named return values. The workflow engine triggers its execution when all its parameter requirements are met. When several steps are grouped into a workflow, the execution in turn produces returns available as parameters to other steps which then get triggered. In essence, this means that all ordering of steps and all concerns regarding parallel or sequential execution, can be expressed as parameter declarations and return values that fulfills them.
A Step may have a Guard. A Guard is an expression consisting of named variables, the boolean operators “!”, “and”, and “or”. It may also contain parentheses to enforce order of evaluation.
A Step may be embedded in a workflow, in which case it can only be seen by the workflow that contains it, or be public, in which case it can be referenced from anywhere. A CLI command and Call
step will typically invoke a public workflow.
A Step can be a Resource
, an Action
, a Call
, a State Handler
, or a Workflow
.
A special form of declarative step that defines a desired state. A resource is always managed by a State Handler
responsible for setting or mutating its state.
A step that contains a function written in a supported programming language. The code is evaluated by the corresponding language front-end.
A step that calls executes another step that is publicly available (can be found by the loader).
A step that contains CRUD (Create, Read, Update, Delete) functions written in a supported programming language. The workflow engine selects the functions to be evaluated and the evaluation is then performed by the corresponding language front-end.