dependencies with hiera and create resources
In a nodeless setup it
is possible to manage dependencies between resources created by
create_resources, but the syntax is quite strict and caused me some
troubles.
If the syntax is not correct the traditionnal Could not find dependency
error message will be displayed.
node default {
hiera_include ('classes', [])
$packages = hiera_hash('packages', {})
create_resources('package', $packages)
$services = hiera_hash('services', {})
create_resources('service', $services)
}
The following won’t work:
services:
mysql:
ensure: 'running'
require: Package['mysql-server']
Nor the following:
services:
mysql:
ensure: 'running'
require: "Package['mysql-server']"
But the following two syntaxes will work:
+++
classes:
- 'puppet::agent'
packages:
mysql-server:
ensure: 'installed'
services:
mysql:
ensure: 'running'
require: Package[mysql-server]
+++
classes:
- 'puppet::agent'
packages:
mysql-server:
ensure: 'installed'
services:
mysql:
ensure: 'running'
require: 'Package[mysql-server]'
See a full example running in Vagrant at https://github.com/gwarf/puppet-vagrant-playground