top | item 23645206

Show HN: Relay – Event-driven DevOps automation

100 points| product1087 | 5 years ago |relay.sh

32 comments

order

product1087|5 years ago

Hi everyone! PM for Relay here.

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...

smt88|5 years ago

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. https://dev.to/jessekphillips/stop-using-yaml-3kec

2. https://hitchdev.com/strictyaml/why/implicit-typing-removed/

3. https://devopsdays.org/events/2019-stockholm/program/philipp...

4. https://www.arp242.net/yaml-config.html

tie_|5 years ago

(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.

poppejans|5 years ago

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.

jacques_chester|5 years ago

Where is Relay's data (configurations, step results/logs) stored?

tbrb|5 years ago

Sounds interesting. Have you any comparisons between this and StackStorm? At first glance, this looks like it competes in a similar market.

Additionally, is this only going to be a SaaS offering, or will we have the option to self-host this as well?

bradhe|5 years ago

Hey there, as mentioned elsewhere I'm an engineer on Relay. Our PM is busy right now so thought I'd jump in.

> Have you any comparisons between this and StackStorm?

Relay is very similar to StackStorm! One of the biggest differences between Relay and StackStorm, however, is that every step and trigger in Relay is just a docker container. You can basically run any container you want, but containers that are authored specifically for Relay are, obviously, better (integration with the execution environment, our secrets management service, etc.).

> is this only going to be a SaaS offering

This is another key difference between Relay and StackStorm: We only offer a SaaS right now. That's not to say that we won't eventually offer a self-hosted version (or some sort of hybrid solution for that matter)--it's just the approach we're going with for now.

stuff4ben|5 years ago

So I didn't see anything on your site on my cursory glance at it, but I'd like to know if you have any use cases replacing Jenkins Pipelines and Helm deployments into an OpenShift/Kubernetes environment? I'm writing a lot of Jenkins pipelines now and groovy is killing me!

impl|5 years ago

We do have a Helm integration that might be able to help you out: https://relay.sh/integrations/helm/

The limiting factor right now would be whether your cluster is accessible to the internet, which of course isn't super common. We are working through what our story for connecting to on-prem infrastructure looks like, so if you can provide any additional details on your environment, it would be helpful!

lomkju|5 years ago

I think we can do the same things using github actions now. P.S we have self-hosted runners in our enviroment where each step is a docker container too.

We have complex flows where we use Slack, Spinnaker(Webhooks), Terraform, PagerDuty ... and much more.

Is there something better that we can achieve with this?

impl|5 years ago

Hi,

This is a good question, thank you! The flow of events into our system is somewhat different than GitHub Actions. We're trying to be a consumer of all sorts of events, including, say, data published to AWS SNS or via a Docker Hub webhook[0]. All of that isn't quite in place yet, but we want to act more like an event broker than a CI/CD solution alone.

One concept we're throwing around is supporting CloudEvents[1] and dispatching workflows based on event types. If anyone has experience with CloudEvents we'd love to hear if that would be something useful to you.

[0]: https://github.com/relay-integrations/relay-dockerhub/blob/m...

[1]: https://cloudevents.io/

crazypython|5 years ago

Sadly, it doesn't seem to support SSH, so I can't use it to replace Fabric scripts.

impl|5 years ago

Hi,

I wrote an SSH step for you. Here's the source code:

https://github.com/relay-integrations/relay-ssh/blob/master/...

And since it isn't documented yet, here's how you would use it in a workflow:

  steps:
  - name: ssh
    image: relaysh/ssh-step-exec
    spec:
      connection: !Connection {type: ssh, name: my-ssh-connection}
      username: relay
      port: 2222 # defaults to 22
      knownHosts: |
        server1.example.com ssh-rsa AAAAEXAMPLE
        server2.example.com ssh-rsa AAAANOTHEREXAMPLE
      # or
      #strictHostKeyChecking: false
      on:
      - server1.example.com
      - server2.example.com
      input:
      - whoami
      - uptime
      - cat /etc/passwd
Please feel free to shoot me an email (check my profile) and I'd be happy to help write a workflow for your use case with you!

kevinsf90|5 years ago

What's the pricing model? I don't see it on the website

captainavocado|5 years ago

We're thinking about a few different models, but haven't settled on one yet. What kind of model would you be interested in? Metered or other usage-based, per-seat or per-user, or something totally different?