All Projects → lyraproj → Lyra

lyraproj / Lyra

Licence: other
Open Source Workflow Engine for Cloud Native Infrastructure

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Lyra

Rdbox
RDBOX is an advanced IT platform for robotics and IoT developers that highly integrates cloud-native and edge computing technologies.
Stars: ✭ 246 (+21.18%)
Mutual labels:  aws, azure, gcp, infrastructure
Pulumi Kubernetesx
Kubernetes for Everyone
Stars: ✭ 74 (-63.55%)
Mutual labels:  aws, azure, gcp
Checkov
Prevent cloud misconfigurations during build-time for Terraform, Cloudformation, Kubernetes, Serverless framework and other infrastructure-as-code-languages with Checkov by Bridgecrew.
Stars: ✭ 3,572 (+1659.61%)
Mutual labels:  aws, azure, gcp
Externalsecret Operator
An operator to fetch secrets from cloud services and inject them in Kubernetes
Stars: ✭ 177 (-12.81%)
Mutual labels:  aws, azure, gcp
Gardener
Kubernetes-native system managing the full lifecycle of conformant Kubernetes clusters as a service on Alicloud, AWS, Azure, GCP, OpenStack, EquinixMetal, vSphere, MetalStack, and Kubevirt with minimal TCO.
Stars: ✭ 2,093 (+931.03%)
Mutual labels:  aws, azure, gcp
Examples
Infrastructure, containers, and serverless apps to AWS, Azure, GCP, and Kubernetes... all deployed with Pulumi
Stars: ✭ 1,085 (+434.48%)
Mutual labels:  aws, azure, gcp
Cloudquery
cloudquery transforms your cloud infrastructure into SQL or Graph database for easy monitoring, governance and security.
Stars: ✭ 1,300 (+540.39%)
Mutual labels:  aws, azure, gcp
Offensive Terraform.github.io
Offensive Terraform Website
Stars: ✭ 25 (-87.68%)
Mutual labels:  aws, azure, gcp
Learning Cloud
List of resources - courses, sample code, articles and screencasts for learning AWS, Azure, GCP and Alibaba Cloud
Stars: ✭ 100 (-50.74%)
Mutual labels:  aws, azure, gcp
Hackingthe.cloud
Content for hackingthe.cloud
Stars: ✭ 101 (-50.25%)
Mutual labels:  aws, azure, gcp
Machine Controller Manager
Declarative way of managing machines for Kubernetes cluster
Stars: ✭ 186 (-8.37%)
Mutual labels:  aws, azure, gcp
Kubernetes Guides
Crosswalk Playbooks and Code for Teams to Manage Kubernetes in Production
Stars: ✭ 51 (-74.88%)
Mutual labels:  aws, azure, gcp
Go Cloud
The Go Cloud Development Kit (Go CDK): A library and tools for open cloud development in Go.
Stars: ✭ 8,124 (+3901.97%)
Mutual labels:  aws, azure, gcp
Pulumi
Pulumi - Developer-First Infrastructure as Code. Your Cloud, Your Language, Your Way 🚀
Stars: ✭ 10,887 (+5263.05%)
Mutual labels:  aws, azure, gcp
Cloudguardiaas
Check Point CloudGuard Network Security repository containing solution templates, Terraform templates, tools and scripts for deploying and configuring CloudGuard Network Security products.
Stars: ✭ 27 (-86.7%)
Mutual labels:  aws, azure, gcp
Pragmaticai
[Book-2019] Pragmatic AI: An Introduction to Cloud-based Machine Learning
Stars: ✭ 79 (-61.08%)
Mutual labels:  aws, azure, gcp
Hybrid multicloud overlay
MutiCloud_Overlay demonstrates a use case of overlay over one or more clouds such as AWS, Azure, GCP, OCI, Alibaba and a vSphere private infrastructure in Hub and spoke topology, point to point topology and in a Single cloud. Overlay protocols IPv6 and IPv4 are independent of underlying infrastructure. This solution can be integrated with encryption and additional security features.
Stars: ✭ 127 (-37.44%)
Mutual labels:  aws, azure, gcp
Gbt
Highly configurable prompt builder for Bash, ZSH and PowerShell written in Go.
Stars: ✭ 457 (+125.12%)
Mutual labels:  aws, azure, gcp
Opshell
DevOps Toolkit for Every Cloud on Every Cloud
Stars: ✭ 19 (-90.64%)
Mutual labels:  aws, azure, gcp
Cloudsploit
Cloud Security Posture Management (CSPM)
Stars: ✭ 1,338 (+559.11%)
Mutual labels:  aws, azure, gcp

Build Status

Lyra

What is Lyra?

Lyra (“lee-ruh”) is an open source workflow engine for provisioning and managing cloud native infrastructure. Using infrastructure as code, Lyra enables you to declaratively provision and manage public cloud, private cloud, and other API-backed resources as well as orchestrate imperative actions.

Infrastructure management involves defining and executing workflows that manage the underlying resources across their entire lifecycle - performing the initial provisioning, orchestrating intentional changes, and ultimately decommissioning those resources. Lyra is built to help manage all of these types of these workflows.

