Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

reddit's somewhat dumb code deploy tool.

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 etc
Octocat-spinner-32 push
Octocat-spinner-32 .gitignore
Octocat-spinner-32 LICENSE
Octocat-spinner-32 README.md
Octocat-spinner-32 setup.py Prompt the user for what to do if an error occurs on a host. March 08, 2013
README.md

Overview

Welcome to push tool, I love you!

Configuration

The tool will look for ini files in /etc/push.ini and ~/.push.ini. Options in the latter override those in the former. Most of them should probably be left the same by all users, but some (particularly the SSH configuration) could be useful to configure individually. See etc/push.ini.example for a complete example configuration.

Configuration is divided into a few sections:

defaults

Some basic defaults for CLI options that can be overridden in user-configs.

  • sleeptime -- duration to wait between hosts.
  • shuffle -- whether or not to shuffle the hostlist before deploy.

hosts

Configuration of where to source a list of host names and host up/down status.

  • source -- one of dns or mock.

hosts:dns

A DNS zone transfer is used to grab a list of all hosts that can be pushed to.

  • domain -- the domain to do a zone transfer from.

hosts:zookeeper

Pretty reddit-specific, but hostnames can be pulled from ZooKeeper. This additionally allows you to determine if the push commands failing on one host was because it was auto-scaled away.

  • connection_string -- the zookeeper connection string
  • username -- username to authenticate with (digest auth)
  • password -- password to authenticate with

hosts:mock

Mostly useful for testing. Generates a fake list of host names.

  • host_count -- number of hosts to generate

aliases

Aliases are mnemonics for a commonly used set of hosts to push to. You can directly specify hostnames as part of a group, glob them, or include other aliases within an alias.

[aliases]
apps = app-* job-*
dbs = pg-*
all = @apps @dbs

ssh

  • user -- the username to use when connecting to servers.
  • key_filename -- which key file to use for ssh connections.
  • strict_host_key_checking -- should ssh be strict about host keys? defaults to on.
  • timeout -- how long to wait before timing out, defaults to 30 seconds.

paths

  • log_root -- the directory to store push logs in.
  • wordlist -- where to find a list of words to choose push names from.

deploy

  • build_host -- which host to run build commands on.
  • deploy_binary -- the root command to execute for deploy-commands.
  • build_binary -- the root command to execute for build-commands.

syslog

Some basic notifications of deploys starting/ending are sent to syslog for tracking in external services.

  • ident -- the syslog ident to use for log messages. defaults to "deploy".
  • facility -- the syslog facility to use.
  • priority -- the syslog priority to use.

harold

Notification and status updates for deploys are sent to an IRC channel via our IRC bot Harold.

Configuration is done through Wessex's configuration file.

Future

Plans for the future include:

  • move from SSH to MCollective.
    • and better parallelization as a result
  • build a complete package on the build server to avoid Cython/i18n recompilation.
Something went wrong with that request. Please try again.