| Index: README.md | 
| =================================================================== | 
| --- a/README.md | 
| +++ b/README.md | 
| @@ -6,17 +6,50 @@ | 
| Our Puppet manifests are only tested with Ubuntu 12.04 right now. | 
| -Private files | 
| -------------- | 
| +Environment specific setup | 
| +-------------------------- | 
| -Some parts of our infrastructure are, obviously, confidential. We have | 
| -htpasswd files, SSH keys and SSL certificates that we need to be | 
| -careful with. | 
| +Some infrastructure parts are specific to the environment (such as e.g. | 
| +*development*, *test* and *production*) whilst passwords, for example, | 
| +are confidential. In order to allow for such specific configuration, the | 
| +repository requires a set of manual operations during the initial setup: | 
| -That's why _modules/private_ is missing, and needs to be placed there | 
| -manually. We provide stub versions of all those files in | 
| -_modules/private-stub_, so just linking or copying that to | 
| -_modules/private_ will make everything work locally. | 
| +### `modules/private` | 
| + | 
| +The `private` module is destined to store confidential information such as | 
| +[RSA](http://en.wikipedia.org/wiki/RSA_%28cryptosystem%29) keys, `htpasswd` | 
| +files and so on. The repository provides a `private-stub` module containing | 
| +defaults suitable for development and testing purpose. One can create a | 
| +symbolic link to start using the resource: | 
| + | 
| +#### UNIX-like | 
| + | 
| + ln -s private-stub modules/private | 
| + | 
| +#### Windows | 
| + | 
| + MKLINK /D modules\private private-stub | 
| + | 
| +When creating a custom version, one may inspect the `modules/private-stub` | 
| +directory to determine which resources have to be provided. | 
| + | 
| +### `hiera/private` | 
| + | 
| +Analogous to `modules/private`, [Hiera](https://docs.puppetlabs.com/hiera/1/) | 
| +configuration files specific to the current environment are expected to be | 
| +found in `hiera/private`. Default resources for development (and testing) | 
| +purpose are provided within `modules/private-stub/hiera`: | 
| + | 
| +#### UNIX-like | 
| + | 
| + ln -s ../modules/private-stub/hiera hiera/private | 
| + | 
| +#### Windows | 
| + | 
| + MKLINK /D ..\modules\private-stub\hiera hiera\private | 
| + | 
| +Note that custom versions are recommended to be tracked together with the | 
| +custom `private` module, if any. | 
| Development environment | 
| ----------------------- | 
| @@ -33,7 +66,7 @@ | 
| * [VirtualBox](https://www.virtualbox.org/) | 
| * [Vagrant](http://vagrantup.com/) | 
| -* _modules/private_ exists (see above) | 
| +* Both `modules/private` and `hiera/private` exist (see above) | 
| ### Start a VM | 
| @@ -64,30 +97,34 @@ | 
| The default password for this user (required for the _sudo_ command) is "test". | 
| -Adding a server | 
| ---------------- | 
| +Adding a host | 
| +------------- | 
| -To set up a new server, you should first add it to the development | 
| -environment and test the setup, then set up a corresponding production | 
| -server. | 
| +To set up a new host, extend the custom `hiera/private/host.yaml` by another | 
| +`servers:` item, e.g.: | 
| -### Development environment | 
| + # ... | 
| + custom1: | 
| + ip: [10.8.0.254] | 
| + dns: foobar.example.com | 
| + ssh_public_key: AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAA... | 
| + role: codereviewserver | 
| -1. Add entries in _Vagrantfile_ and _manifests/vagrant.pp_ | 
| +See `modules/base/manifests/init.pp`, especially the `explicit_host_record()` | 
| +named type within class `base`, for more information on the possible option | 
| +keys and values. | 
| -2. Add the host name to one of the manifests imported by | 
| -_manifests/nodes.pp_ | 
| +In development, this is all that needs to be done before the new box can be | 
| +started using `vagrant up ...`. Production servers, however, need a working | 
| +Puppet configuration first (see below). | 
| -3. Make sure the server uses the _nagios::client_ class and add a | 
| -_nagios\_host_ to _manifests/monitoringserver.pp_ | 
| +Configuring Puppet | 
| +------------------ | 
| -### Production environment | 
| +### Prerequisites | 
| 1. Install Ubuntu Server 12.04 LTS | 
| -2. Perform an update and install Puppet | 
| - | 
| - apt-get -y update && apt-get -y upgrade && apt-get -y install puppet | 
| - | 
| +2. Run `hiera/install-precise.py` as user `root` to install Puppet and Hiera | 
| 3. Enable pluginsync (Add the following to the _main_ section in | 
| _/etc/puppet/puppet.conf_) | 
| @@ -104,7 +141,7 @@ | 
| apply it locally. The master is also an agent, fetching configuration | 
| from itself. | 
| -#### Puppet agent | 
| +### Puppet agent | 
| 1. Attempt an initial provisioning, this will fail | 
| @@ -123,7 +160,7 @@ | 
| puppet agent --test | 
| -#### Puppet master | 
| +### Puppet master | 
| 1. Configure the certificate name (Add the following to the _master_ | 
| section in _/etc/puppet/puppet.conf_) |