This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

A Charlesbot plugin that integrates with Rundeck!

How does this work

This plugin adds the following !help targets:

!lock status - Prints the status of the Rundeck deployment lock
!lock acquire - Acquires the Rundeck deployment lock (only available to Slack admins)
!lock release - Releases the Rundeck deployment lock (only available to Slack admins)

The !lock commands are designed to give folks the ability to quickly and efficiently disable (or enable) individual Rundeck jobs. This is very useful when troubleshooting a production issue where you don’t want additional deployments going out and adding fuel to the fire.

Installation

pip install charlesbot-rundeck

Instructions for how to run Charlesbot are over at https://www.charlesbot.org/docs/installation.html.

Configuration

In your Charlesbot config.yaml, enable this plugin by adding the following entry to the main section:

main:
  enabled_plugins:
    - 'charlesbot_rundeck.rundeck.Rundeck'

Create a rundeck section that looks something similar to:

rundeck:
  token: 'XXXX'  # Rundeck token
  url: 'http://my.rundeck.test:4440'  # Rundeck base URL

  # If you would like to set this channel's topic to something relevant
  # whenever Rundeck jobs are locked, set this value. Otherwise you can omit
  # it completely.
  deployment_status_channel: 'charlesbot-rundeck-test-channel'

  # project: project name
  # name: job name
  # friendly_name: friendly display name
  lock_jobs:
    - project: 'test-project'
      name: 'deploy-website'
      friendly_name: 'deploy website'
    - project: 'test-project'
      name: 'deploy-app'
      friendly_name: 'deploy app'

Rundeck ACL Policy

Make sure you have a apitoken.aclpolicy file that looks something like:

description: API project level access control
context:
  project: '.*' # all projects
for:
  # ...
  job:
    - allow: '*'
  # ...
by:
  group: api_token_group

You essentially need to give the api_token_group the ability to enable and disable executions for all jobs in all projects (more details)

Notes

Rundeck 2.6.2 introduces the ability to enable or disable passive mode programatically using the system/executions endpoint. This endpoint unfortunately did not work for this use-case because it disables all Rundeck job executions. This plugin is more geared towards folks who would rather disable individual job executions.

Development

At a very minimum, you’ll need Python 3.4.3, a functional Docker environment, and a Slack bot token to get going. I highly recommend you read the Charlesbot docs to get an idea of how this all fits together.

Create a local development.yaml file that looks something like the following.

main:
  slackbot_token: 'xoxb-...'
  enabled_plugins:
    - 'charlesbot_rundeck.rundeck.Rundeck'

rundeck:
  token: 'baiY8aw4Ieng0aQuoo'
  url: 'http://my.rundeck.test:4440'
  deployment_status_channel: 'charlesbot-rundeck-test-channel'
  lock_jobs:
    - project: 'test-project'
      name: 'deploy-website'
      friendly_name: 'deploy website'
    - project: 'test-project'
      name: 'deploy-app'
      friendly_name: 'deploy app'

Add the following entry to your /etc/hosts file.

172.17.0.1 my.rundeck.test

Start up a local Rundeck Docker instance.

make rundeck-server

After your Rundeck instance is up and running, seed it with some sample project/job data.

make rundeck-server-bootstrap

After you have all of this in place, you should be ready to spin up your local Charlesbot instance!

make run

License

See the LICENSE.txt file for license rights and limitations (MIT).

Release History

Release History

0.2.2

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
charlesbot-rundeck-0.2.2.tar.gz (6.6 kB) Copy SHA256 Checksum SHA256 Source Dec 19, 2015

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting