Terry : DevOps


What is DevOps?

DevOps >= Dev + Operations

Terms and Technologies

ProvisioningKickstart / Cobbler, spacewalker, FAI, OpenQRM, Vagrant + Provisioners (Chef Solo, Puppet, Ansible, Shell), Packer
Application DeploymentCapistrano (Ruby), Fabric (Python)
Configuration Managementcfengine, Puppet, Chef (Infra as Code), bcfg2, cdist, sunzi
Parallel (Distributed | Remote) Executionfunc, salt, MCollective, pssh, shmux, ansible

Configuration Management and Automation

Chef / Chef Solo - Infrastructure as Code


NOTE: cookbooks, recipes, knife (CLI tool), knife solo (github), kitchen (cookbooks repository), Berkshelf to manage cookbooks (like bundler for gems)...

Pupplet / Puppet (Masterless) + MCollective

Sunzi - Sunzi is the easiest server provisioning utility (shell scripts) designed for mere mortals. If Chef or Puppet is driving you nuts, try Sunzi!

Saltstack - Salt

Development / Production Environment


  • Vagrant + Chef Solo / Ansible / Shell / Puppet (master-less)
  • Veewee - Automate the building of Vagrant Base Boxes by creating definitions (shell scripts basically)

Packer - a tool for creating identical machine images for multiple platforms from a single source configuration

LXC - Linux Containers
  • Docker - LXC (Linux Container) Engine

CoreOS (Linux Kernel + systemd + LXC)

Continous Integration - CI

Jenkins (AKA Hudson)


Maven (Java)

Continous Deployment

  • Capistrano (Ruby)
  • Mina (Ruby)
  • Fabric (Python)

Workflow Automation


Automated Recovery

DRBD - Distributed Replicated Block Device

ZFS - Snapshots and Clones

Btrfs - Snapshots

Configure, Deploy, Ad Hoc Tasks, Parallel Execution

  • Ansible (Python)
    Configure, Deploy, Ad Hoc tasks.
  • Fabric
    Fabric is a Python (2.5 or higher) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks.
  • cdist (shell)
    Configuration management
  • Capistrano (Ruby)
    Capistrano is a utility and framework for executing commands in parallel on multiple remote machines, via SSH. It uses a simple DSL (borrowed in part from Rake) that allows you to define tasks, which may be applied to machines in certain roles. It also supports tunneling connections via some gateway machine to allow operations to be performed behind VPN's and firewalls. Capistrano was originally designed to simplify and automate deployment of web applications to distributed environments, and originally came bundled with a set of tasks designed for deploying Rails applications.
  • MCollective (core of Puppet's parallel / distributed remote execution)
  • Salt (Python)
    Distributed / Parallel remote execution, configuration management, scale like nothing else (thanks to ZeroMQ)
  • func (Fedora Unified Network Controller)

Source Code Management - SCM


  • Hosted services (SaaS): GitHub, BitBucket
  • Commercial solutions: github enterprise, Atlassian Stash
  • Free & Open Source solutions: GitLab (Ruby + Rails+ gitolite replaced by gitlab-shell since v5.0)

SVN / subversion

CVS (OLD school)

Source Code Browser / Search


Scripting Languages (polyglot)

Shell (Bash) - Advanced Bash Scripting Guide

Ruby => RubyGems, RVM, rbenv, Web Development Frameworks (Sinatra, Rails) is OPTIONAL

Python (2.7.x)

JavaScript / JSON / node.js

IaaS - Infrastructure as a Service

AWS (EC2), Rack Space, Linode, Digital Ocean (KVM)

PaaS - Platform as a Service

Heroku, Engine Yard, Cloud Foundry (VMware)

Private Cloud


Apache CloudStack


Popular tools

  • Monit
  • Monitorix
  • StatsD (node.js)
  • Graphite (with gdash or Diamond)
  • zabbix
  • Nagios
  • Cacti
  • Munin
  • Ganglia
  • MTRG



Application Performance Management - APM

New Relic

Server Density

Log Management

  • Graylog2
  • logstash
  • logster (generate metrics from log files)

Knowledge Management


Gollum (GitHub)

Issue Tracker





Discourse (Ruby on Rails)

Vanilla Forums (PHP)


DevOps Weekly

DevOps - Must Read list