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