One year ago I started to use SaltStack. I have experience using Puppet for a long time, but a client was using Salt so I had to learn it. After a year using it, this is why it’s my preferred automation tool:
- Simple syntax, you define the state of your servers, files, pkgs, whatever using YAML files.
- You can apply your recipes on demand. You run a command and all the changes are applied at the moment. You don’t need to wait for polling.
- Integrated remote execution. It’s in the core, you need anything external.
- Cloud support. Salt cloud it’s part of the core right now. You set your credentials, you tell how many instances you want and salt-cloud will launch them, it will connect with the salt master automatically. Again, you don’t need anything from outside cloud.
- Flexibility, it’s really flexible. You can code custom modules in Python easily to customize everything according to your needs.
- Orchestration thanks to overstate. Overstate allows you to apply recipes in your server in a specific order. For example, database servers first, then app servers.
- The project is young, but it’s growing and growing. The number of bug reports, features requests and the fixes and enhancements on every version are impressive.
There are more reasons that I’m missing for sure.
You can see an example of something done using Salt here. It’s an example of a MongoDB cluster managed by Mongo. Let me know if you have questions about it.