-1

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:

Pycharm
Visual Studio
Notepad++
Android Studio
Docker
Sublime
Netbeans
Firefox
Chrome

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 Answers1

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.

Puppet

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.

Ansible

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/

Chef

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

Salt

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
  • 86