Test Kitchen + Puppet
Provisioning an Apache Software Foundation VM requires a lot of moving parts -- things with names like
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
There are two sets of modules that you can draw from: 3rd party modules and [ASF])https://github.com/apache/infrastructure-puppet/tree/deployment/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.
git clone https://github.com/apache/infrastructure-puppet-kitchen git clone https://github.com/apache/infrastructure-puppet
gem install bundler cd <path to infrastructure-puppet repo> bundle install
cd <path to infra puppet repo> ./bin/pull # this will pull in all the 3rd party modules at the specified versions we use in production
cd <path to puppet-kitchen repo> cd puppet/modules export ipr=<path to infra-puppet repo> 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
kitchen create default kitchen exec default -c 'sudo gem install deep_merge' kitchen converge default
Start by copying a machine configuration from the data/nodes repository to
puppet/data/node/default-ubuntu1464.yaml, editing it as needed, and then running:
kitchen converge default
This will bring up a vm, run puppet apply. From there, you can continue modifying the definition and/or writing new puppet module(s) (in
puppet/modules/$module) and testing by rerunning the above command.
You can directly
ssh into your virtual machine using the following command:
kitchen login default
If you have started a service like Apache httpd on this machine, you can access it at the following IP address:
Modules are organized into two types: “third party” and “ASF custom”.
When done, you can take down and remove the VM with the following command:
kitchen destroy default
Most information has been taken from here