Test Kitchen + Puppet + Windows
Provisioning an Apache Software Foundation VM requires a lot of moving parts -- things with names like apt
, gem
, hiera
, kitchen
, puppet
, and r10k
. To make things easier, the Apache infrastructure team provides a base definition on top of which you install and configure ‘modules’. Modules can be pretty much anything, examples being ldap
and tomcat
.
There are two sets of modules that you can draw from: 3rd party modules and ASF modules modules.
As an alternative to a full configuration (which would involve DNS setup, etc), the recommended process is to copy the relevant configuration file from the infrastructure-puppet repository to the default-ubuntu1464
, make changes to that subset of the configuration, and only copying, committing, and pushing the results when done.
Currently the base machine yaml is hard coded to ..puppet/data/nodes/wintest-windows.yaml. For the remainder of this doc, that will referenced as such.
cd $ipr # this will pull in all the 3rd party modules at the specified versions we use in production ./bin/pull # this should only take a minute or two to run, check the output of $ipr/3rdParty
cd $ipk/puppet/modules for i in $(ls $ipr/3rdParty); do ln -s $ipr/3rdParty/$i ./; done for i in $(ls $ipr/modules); do ln -s $ipr/modules/$i ./; done
Modules are organized into two types: “third party” and “ASF custom”.
Third party modules are listed in infrastructure-puppet/Puppetfile, and updated using the bin/pull
command described above. Information on locating a module can be found at puppet labs documentation.
Custom modules are stored in infrastructure-puppet/environments/windows/modules/. Again, documentation on how to write a module can be found in the puppet labs documentation.
Node data are still stored in ../data/nodes/machine.a.o.yaml format.
Same spin up as the other kitchen:
$ kitchen create wintest-windows
However this will open a VirutalBox window where you can login and interact with Windows (instead of ssh) Default username and password is in .kitchen.yml
When done, you can take down and remove the VM with the following command:
$ kitchen destroy default
Most the the test-kitchen option work with puppet, however make sure to see the kitchen-puppet documentation (even though the explanations aren't nearly as detailed as it needs to be).
Most information has been taken from here