Puppet Manifest Example: Defining Order Between Actions
Last updated:Temporal dependencies in Puppet
Since Puppet resources are run in no particular order, we must explicitly define temporal dependencies between them.
In order words, if we want a given command to be run only after another command has run, we must declare it using keywords such as require, before, notify and subscribe.
For example, making sure a system update is run before we try to install the git package.
# tell puppet what to prepend to commands
Exec {
path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/" ]
}
# a command to run system updates
exec { 'sys_update':
command => "apt-get update --fix-missing"
}
class git {
package{'git-core':
ensure => 'installed',
require => Exec['sys_update']
}
}
include git
Keywords
before => Resource['foo']: current resource will always be applied before Resource'foo'.notify => Resource['foo']: current resource will always be applied before Resource'foo', and resource'foo'will be notified (i.e. re-run) every time the state of the current resource changes.subscribe => Resource['foo']: the current resource will always be applied after Resource'foo'. The current resource will be re-applied whenever Resource'foo'changes state.