Quote:
Originally Posted by Jason.nix
Do you have experience working with Ansible, Puppet, Chef and Webmin? Which one offers better features?
|
Webmin is a GUI tool to manage a single server via web interface. It has modules for many popular daemons like apache etc and various system tools. It does not have modules for all less popular daemons, eg. DMSMasq. I've used it in the past for managing single servers mostly because I needed to allow less experienced users to create accounts on the server or be able to make some config changes. It does seem to have some clustering features which I believe allow it to manage more than one machine, but have not used that. Webmin is fairly easy to start working with.
Ansible, Puppet, Chef and CFEngine3 - the one I use most - are somewhat different. They use declarative language to manage multiple servers across distributed network. They are meant to automate server setup and configuration changes. However there is a steep learning curve as you need to hand code your setup which is not easy with no experience with a specific tool.
With my CFEngine3 so called promises I'm able to set up one or more servers ( eg. web servers ) fully functional and ready for production in no time - time it takes to download all required packages and customize configs which is fully unattended. I just add a server to specific classes (groups) and wait. I can also be sure that servers are configured the same way and I have not forgotten something. However writing the code that does it takes more time than setting up a single server manually so it only makes sense if you have a number of similar servers. Say you have a 100 servers and you need to update SSL certificate on all of them - with CFEngine you simple upload the cert to the main so called Policy Host and wait for your servers to pick up the change. Without it you would probably spend days logging in to each server, uploading cert and restarting services and these is a chance of forgetting a few leaving them unchanged.
Ansible, Puppet and Chef can pretty much do the same thing, you can code any configuration you want as long as you know how to configure your services. CFEngine, Puppet and Chef use local agents on a server to pull configs from master, Ansible is agentless it pushes configuration to servers. Out of the 4 Ansimble is probably easiest to learn as it uses YAML language.
However if you don't manage multiple servers it's probably not worth to spend time learning.