DebOps - Your Debian-based data center in a box
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
ansible [debops.netbase] Ensure POSIX capabilities support Nov 20, 2018
bin Add explicit --decrypt command to padlock-init Nov 15, 2018
debops debops-padlock script OS X compatibility Apr 13, 2018
docs [debops.netbase] Support hostname/domain config Nov 20, 2018
lib [ci] Turn off Ansible pipelining during tests Nov 15, 2018
tests Redesign Python packaging for 'debops-tools' Jan 25, 2018
.dockerignore Fix Python package version information Jan 29, 2018
.gitignore Fix Python package version information Jan 29, 2018
.gitlab-ci.yml Add new role, 'debops.dhcp_probe' Oct 16, 2018
.mailmap Update the .mailmap file Aug 2, 2018
.travis.yml [ci] Reorganize Travis-CI test suite Jul 19, 2018
.yamllint [yamllint] Allow multiple spaces after a comma Nov 12, 2017
CHANGELOG.rst [debops.netbase] Support hostname/domain config Nov 20, 2018
CODEOWNERS Add the 'CODEOWNERS' file Dec 1, 2017
CONTRIBUTING.rst typo fixes Dec 19, 2017
DEVELOPMENT.rst Small fixes in the documentation Nov 4, 2017
Dockerfile Add 'future' Python module as DebOps dependency Jul 16, 2018
INSTALL.rst Add 'future' Python module as DebOps dependency Jul 16, 2018
LICENSE Fix for GitHub to correctly display license Nov 24, 2017 Fix Python package version information Jan 29, 2018
Makefile Enable 'shellcheck' tests on Travis-CI Mar 6, 2018
PKGBUILD Prepare v0.8.0 release Aug 6, 2018 Update Getting Started URL in the README file May 20, 2018
Vagrantfile convert string to integer to use in loop Nov 19, 2018
roles Add 'ansible/roles/' -> 'roles/' symlink May 26, 2018
setup.cfg Add 'sdist' and 'wheel' targets in the Makefile Jan 27, 2018 Add 'future' Python module as DebOps dependency Jul 16, 2018

DebOps logo DebOps

Your Debian-based data center in a box

Travis CI GitLab CI CII Best Practices RSS commits

The DebOps project provides a set of general-purpose Ansible roles that can be used to manage Debian or Ubuntu hosts. In addition, a default set of Ansible playbooks can be used to apply the provided roles in a controlled way, using Ansible inventory groups.

The roles are written with a high customization in mind, which can be done using Ansible inventory. This way the role and playbook code can be shared between multiple environments, with different configuration in to each one.

Services can be managed on a single host, or spread between multiple hosts. DebOps provides support for different SQL and NoSQL databases, web servers, programming languages and specialized applications useful in a data center environment or in a cluster. The project can also be used to deploy virtualization environments using KVM/libvirt, Docker or LXC technologies to manage virtual machines and/or containers.

You can find out more about DebOps features on the project's documentation page.

Quick start

Start a Docker container which acts as an Ansible Controller host with DebOps support, based on Debian Stretch:

docker run -it --rm debops/debops

Or, create a Vagrant VM which acts as an Ansible Controller host:

git clone
cd debops && vagrant up && vagrant ssh

You can use configuration in the src/controller subdirectory to try out DebOps against the container/VM, or create your own DebOps project directory using debops-init command.

More quick start tips can be found in the DebOps quick start guide.


DebOps requires a Python 2.7 environment and Ansible 2.4+ to work correctly. You can read the installation instructions in the DebOps documentation.

Getting started

Ansible uses SSH to connect to and manage the hosts. DebOps enforces the SSH security by disabling password authentication, therefore using SSH keys to connect to the hosts is strongly recommended. This can be changed using the inventory variables.

During initial deployments you might find that the firewall created by DebOps blocked you from accessing the hosts. Because of that it's advisable to have an out-of-band console access to the host which can be used to login and troubleshoot the connection.

Create a new environment within a DebOps "project directory", add some hosts in the Ansible inventory and run the default DebOps playbook against them to configure them:

# Create a new environment
debops-init ~/src/projects/my-environment
cd ~/src/projects/my-environment

# Modify the 'ansible/inventory/hosts' file to suit your needs, for example
# uncomment the local host to configure it with DebOps

# Run the full playbook against all hosts in the inventory

# Run the common playbook against specific host in the inventory
debops common -l <hostname>

You should read the Getting Started with DebOps guide for a more in-depth explanation of how the project can be used to manage multiple hosts via Ansible.


Create a fork of this repository and clone it to your workstation. Create a development DebOps environment and symlink the forked repository in it. Now you can create new playbooks/roles in the forked repository and see their results in the development environment.

git clone<username>/debops ~/src/<username>/debops
cd ~/src/<username>/debops
git remote add upstream

debops-init ~/src/projects/debops-devel
cd ~/src/projects/debops-devel
ln -s ~/src/<username>/debops debops

You can pull latest changes to the project from the upstream repository:

cd ~/src/<username>/debops
git checkout master
git fetch upstream
git rebase upstream/master

Read the development guide file for more details about the DebOps development process.


DebOps development is done via a distributed development model. New features and changes are prepared in a fork of the official repository and are published to the original repository via GitHub pull requests. PRs are reviewed by the DebOps developer team and if accepted, are merged in the main repository.

GPG-signed git commits are preferred to ensure authenticity.

Read the contributing guide file for more details about how to contribute to DebOps.


The DebOps project is licensed under the GNU General Public License 3.0. You can find full text of the license in the LICENSE file.