[30960] | 1 | Puppet::Type.newtype(:anchor) do
|
---|
| 2 | desc <<-'ENDOFDESC'
|
---|
| 3 | A simple resource type intended to be used as an anchor in a composite class.
|
---|
| 4 |
|
---|
| 5 | In Puppet 2.6, when a class declares another class, the resources in the
|
---|
| 6 | interior class are not contained by the exterior class. This interacts badly
|
---|
| 7 | with the pattern of composing complex modules from smaller classes, as it
|
---|
| 8 | makes it impossible for end users to specify order relationships between the
|
---|
| 9 | exterior class and other modules.
|
---|
| 10 |
|
---|
| 11 | The anchor type lets you work around this. By sandwiching any interior
|
---|
| 12 | classes between two no-op resources that _are_ contained by the exterior
|
---|
| 13 | class, you can ensure that all resources in the module are contained.
|
---|
| 14 |
|
---|
| 15 | class ntp {
|
---|
| 16 | # These classes will have the correct order relationship with each
|
---|
| 17 | # other. However, without anchors, they won't have any order
|
---|
| 18 | # relationship to Class['ntp'].
|
---|
| 19 | class { 'ntp::package': }
|
---|
| 20 | -> class { 'ntp::config': }
|
---|
| 21 | -> class { 'ntp::service': }
|
---|
| 22 |
|
---|
| 23 | # These two resources "anchor" the composed classes within the ntp
|
---|
| 24 | # class.
|
---|
| 25 | anchor { 'ntp::begin': } -> Class['ntp::package']
|
---|
| 26 | Class['ntp::service'] -> anchor { 'ntp::end': }
|
---|
| 27 | }
|
---|
| 28 |
|
---|
| 29 | This allows the end user of the ntp module to establish require and before
|
---|
| 30 | relationships with Class['ntp']:
|
---|
| 31 |
|
---|
| 32 | class { 'ntp': } -> class { 'mcollective': }
|
---|
| 33 | class { 'mcollective': } -> class { 'ntp': }
|
---|
| 34 |
|
---|
| 35 | ENDOFDESC
|
---|
| 36 |
|
---|
| 37 | newparam :name do
|
---|
| 38 | desc "The name of the anchor resource."
|
---|
| 39 | end
|
---|
| 40 |
|
---|
| 41 | def refresh
|
---|
| 42 | # We don't do anything with them, but we need this to
|
---|
| 43 | # show that we are "refresh aware" and not break the
|
---|
| 44 | # chain of propagation.
|
---|
| 45 | end
|
---|
| 46 | end
|
---|