]> gitweb.fluxo.info Git - puppet-stdlib.git/commit
(#3) Add an anchor type to provide containment
authorJeff McCune <jeff@puppetlabs.com>
Wed, 15 Jun 2011 16:40:04 +0000 (09:40 -0700)
committerJeff McCune <jeff@puppetlabs.com>
Wed, 15 Jun 2011 16:40:04 +0000 (09:40 -0700)
commitab70663d159ff7b59d116ed69b9a455cb22847c4
tree09cfefd92fb1cfb2d906ab306f480daad152868b
parentdf2398b59c295c3e27cea5e41a76167a797139d4
(#3) Add an anchor type to provide containment

With Puppet 2.6.x we do not have a way to specify containment
relationships.  In the use case of class ntp { } declaring
ntp::{package,config,service} classes, the ntp class itself should allow
the user to specify before and require relationships to the main ntp
class.

The anchor resource type allows module authors to close the loop on
classes composing the main top level module.  For example:

    class ntp {
      class { 'ntp::package': }
      -> class { 'ntp::config': }
      -> class { 'ntp::service': }
      # These two resources "anchor" the composed classes
      # such that the end user may use "require" and "before"
      # relationships with Class['ntp']
      anchor { 'ntp::begin': } -> class { 'ntp::package': }
      class { 'ntp::service': } -> anchor { 'ntp::end': }
    }

Using this pattern, the module user may then simply declare relationships to
the ntp class as they expect:

    class { 'ntp': } -> class { 'mcollective': }
    # OR
    class { 'mcollective': } -> class { 'ntp': }
lib/puppet/type/anchor.rb [new file with mode: 0644]