A Lyra Workflow describes a collection of Steps in a single manifest. A Step is a declarative resource or imperative action that can be orchestrated together. These include API-requested resources such as Azure Functions, Kubernetes Deployments, and Datadog monitors, as well as imperative actions and scripts. Lyra keeps a record of the resources that it has provisioned in order to ensure idempotency.

Lyra provides a number of language bindings to describe a Workflow, and the workflow engine is decoupled from the language bindings so that other language front-ends can be added to the system. The initial target languages are YAML for getting started, and Typescript for advanced uses. Lyra itself is written in Go and therefore supports Go workflows. Additionally, the project was initially started by Puppet and includes support for a version of the Puppet language.

Lyra enables teams to create organization-specific infrastructure Workflows that others can consume in a self-service way. Lyra is built to integrate into multiple familiar developer user interfaces, starting with a Kubernetes custom resource definition and controller, and as well as CI/CD Pipeline and CLI interfaces (coming soon!).

concept

A Workflow can be packaged as a deployable unit and consumed from any of these interfaces. By separating the authoring of the Workflows from their consumption, Lyra enables Application Services teams to provide tested configurations, embedded governance policies, and security validated policies in a single, deployable artifact that Application Developers can provision as dependencies within their containerized application.

For a more detailed view of how we think about Lyra, check out our introductory document!

Getting Started

Build

The project requires Go 1.11 or higher, and go modules enabled. These instructions should work on Linux and macOS. Proper packages are coming soon.

  1. Clone this repository: git clone https://github.com/lyraproj/lyra
  2. Build Lyra: cd lyra; make
  3. Optionally, if you intend to work with typescript, run make smoke-test-ts (this will check for an appropriate version of Node.js)

Deploying Workflows with the Lyra CLI

!! WARNING: THIS WORKFLOW CREATES REAL RESOURCES ($$) !!

  1. Apply a sample Workflow: ./build/bin/lyra apply aws --debug
  2. Delete the Workflow (i.e. its resources): ./build/bin/lyra delete aws --debug

This Workflow manages several resources on AWS and incorporates external data (for Tags, loaded here using a new Golang implementation of hiera), as specified in the data.yaml file. Lyra will use AWS credentials as configured in ~/.aws/credentials.

NB regarding regions: For the examples using Terraform providers (e.g. typespace=>'TerraformAws'), region is currently hard-coded to eu-west-1. For non-Terraform providers (e.g. typespace=>'aws'), Lyra will use the default region supplied in your ~/.aws/config.

There are also more examples of workflows for various cloud providers specified in yaml and in TypeScript. All TypeScript examples require NodeJs version 9 or greater (node --version) - see https://nodejs.org/en/download/. To run a basic sample, run make smoke-test-ts. This will run an npm install ((cd examples/ts-samples && npm install)) and then build/bin/lyra apply sample_ts --debug.

Deploying Workflows with Kubernetes

!! WARNING: THIS WORKFLOW CREATES REAL RESOURCES ($$) !!

  1. Install the Lyra Workflow CRD: kubectl apply -f k8s/lyra_v1alpha1_workflow_crd.yaml
  2. Start Lyra in controller mode: ./build/bin/lyra controller --debug
  3. In another terminal window, create a Workflow resource: kubectl apply -f k8s/vpc-workflow.yaml
  4. Inspect the resource: kubectl get workflows
  5. Delete the Workflow (i.e. its resources): kubectl delete workflow vpc-workflow

Tag data for Kubernetes workflows is specified in the data section of k8s/vpc-workflow.yaml.

Project Status

Very much in early development. Lyra is just starting and things are a bit bumpy! Star this project above to stay tuned.

Roadmap

Here’s a proposed roadmap for the project. Given the infancy of the project, it will change over time. We see the Lyra roadmap evolving in the following three dimensions:

User Experience

  • [x] Core Engine (minimal CLI)
    • [x] Apply
    • [x] Destroy
  • [x] Kubernetes custom resource definition/controller - IN PROGRESS
  • [ ] Full CLI (with preview functionality)
  • [ ] GitOps

Language Support

  • [x] YAML
  • [x] Go
  • [x] TypeScript
  • [x] Puppet
  • [ ] Language X (File a feature request!)

Content Ecosystem

  • [x] Proof of concept
  • [x] Public cloud providers (AWS, Azure, GCP)
  • [ ] Provider X ecosystem (File a feature request!)

Releases

[X] Proof of Concept

  • Ability to express resources in a Workflow in Puppet language

[ ] Release 0.3.0 - IN PROGRESS

  • Ability to preview resources

[X] Release 0.2.0

  • Ability to call external workflows
  • Simpler YAML syntax
  • Support for Go

[X] Release 0.1.0

  • Ability to create, update, delete resources
  • Multiple content providers (e.g. AWS, Azure, GCP and more)
  • Ability to package a Workflow
  • Ability to expose Workflows as Kubernetes resources
  • Support for YAML, TypeScript

Contributing

We'd love to get contributions from you! For a quick guide, take a look at our guide to contributing.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].