Relay is an event-driven DevOps platform. It listens to events from 3rd party services like AWS, Datadog, PagerDuty, Jira and more to trigger simpler, smarter workflows that automate tedious tasks. A lot of existing solutions either require a lot of upfront DIY work (AWS Lambda or running your own script) or they weren’t built for DevOps teams (Zapier, IFTTT).
Relay provides out-of-the-box workflows for common use cases like cloud cost optimization, security, incident response and more. If those don't work for you, you can write your own workflow using integrations with dozens of cloud provider services, open source tools and APIs that can be composed together in a YAML-based workflow (yes, I know, more YAML).
Some features we think are interesting:
- Visual execution graph shows exactly what's happening in your workflow run.
- Connections make it simple to authenticate to other services.
- Audit log shows who initiated every workflow run, whether manual or by an external service.
- Human in the loop approvals give you full confidence in your automation.
- Growing community of 30+ open source integrations with AWS, Azure, GCP, Datadog, PagerDuty, VictorOps, Jira, Terraform, Helm, and more.
Looks great! "Zapier for DevOps" would convey it a lot faster. It didn't click for me until I got to that part. I'm excited to try it out!
A couple things:
1) Please, please support some other config file other than just YAML. Even JSON would be an improvement, since you wouldn't have to change your config reader library. YAML has been a miserable nightmare to use in other tools like Open API Spec. I'm not alone in my YAML hate, either[1][2][3][4].
Implicit typing and semantic whitespace in a data file is insane. At least in Python, you're not unlikely to get an error if your whitespace is off. In a config file, you might just end up with dangerous/confusing behavior.
2) I'm surprised you used Relay, which is already used by Facebook. I don't think Facebook is going to care that much, but it's going to be really hard to Google this library.
> 1) Please, please support some other config file other than just YAML.
Although we don't directly advertise it, you can in fact write a workflow in JSON and there's an underlying JSON interchange format that is authoritative in our system. We expect that any other languages we support would "compile" to this JSON format. What other languages are interesting to you? We've looked at CUE[0], HCL, and of course Puppet itself.
I think the YAML hate is a bit exaggerated. It's not perfect but I would rather write out YAML than JSON or XML.
Besides it seems like this company (Relay) has gone to the effort of making a VScode language extension, which enables autocomplete and syntax checking in the YAML files. Which is cool.
FWIW we didn't make a separate extension, it uses the vscode-yaml extension from Red Hat, you just configure it to associate certain filetypes with our json-schema and custom tags. It is awesome for sure.
(When) Is a self-hosted version coming? Does Relay use Lyra in some way, or is it a brand new engine?
The usual DevOps automation web systems like Jenkins, GoCD, Rundeck are all disappointing in one way or a dozen. Java, to start with. I'm desperate to see a modern, full-featured, self-hosted alternative.
On-premises support is in progress. No release date yet. That said, would you need it to be fully self-hosted or would it be viable to have an on-premises agent?
Relay uses Tekton under the hood to run workflows and Knative to process triggers. What kinds of workflows are you thinking about running?
Fully self hosted is a requirement in my case. Letting an agent that's essentially externally controlled would be a hard sell in corporate environment.
In my case, I need very simple workflows that e.g. run Ansible playbooks, or do non-urgent monitoring, bookkeeping, and essentially trigger scripts. I usually need a single step - no serious need for a pipeline/workflow even. Cron job and manual triggering would be enough to cover the base usage (though git hook would be next on the list).
The more "convoluted" part that I'd want to see is a capability of jobs controlling themselves (e.g. job disabling itself or others on error), jobs as code, flexible notification system, and make it easy to deschedule/disable jobs in bulk, easy to extend with plugins.
Granted, Rundeck has most of what I need, but the implementation is Java, which also includes its SSH functionality.
What made you go for yaml rather than your own DSL? For a service that's as programmable as relay, it seems nice to have better support for branching control flow for example.
Hey there, I'm an engineer on Relay. Our PM is busy so thought I'd jump in here.
Great question on why we went with YAML instead of our own DSL. The main reason is, really, YAML has become a bit lingua franca for managing configuration of tools similar to Relay. We wanted to keep Relay simple and make it as familiar as possible. So YAML was our go-to choice.
We have some control flow primitives that you can configure but to do really complicated logic we figured it's best to push that in to the steps versus the configuration (there by keeping the configuration simple). Here's a link to our (very simple) conditional execution docs: https://relay.sh/docs/using-workflows/conditionals/
It varies. We have a primary PostgreSQL database for non-sensitive data including some workflow configuration. We store sensitive data in Vault and logs in Google Cloud Storage. A bit more info here: https://relay.sh/docs/how-it-works/#where-and-how-is-my-data...
I'm happy to answer any questions about our storage and security architecture too!
Relay is an event-driven DevOps platform. It listens to events from 3rd party services like AWS, Datadog, PagerDuty, Jira and more to trigger simpler, smarter workflows that automate tedious tasks. A lot of existing solutions either require a lot of upfront DIY work (AWS Lambda or running your own script) or they weren’t built for DevOps teams (Zapier, IFTTT).
Relay provides out-of-the-box workflows for common use cases like cloud cost optimization, security, incident response and more. If those don't work for you, you can write your own workflow using integrations with dozens of cloud provider services, open source tools and APIs that can be composed together in a YAML-based workflow (yes, I know, more YAML).
Some features we think are interesting:
- Visual execution graph shows exactly what's happening in your workflow run.
- Connections make it simple to authenticate to other services.
- Audit log shows who initiated every workflow run, whether manual or by an external service.
- Human in the loop approvals give you full confidence in your automation.
- Growing community of 30+ open source integrations with AWS, Azure, GCP, Datadog, PagerDuty, VictorOps, Jira, Terraform, Helm, and more.
We also just recently put out a blog post about some pretty novel uses of Knative and Ambassador to create user-generated triggers: https://blog.getambassador.io/user-defined-webhooks-in-puppe...