1

I'm considering implementing a chatops platform for my company to help automate code deploys. I've seen some alternatives, which I narrowed down to cog and Errbot. Errbot seems to be actively maintained, while cog hasn't seen a commit to master since July 2018. I liked cog's architecture, which gives me a sense of performance and resiliency; it can easily be deployed in Kubernetes and it is extensible in any language. Also its ACL feature is a big plus.

My previous company's devops team used cog, and it seemed pretty solid to me. However, I'm concerned about deploying it as my current devops team is small and if cog is no longer maintained we cannot afford to maintain it.

Can you share your experiences with any chatops platform you're using, and what are their pros and cons? I'm interested in chatbots that have at least these features:

  • Has an ACL built in, similar to cog
  • Able to be extended in any language (or at least its extensions can be implemented in Python/JavaScript).
  • Could you rephrase the questions so that they are less opinionated? One could think of "What are pros and cons" or "What options are available" – 030 Dec 4 '19 at 17:01
  • "I've seen some alternatives" -- alternatives to what? – schaiba Dec 5 '19 at 7:45
  • @schaiba some chatbot alternatives to cog. I really like the architecture of it, but it's a bummer it's no longer maintained. – rober710 Dec 5 '19 at 17:21
1

I have found StackStorm to be the most fully-featured ChatOps product.

It satisfies your requirements:

  • Authz, RBAC, ACL ✔
  • Extensible in Python ✔

See below.


StackStorm is marketed as a

Robust If This, Then That Platform

(but for DevOps)

StackStorm consists of a few components, beyond it's chatops capability:

  • Sensors: Sensors are Python plugins for either inbound or outbound integration that receives or watches for events respectively. When an event from external systems occurs and is processed by a sensor, a StackStorm trigger will be emitted into the system.

  • Triggers Triggers are StackStorm representations of external events. There are generic triggers (e.g. timers, webhooks) and integration triggers (e.g. Sensu alert, JIRA issue updated). A new trigger type can be defined by writing a sensor plugin.

  • Actions Actions are StackStorm outbound integrations. There are generic actions (ssh, REST call), integrations (OpenStack, Docker, Puppet), or custom actions. Actions are either Python plugins, or any scripts, consumed into StackStorm by adding a few lines of metadata. Actions can be invoked directly by user via CLI or API, or used and called as part of rules and workflows.

  • Rules: Rules map triggers to actions (or to workflows), applying matching criteria and mapping trigger payload to action inputs.

  • Workflows Workflows stitch actions together into “uber-actions”, defining the order, transition conditions, and passing the data. Most automations are more than one-step and thus need more than one action. Workflows, just like “atomic” actions, are available in the Action library, and can be invoked manually or triggered by rules. Packs Packs are the units of content deployment. They simplify the management and sharing of StackStorm pluggable content by grouping integrations (triggers and actions) and automations (rules and workflows). A growing number of packs are available on StackStorm Exchange. Users can create their own packs, share them on Github, or submit to the StackStorm Exchange.

  • Audits Audit trail of action executions, manual or automated, is recorded and stored with full details of triggering context and execution results. It is also captured in audit logs for integrating with external logging and analytical tools: LogStash, Splunk, statsd, syslog.

StackStorm's ChatOps is built into it's other components:

ChatOps leverages two components within StackStorm in order to provide a fluid user experience. These subsystems are the Action Aliases and Notifications subsystems. You can learn more about each of these individual components in their corresponding sub-sections.

but you can also use your own:

If you already have a Hubot instance, you’ll need the hubot-stackstorm module installed and the following environment variables set up:

Authentication can be done by StackStorm itself, or delegated to a proxy authentication system:

The service can be configured with different backends (i.e. PAM, LDAP, etc.) to handle the authentication. If a backend is not specified, an htpasswd-compatible flat file authentication backend is used. To use a different backend, select and install the appropriate python package from the StackStorm community repos and configure st2auth accordingly.

It also supports API keys.

As for RBAC, they claim that it is supported in their "Extreme Workflow Composer"

Role Based Access Control (RBAC) is only available in Extreme Workflow Composer. For information about Extreme Workflow Composer and the differences between StackStorm and Extreme Workflow Composer, please see stackstorm.com/product.

More at https://docs.stackstorm.com/install/ewc.html

StackStorm has "packs" which are predefined workflows, similar to IFTT or Zapier, which are sets of triggers, rules and actions. You can extend it with your own actions:

An action is composed of two parts:

  • A YAML metadata file which describes the action, and its inputs.
  • A script file which implements the action logic

As noted above, an action script can be written in an arbitrary programming language, as long as it follows these conventions:

  • Script should exit with 0 status code on success and non-zero on error (e.g. 1)
  • All log messages should be printed to standard error
| improve this answer | |
  • 1
    Thanks! I'll check it out! – rober710 Dec 6 '19 at 18:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.