Answers: <p>I have found <a href="https://stackstorm.com/" rel="nofollow noreferrer">StackStorm</a> to be the most fully-featured ChatOps product.</p>
  <p>It satisfies your requirements:</p>
  <ul>
  <li>Authz, RBAC, ACL ✔</li>
  <li>Extensible in Python ✔</li>
  </ul>
  <p>See below.</p>
  <hr />
  <p>StackStorm is marketed as a</p>
  <blockquote>
  <p>Robust If This, Then That Platform</p>
  </blockquote>
  <p>(but for DevOps)</p>
  <p>StackStorm consists of a few components, beyond it's chatops capability:</p>
  <blockquote>
  <ul>
  <li><p>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.</p>
  </li>
  <li><p>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.</p>
  </li>
  <li><p>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.</p>
  </li>
  <li><p>Rules:
  Rules map triggers to actions (or to workflows), applying matching criteria and mapping trigger payload to action inputs.</p>
  </li>
  <li><p>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.</p>
  </li>
  <li><p>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.</p>
  </li>
  </ul>
  </blockquote>
  <p>StackStorm's <a href="https://docs.stackstorm.com/chatops/chatops.html" rel="nofollow noreferrer">ChatOps</a> is built into it's other components:</p>
  <blockquote>
  <p>ChatOps leverages two components within StackStorm in order to provide a fluid user experience. These subsystems are the <strong>Action Aliases</strong> and <strong>Notifications</strong> subsystems. You can learn more about each of these individual components in their corresponding sub-sections.</p>
  </blockquote>
  <p>but you can also use your own:</p>
  <blockquote>
  <p>If you already have a Hubot instance, you’ll need the hubot-stackstorm module installed and the following environment variables set up:</p>
  </blockquote>
  <p><a href="https://docs.stackstorm.com/authentication.html" rel="nofollow noreferrer">Authentication</a> can be done by StackStorm itself, or delegated to a proxy authentication system:</p>
  <blockquote>
  <p>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.</p>
  </blockquote>
  <p>It also supports <a href="https://docs.stackstorm.com/authentication.html#api-keys" rel="nofollow noreferrer">API keys</a>.</p>
  <p>As for RBAC, they <a href="https://docs.stackstorm.com/rbac.html#role-based-access-control" rel="nofollow noreferrer">claim that it is supported in their &quot;Extreme Workflow Composer&quot;</a></p>
  <blockquote>
  <p>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.</p>
  </blockquote>
  <p>More at <a href="https://docs.stackstorm.com/install/ewc.html" rel="nofollow noreferrer">https://docs.stackstorm.com/install/ewc.html</a></p>
  <p>StackStorm has &quot;packs&quot; which are predefined workflows, similar to IFTT or Zapier, which are sets of triggers, rules and actions. You can <a href="https://docs.stackstorm.com/actions.html#writing-custom-actions" rel="nofollow noreferrer">extend it with your own actions</a>:</p>
  <blockquote>
  <p>An action is composed of two parts:</p>
  <ul>
  <li>A YAML metadata file which describes the action, and its inputs.</li>
  <li>A script file which implements the action logic</li>
  </ul>
  <p>As noted above, an action script can be written in an arbitrary programming language, as long as it follows these conventions:</p>
  <ul>
  <li>Script should exit with 0 status code on success and non-zero on error (e.g. 1)</li>
  <li>All log messages should be printed to standard error</li>
  </ul>
  </blockquote>
  
Answers: CC BY-SA 4.0
Answers: 2019-12-06T18:08:28.350Z
Answers: Thanks! I'll check it out!
Answers: rober710
Answers: CC BY-SA 4.0
Answers: 2019-12-06T08:41:27.220Z
Answers: 2019-12-06T09:36:52.530Z
Answers: 2020-06-18T08:28:10.803Z
Answers: Bruce Becker
Body: <p>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 <a href="https://github.com/operable/cog" rel="nofollow noreferrer">cog</a> and <a href="https://errbot.readthedocs.io/en/latest/index.html" rel="nofollow noreferrer">Errbot</a>. 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.</p>
  
  <p>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.</p>
  
  <p>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:</p>
  
  <ul>
  <li>Has an ACL built in, similar to cog</li>
  <li>Able to be extended in any language (or at least its extensions can be implemented in Python/JavaScript).</li>
  </ul>
  
Comments: CC BY-SA 4.0
Comments: 2019-12-04T17:01:29.757Z
Comments: 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"
Comments: 030
Comments: CC BY-SA 4.0
Comments: 2019-12-05T07:45:09.430Z
Comments: "I've seen some alternatives" -- alternatives to what?
Comments: schaiba
Comments: CC BY-SA 4.0
Comments: 2019-12-05T17:21:54.717Z
Comments: @schaiba some chatbot alternatives to cog. I really like the architecture of it, but it's a bummer it's no longer maintained.
Comments: rober710
Tags: <chatops>
Title: What are good options to implement a devops chatbot for Slack?
UserDisplayName: rober710
ThreadText: # What are good options to implement a devops chatbot for Slack?
  
  (Asked by: username_0 on 2019-12-04)
  
  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](https://github.com/operable/cog) and [Errbot](https://errbot.readthedocs.io/en/latest/index.html). 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).
  
  **Tags:** chatops
  
  > **Comments:**
  > **username_1**: 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"  
  > **username_2**: "I've seen some alternatives" -- alternatives to what?  
  > **username_0**: @username_2 some chatbot alternatives to cog. I really like the architecture of it, but it's a bummer it's no longer maintained.  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_3 on 2019-12-06. Score: 1
  
  I have found [StackStorm](https://stackstorm.com/) 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](https://docs.stackstorm.com/chatops/chatops.html) 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](https://docs.stackstorm.com/authentication.html) 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](https://docs.stackstorm.com/authentication.html#api-keys).
  
  As for RBAC, they [claim that it is supported in their "Extreme Workflow Composer"](https://docs.stackstorm.com/rbac.html#role-based-access-control)
  
  > 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](https://docs.stackstorm.com/actions.html#writing-custom-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
  
  > **Comments:**
  > **username_0**: Thanks! I'll check it out!  
  
  ---
  
  