Version information
Start using this module
Add this module to your Puppetfile:
mod 'datacentred-runonce', '1.0.0'
Learn more about managing modules with a PuppetfileDocumentation
#Run Once
Table of Contents
- Overview
- Module Description - What the module does and why it is useful
- Usage - Configuration options and additional functionality
- Limitations - OS compatibility, etc.
- Testing - Guide for contributing to the module
Overview
The run once module is a wrapper around exec. It ensures that a command is only ever executed once without having to explitily specifying $onlyif or $unless parameters.
##Module Description
The underlying implmentation uses semaphore lock files to control whether or not to run a command. An optional semaphore directory is created if it did not already exist, the command executed and the semaphore created upon success. Semaphores can either be persistent, by default residing in /var/lib/puppet/semaphores, or transient, residing in /tmp, and thus the command will be executed once per reboot.
Usage
runonce { 'hello-world':
command => 'echo hello world!',
}
runonce { 'init-modules':
command => 'service kmod start',
persistent => false,
}
Limitations
The current implmentation relies on /tmp being cleared by the underlying operating system on a reboot. Aditionally the persistent semaphore directory does not support parent directory creation.
Testing
This has been tested on Ubuntu LTS 12.04 and 14.04