This is a pretty opinion-specific question, so I'll give you mine, based on about 5+ years of working with config management.
The 3 most popular configuration management tools out there are Puppet, Chef and Ansible.
They all have distinct advantages and disadvantages:
- Ansible is driven entirely by SSH so I think is easiest to get off the ground and running with. No additional sofware has to be installed on the servers itself in it's most basic mode, just the ability to run SSH.
- Puppet has the greatest wealth of pre-existing modules for common server setup. I use a custom module to harden my SSH setup for all my servers that I wrote in Puppet several years ago, it still works like a charm.
- Chef I think is probably the most "flexible: If you need to do something specific you can just write the ruby code for it directly, rather than having to use a separate DSL.
Personally, I think Puppet is the best of the three (full disclosure, I worked at Puppet for 3 years so I might be biased!) but I've used all of them over the years, sometimes all at once!
All three are primarily designed for larger fleets of infrastructure, but all have a mode that works for smaller deployments like a personal server: Chef-Solo, Puppet-apply and Ansible-playbook.
Ultimately, its up to you which one you pick, or no config management at all.