Published on

Puppet and Chocolatey on Windows


    At the start of the year, I decided to give my dotfiles a clean up. In this update, I made the decision to use a configuration management tool. Out of all the offerings I chose Puppet. As a Linux user it's not often I need to set up Windows workstations, but for some tasks I have coming up a Windows workstation was the right tool for the job. So the job began on learning how to use Puppet on Windows, and this is how it went:

    This last time I set up a Windows machine was nearly two years ago. Coming straight from Linux my first thought was where's the package manager? This is how I found Chocolatey, back then it wasn't quite APT. Now however combined with the "puppetlabs/chocolatey" module this is quite different.

    The one issue I did encounter when installing the module was an SSL problem with the below message:

    Error: Could not connect via HTTPS to
        Unable to verify the SSL certificate
        The certificate may not be signed by a valid CA
        The CA bundle included with OpenSSL may not be valid or up to date

    I found a simple fix was installing curl with Chocolatey. Once the Puppet module was installed, installing packages was no problem.

    package { [
        ensure   => installed,
        provider => chocolatey,

    One cool feature of Puppet is the paths. You dont need to use a \ as a directory separator. This is a blessing when needing to use double quotes for strings to avoid escaping hell. This was super handy when installing extensions for vscode

    define vscode_plugin {
        exec { "code_install_${title}":
            path => 'C:/Program Files/Microsoft VS Code/bin',
            command  => "code.cmd --install-extension ${title}",
    vscode_plugin { [ 'vscodevim.vim' ]: }