Fri, 03 Jan 2014 by Bolshevik in General | Comments

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:

  • usbautomount
  • acpid (custom script for cubieboard based installation)
  • logrotate
  • users
  • nginx shares
  • samba shares
  • transmission
  • proftpd
  • mediacenter (minidlna)
  • ajaxplorer
  • clamav
  • pxe boot server
  • backups via duplicity
  • iscsi target via tgtd

Here is the repository.

Comments

comments powered by Disqus

About

PHP web developer, python developer