Saltstack is a great automation software written in Python and promoting state-based configuration of the system. It is an alternative to Chef and Puppet. Saltstack requires a person to write YAML configuration files that describe some state of the system, for example a file, a package installed or a service running.
Here is an example of the state called general that makes Saltstack to install a set of required packages.
general:
pkg.installed:
- pkgs:
- tzdata
- util-linux
- git-core
- mc
- vim
- rsync
- zsh
- wireless-tools
- wpasupplicant
- openssh-server
- openssh-client
- apt
- binutils
- build-essential
- locales
- localepurge
- make
- login
- nano
It is possible to use templating language in the configuration files to customize them. The default rendering system is Jinja2. Other renderers available are Mako or Wempy. Finally it is possible to extend the software by writing plugins in Python. Saltstack has evolved gradually for the past 9 month. Basic Windows support has been implemented. All of these makes it the powerful solution allowing to automate deployment and configuration scenarios. It would be useful to mention Salty Vagrant project which integrates Saltstack with powerful virtual machine management tool Vagrant.
I've been experimenting with Vagrant and Saltstack to develop recipes capable to configure Debian Wheeze server for home usage. The following services are installed and configured:
Here is the repository.
PHP web developer, python developer