This is more a workstation question than server itself, but I believe is best suited in this site:

I want to automate Windows 10 Pro workstation configuration settings. I want to be able to automate installation of several tools into windows machines, without having to manually do that in each of them. I want an unattended process, which can take all day as long as I don't have to be present looking at it.

I want to be able to install stuff such as:

Visual Studio
Android Studio

And other work related tools.

I have heard and read about Ansible, Puppet, Chef, Salt, and they seem to be exactly what I need, but I have never used such tools. I use docker on a daily basis, but it is not for what I am looking for.

I have also seen other tools such as Ninite and SilentInstall.

I am looking for something preferrably open source, or at least with some free tier I can use. It would be good to have a web gui to manage things centrally although I would prefer something free and have that as a possible upgrade in the future as the number of workstations grow.

I don't use AD (at least currently), so I would prefer something that would allow me to connect to the machines and have them running things from a remote location, or even plugging in a USB device to configure.

Onsite presence is not a problem, but the more flexible the better.

What should I be using? Any suggestions or limitations on the abovementioned products? Or am I looking at the wrong toolset, and should be using something else for these tasks?

  • 1
    I would ask any downvoter to at least provide some hint on how he feels the question should be improved. Downvoting without any additional information helps no one. Nov 13, 2018 at 16:08
  • 1
    "Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise."
    – Davidw
    Nov 13, 2018 at 18:10
  • @Davidw I am not sure if the tools I mentioned above all allow for what I need. So a simple Ansible can, Chef can't is not opinion based. I understand people might share their own personal experience if they've used many, but that is an added bonus :) Nov 14, 2018 at 16:31
  • This question is not the sort of question we can help you with, it's too much opinion based, and it's something that only your organization can determine what is appropriate for your organization.
    – Davidw
    Nov 14, 2018 at 22:29

1 Answer 1


I don't have enough reputation to ask for clarification, so I am going to assume two things.

I don't use AD (at least currently), so I would prefer something that would allow me to connect to the machines and have them running things from a remote location, or even plugging in a USB device to configure.

I am not sure what qualifies as 'running things'. You don't mention an operating system for the workstations, although you do mention Active Directory. If my below assumptions are incorrect, let me know and I will see if I can modify the answer to fit.

Assumption 1

You would settle for a solution that allows you to plug in a USB device to the workstation and execute a file to deploy your 'configuration'. If this same process can be done remotely, that is even better.

Assumption 2

You need to support multiple different operating systems, including some variant of Windows, MacOS X and Linux.

Edit: I can see that you mention Windows multiple times, I do not know how I missed that. I do mention Windows support in my comparisons below, so I believe they are still relevant.

You're asking multiple questions, and I can't answer them all, so I will split them up and answer them individually as well as I can.

What should I be using?

This is a very subjective question that I can't answer.

Or am I looking at the wrong toolset, and should be using something else for these tasks?

I believe you're looking at the right toolsets.

Any suggestions or limitations on the abovementioned products? (Ansible, Puppet, Chef and Salt)

I only have experience with Puppet. I have heard of the others, but I don't know them very well. I will go through them one by one and compare them as well as I can to Puppet, using external sources.


The open source version of Puppet does pretty much just what you're asking for, once installed on the workstation, you can remotely change configuration (you can also apply a single manifest locally, from a USB device for example).

The puppet agent on the workstation will contact a remote server at defined intervals to download a 'manifest' that defines the desired state of a list of resources, this can include software packages, configuration files, printers etc.

Along with Puppet comes 'puppetdb', a database that stores 'facts' about the workstations. You can write your own custom facts, but this is things like the hostname, IP address, what CPU it has and so on.

There are plenty of free 'modules' of high quality available for Puppet from what is known as Puppet Forge.

This is pretty much what Puppet does, nothing less and nothing more.


To my knowledge, Ansible does pretty much everything Puppet does, in a supposedly slightly simpler manner - in addition to this it also focuses on provisioning and deployment, these features I don't really know about.

Like Puppet, Ansible also has a great source of modules available to download for free from Ansible Galaxy. Supposedly the modules aren't as great as the ones available for Puppet, but they are still great.

Source: https://www.devopsgroup.com/2018/01/10/puppet-vs-ansible/

Technically it doesn't support Windows, but it should be easy to set up anyway: http://www.oznetnerd.com/installing-ansible-windows/


Supposedly Chef compares much more directly to Puppet, although it is more focused on the cloud than Puppet is. Chef is supposedly the more 'advanced' of the two, where Puppet is the more simple one. Puppet supports a broader range of operating systems, while Chef has a very extensive API.

Source (which also includes a nice matrix for comparisson): http://www.cyberphoton.com/questions/question/what-is-the-difference-between-chef-and-puppet-in-configuration-management-software


This one seems to be the least used of the four, and I haven't been able to find a very good comparison to Puppet. It seems much more comparible to Ansible than Salt. It supposedly scales better than the other three, but while it does support Windows, it is not too happy with it.

Source: https://www.computerworld.com/article/2486206/virtualization/puppet-vs--chef-vs--ansible-vs--salt.html

Other comparissons of the four:

https://www.reddit.com/r/linuxadmin/comments/9ljveg/puppet_vs_salt_vs_chef_vs_ansible_which_to_choose/ https://www.intigua.com/blog/puppet-vs.-chef-vs.-ansible-vs.-saltstack

  • Tobias thank you very much for that comparison :) I mentioned windows several times, but not the version. workstations are windows 10 pro. I will give puppet a try Nov 14, 2018 at 15:42
  • If you get into Puppet and decide to start using it, I suggest you top it off with a dashboard, something like Foreman (there are other dashboards too). Foreman calls itself a 'complete lifecycle management tool' so it does cover many more features than the ones provided by Puppet, but it can be used just for managing Puppet things.
    – Tobias
    Nov 14, 2018 at 16:57
  • Since your target is Windows, I suggest you check out this page as well: puppet.com/docs/puppet/5.0/resources_windows_optional.html
    – Tobias
    Nov 14, 2018 at 16:59

Not the answer you're looking for? Browse other questions tagged .