Simple Windows+Linux server provisioning? Chef/Puppet/Ansible etc [closed]

I'm primarily a developer, part time devops; and manage servers here and there for my projects.

  • I want to automate provisioning of web/app/database servers going forward for my projects
  • I manage a mixture of both Windows and Linux servers (VPS, cloud and dedicated)

I've looked at investigated Chef/Puppet/Ansible briefly; and I am wanting to find something that:

  • Is easy to learn and understand. I don't want to invest weeks into understanding a complicated piece of tech.
  • Ideally does not require a server ("master server") to hold the configurations
  • Supports provisioning of Windows and Linux servers
  • Comes with suitable documentation to get started

Does anyone have any advice on what tool is best suited?

Thanks


I have almost the exact same requirements as you and I did a lot of research into this topic. You can definitely use Puppet/Chef but the learning curve is high. Also, very few recipes for Puppet/Chef I've seen actually fully support Windows so expect having to write your own for Windows that would otherwise be available for Linux.

For Linux management, Ansible will fulfill all your needs. It's extremely easy to use, install, and doesn't require a central server. I have had success using Ansible with Windows by installing Cygwin with OpenSSH. You could automate the Cygwin install and configuration w/ some simple batch/PS scripts in order to bootstrap your server. You then will be able to use Ansible with it as long as it's running Python from the Cygwin install. Windows isn't really supported on Ansible and there may bugs of course but I've been able to use it successfully. If you are a dev, it's even fairly easy to understand Ansible's source code incase you have any issues. The devs are also super responsive when it comes to bugs. I submitted a bug I found related to paths and it was fixed in a day. You will definitely come across some issues in Windows but I think at the end of the day it's still easier assuming you don't have the time and money to invest in Chef/Puppet.

Edit: It looks like SaltStack now has support for Windows. It seems to work with YAML files which is similar to Ansible. Definitely worth checking out now for Windows.


I have used both Puppet and Chef (sorry, no ansible). I can tell you with confidence that Puppet will fulfill the requirements you have listed above.

  • It is easy to learn. You can pick up the basics in a day or two. Start at puppet's documentation
  • Puppet can run in master/server as well as stand alone. Take your pick.
  • Puppet can handle both Linux and windows as per the docs. I haven't tried it on windows personally.
  • Documentation for puppet is really great. Also books like Pulling Strings with Puppet by James Turnbull helps you to understand puppet right from very basics to advanced stuff like load balancing etc.

I have used puppet to handle both physical servers as well as cloud deploys (AWS) and it is quite easy and reliable.