DevOps and Infrastructure Automation on Windows and beyond.

06 Aug 2018

Installing Microsoft SQL Server using Ansible

Depending on how your development and test environments are managed, installing Microsoft SQL Server may be a common task, or at least a complex task for a Windows Administrator. Ansible can provide a way to make this task consistant and repeatable. Using the excellent package of DBATools ( we can even use Ansible to execute complex configuration steps. I have posted the role developed in this guide to Ansible Galaxy for ease of reuse. However, this guide will cover indepth the individual steps and how they operate.

29 Jan 2018

Using Ansible to install a Chocolatey Package Repository

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,,, 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.

18 Jan 2018

Fixing Windows Subsystem for Linux (WSL) name resolution errors with VPN

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).

03 Jan 2018

Configure an Ansible testing system on Windows (Part 3)

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 domain controller and create a basic member file server to the domain.