When many Windows administrators think of installing applications even very basic ones it's always... Next Next Next Finish. Ansible and configuration management tools like it don't work like this, they can't press Next. They require silent installers that run start to finish on their own. My recommendation for solving this problem on Windows is Chocolatey. It brings to Windows all the advantages of a Linux package manager like yum or apt-get and integrates well with Ansible through its win_chocolatey module that we used previously when setting up our test environment. Since Chocolatey is built on top of the NuGet infrastructure, that means we can install packages from Chocolatey.org, NuGet.org, MyGet.org, file shares, directories, custom feeds and from private feeds. In this guide, we'll be developing an Ansible role to install internal server we can use to deploy our own company-specific packages.
If you've used WSL on a system that connects to a corporate environment you may have experienced issues resolving host names, particularly for your internal network. Here's how to resolve that. The primary issue is the interaction between the DNS changes the VPN connection creates (switching to corporate internal DNS) and how WSL discovers DNS settings to populate /etc/resolv.conf is flawed, this is how I fixed it for my corporate VPN solution (GlobalProtect).
This is the final part of a three part series. In the first entry of this series we configured Vagrant and built our basic inventory for Ansible. We then used Ansible to create a common role with basic tasks that we need to complete on all hosts. Now we will create specialized playbooks to create both our CONTOSO.com domain controller and create a basic member file server to the domain.
In the first entry of this series we configured Vagrant and VirtualBox to deploy a pair of basic Windows 2012 R2 virtual machines. We built our basic inventory for Ansible and verified we could connect to our newly created virtual machines. Now we can get onto the real work - developing Ansible playbooks.