commit | 18530f1dbd7f844bcaa2e0fdee104595f032a5b3 | [log] [tgz] |
---|---|---|
author | Geoffrey Corey <coreyg@apache.org> | Wed Mar 09 10:03:45 2016 -0800 |
committer | Geoffrey Corey <coreyg@apache.org> | Wed Mar 09 10:04:43 2016 -0800 |
tree | d7d3471ff49ba9e98f2b27eff8ffde3ff1e42ce7 | |
parent | d1957aea3ddee46c7002e725738b059c01931960 [diff] |
update .kitchen.yaml, update hiera to not do weird things when dns is weird
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