commit | 0fd99794ee57c3e808148326592d099315f1764b | [log] [tgz] |
---|---|---|
author | Sam Ruby <rubys@intertwingly.net> | Wed Dec 30 19:05:30 2015 -0500 |
committer | Sam Ruby <rubys@intertwingly.net> | Wed Dec 30 19:05:30 2015 -0500 |
tree | 8f098f4d6e44ec3910c36b229e6f1c371b8cb1a5 | |
parent | c7dffdee2c3f592b37ac17d0accb1bdfbcc345e1 [diff] |
Document my (incomplete/evolving) understanding See also: https://meta.wikimedia.org/wiki/Cunningham's_Law
Test Kitchen + Puppet
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])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/stumped2/puppet-kitchen git clone https://github.com/apache/infrastructure-puppet
gem install bundler cd <path to infra 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: 192.168.33.2
.
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/modules/. Again, documentation on how to write a module can be found in the puppet labs documentation.
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