Skip to content
Manage your personal Unix machine(s) with Ansible (aka boxen but for Ansible).
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Remove unnecessary concept of run modes Dec 29, 2017
sheepdoge Release 0.2.1 Feb 4, 2019
.gitignore Generate sha256 for sheepdoge.par May 3, 2018
BUILD.bazel Add bazel and pip-compile May 1, 2018
LICENSE Add description of Sheepdog's benefits Jul 10, 2017
Makefile Generate sha256 for sheepdoge.par May 3, 2018
WORKSPACE Add bazel and pip-compile May 1, 2018 Pin mypy < 0.600 May 3, 2018 Release 0.2.1 Feb 4, 2019 Generate sha256 for sheepdoge.par May 3, 2018


Build Status

Manage your personal Unix machine(s) with Ansible (aka boxen but for Ansible).

With sheepdoge, provisioning a personal Unix machine can be as easy as:

$ sheepdoge install && sheepdoge run

For more info on how sheepdoge works, read on. If you want to get your hands dirty with sheepdoge asap, check out sheepdoge up and running.

How it works

sheepdoge has three main components:

The kennel describes the overall state you desire for your machine. Think of a kennel like a simple Ansible playbook that conforms to certain guidelines.

A pup ensures your machine obtains and maintains a given state. Think of a pup like an Ansible role that conforms to certain guidelines. Your personal kennel can consist not only of pups you've created, but also pups created by other sheepdoge community members.

sheepdoge is the command line tool which ties everything together.


sheepdoge manages the messy corners of using Ansible to manage multiple personal workstations. It provides the following benefits:

  1. Opinionated design: sheepdoge specifies a number of guidelines for pups and kennels, to ensure everything works together nicely.
  2. Change once, run everywhere: If you have multiple machines, sheepdoge prevents configuration drift by regularly running the most recent version of your kennel on all of your machines.
  3. Get up and going immediately: Say your hard drive becomes corrupt, so you buy a new computer. Run sheepdoge install && sheepdoge run, and you're new machine is ready to go!
  4. Secret management: Secret management across multiple machines is a pain. It often leads to a lot of copy and paste or manually sending secrets unencrypted from machine to machine. sheepdoge makes it easy.
  5. Dependency management: Need a specific python package or ansible role in support of your pup? sheepdoge handles installation.


sheepdoge depends on git, python, and ansible. You can install it either by running:

pip install sheepdoge

or by downloading the .par file from the latest release. Note, that sheepdoge presumes you've installed ansible correctly. You can do so with pip install ansible, or using your operating system specific install mechanism (i.e. apt install ansible).

Note, sheepdoge is only tested on python3. It may work on python2, but we do not test for this. If python2 support is important to you, I'm happy to work together on a PR :)

Writing your first kennel

Check out Creating your first kennel for step by step instructions on creating your first kennel.

Writing your first pup

Check out Creating your first pup for step by step instructions to creating your first pup.


We appreciate and encourage any contributions to sheepdoge 🐶 Please open an issue or pull request. It doesn't have to be a huge feature - documentation fixes/improvements, added test coverage, and small refactorings for cleaner code are all great places to start :)

The Makefile defines common commands which are helpful during development. Please ensure you have docker, bazel, and pip-tools installed in your development environment.

Please ensure make check passes before creating a pr.


If you would like to contribute, and would like some help getting started, please email mattjmcnaughton [@]


sheepdoge is licensed under the Apache license.

You can’t perform that action at this time.