A Pinch of Salt by Scott Walton

Scott Walton gave a talk about how they use Salt, at their company Pebble.

Slides can be found here: https://docs.google.com/presentation/d/1q82GUdE-zHUlTSYJxkIdW79CcewO3-KXuBwPe9ir_aA/edit#slide=id.p

Salt is a remote config management tool, similar to: Ansible, Puppet, Chef. It seems from talks with others at PyConUK Ansible and Salt were being described more favourably than Puppet and Chef.  Either due to their complexity or through battle testing and reaching their limitations.

Salt terminology

  • Master
  • Minion
  • Grain – data on a minion – like an attribute, how much memory (-G)
  • Pillar – data about a set of a minion, e.g. stage of server
  • Matching – rules to identify minions
  • Modules – commands
  • State – end result

Pebble use Salt to manage a complex system, finance, web servers, databases, load balancing, managing various environments – test, stage, prod etc.

Their journey was via fabric

Implemented in Python

Zero MQ, encrypted secure connections are used

Used apt-get vs pip to install – as in his opinion, it included a flaky dependency

Can add watches for changes to take actions, e.g. if web server config file changes, restart the web server

Can use Jinga in config files pillar (and grain) are available in these templates

Salt can take fall back actions for common features, e.g. running git clone or git pull depending upon whether the repo exists.

– started using 2 years ago

Comparisons:

– chef & puppet looked more complicated
– salt looked for familiar
– friendly community
– easy to get involved in the code
– can easily contribute back pull requests
– documentation has gotten better
– includes very simple state
– reference is very good
– e.g. ‘return as’ is not as well documented as yet

Easy to configure

can command Less files TBC
If not built in, can just run bash commands e.g. could run a Django migration