SaltStack is an open source configuration management and orchestration tool. It allows users to provision, deploy, and manage infrastructure and applications across multiple cloud and virtual systems. SaltStack uses a master-minion architecture with a master server to control and manage minions (agent servers). Key features include remote execution, configuration management, orchestration abilities, and a communication bus to manage infrastructure at scale.
4. The Good Companions
Configuration management (CM) is a
field of management that focuses on
establishing and maintaining consistency of a
system. (Wikipedia)
Design your infrastructure
Systems integrity and consistency
Provision and automate
Create proper processes
Cloud Management
Version Control
Automations and Remote Execution
Monitoring, Alerting, Logging
10. So, SaltStack?
Saltstack delivers a dynamic infrastructure
communication bus used for orchestration,
remote execution, configuration management.
+ Python, YAML, Jinja2, ZeroMQ
+ Event driven
+ Master-agent, Masterless (ssh)
+ Multimaster for HA
+ Cloud/VM/Containers support
+ Orchestration
+ Reactors
+ Runners
+ Guaranteed execution order
11. So, SaltStack?
Saltstack delivers a dynamic infrastructure
communication bus used for orchestration,
remote execution, configuration management.
- Relatively young project
- Changes rapidly
- Its documentation is… challenging
- Needs some Python background
- Needs design background
- If your saltmaster is compromised, LOL
12. Terminology
Master and Minion
The Master controls its Minions :p
State Modules
Code needed to enforce, set up or change the
configuration of a target system
Pillars
Custom data essential for state execution (e.g.
user accounts, lists of virtual hosts etc.)
Grains
Static minion information
SLS Files (.sls)
Text files containing list of states to execute or,
simply pillar data
14. Architecture
• Master-Minion Persistent TCP
connection
• Two listening ports on Master
(4505,4506)
• No listening ports on Minions (yey)
• ZeroMQ to send/recv messages
• Encrypted transport (+custom protocol)
• Minions wait for jobs from a remote
Master
• Minions return job results back to Master
25. Do not Forget
• You need some python and some coding
skills
• Use a quick solution when requirements are
unknown/not clear
• Refactor when possible
• Try to make reusable states, don’t repeat
yourself (DRY)
• Try to not over engineer (resist the
temptation)
• Always write documentation
• Be patient, this is NOT easy
• Keep your #YOLO moments to a minimum
26. Sources - Useful Links
• Images from The World’s End (2013) and edgarwright @ flickr.com
• https://docs.saltstack.com/
• https://github.com/saltstack-formulas
• https://github.com/ministryofjustice/salt-shaker
• https://github.com/harkx/saltstack-cheatsheet
• https://www.digitalocean.com/community/tutorials/an-introduction-to-saltstack-
terminology-and-concepts
• http://bencane.com/2013/09/03/getting-started-with-saltstack-by-example-automatically-
installing-nginx/
• http://leonardinius.galeoconsulting.com/2014/08/devops-101-on-saltstack-example/
• https://puppet.com/blog/how-to-choose-right-tools-processes-for-devops
• How sysadmins devalue themselves - https://queue.acm.org/detail.cfm?id=2891413
• and of course, https://en.wikipedia.org
Thanks to: kargig, kyriakos and andrew for their comments and feedback