I would start simple, and get a demo setup soon enough. Maybe a training even.
I haven’t looked into Chef and SaltStack myself, they call off the plate now.
I would either start with Puppet or Ansible, and a simple task. Install a webserver.
Things to keep in mind:
- Ansible uses YAML as descriptive language and models the setup based on that
- Puppet provides its own DSL and allows to model the setup and dependencies
forge.puppet.com is a rich source for well tested modules. They are also providing official modules, like puppetlabs-apache serving a nice job, and allowing to easily setup a webserver within 20 lines of code.
Ansible on the other hand doesn’t have many “generlized” modules, you will build many of them on your own. Ansible Galaxy has lots of examples, some might fit your needs, some might not.
Generally speaking, if you are really a starter, you don’t care about ready-to-use modules. You start with the basics of e.g. managing a user, installing a service and deploying a configuration file.
Then you’ll dive into the differences with Puppet (Master and Agent) and Ansible (deployment via SSH).
In the end, choose the one where you’ll find yourself familiar with, where the answers to your questions were easy to find, and you’ll see community actions.
Still, it doesn’t hurt to get a hands-on training/workshop, as these tools are hard to learn just from a book. Speaking of myself, I’ve had “some” knowledge of Puppet by copying other’s code, and then I’ve attended all three trainings (fundamentals, advanced, infrastructure and scaling) which allows me to use Puppet in the best way there is.
On a long run, I would also suggest to look into lifecycle management with Foreman too, which integrates well with Puppet and Ansible. Foreman is backed by RedHat, who also invest a lot into Ansible.