]> gitweb.fluxo.info Git - puppet-stdlib.git/commitdiff
Docs: Clarify the use case for the anchor type
authornfagerlund <nick.fagerlund@gmail.com>
Wed, 17 Aug 2011 23:43:22 +0000 (16:43 -0700)
committernfagerlund <nick.fagerlund@gmail.com>
Thu, 18 Aug 2011 19:39:05 +0000 (12:39 -0700)
This commit tweaks the docs for the anchor resource type to give more context
for its existence.

lib/puppet/type/anchor.rb

index 0c28b1cc73379081f4d485d85ff4d3815de8f720..6b817321544eaa4b9777c1de084d10dad1c8669c 100644 (file)
@@ -2,23 +2,32 @@ Puppet::Type.newtype(:anchor) do
   desc <<-'ENDOFDESC'
   A simple resource type intended to be used as an anchor in a composite class.
 
+  In Puppet 2.6, when a class declares another class, the resources in the
+  interior class are not contained by the exterior class. This interacts badly
+  with the pattern of composing complex modules from smaller classes, as it
+  makes it impossible for end users to specify order relationships between the
+  exterior class and other modules.
+
+  The anchor type lets you work around this. By sandwiching any interior
+  classes between two no-op resources that _are_ contained by the exterior
+  class, you can ensure that all resources in the module are contained.
+
       class ntp {
+        # These classes will have the correct order relationship with each
+        # other. However, without anchors, they won't have any order
+        # relationship to 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': }
+        # These two resources "anchor" the composed classes within the ntp
+        # class.
+        anchor { 'ntp::begin': } -> Class['ntp::package']
+        Class['ntp::service']    -> anchor { 'ntp::end': }
       }
 
-  This resource allows all of the classes in the ntp module to be contained
-  within the ntp class from a dependency management point of view.
-
   This allows the end user of the ntp module to establish require and before
-  relationships easily:
+  relationships with Class['ntp']:
 
       class { 'ntp': } -> class { 'mcollective': }
       class { 'mcollective': } -> class { 'ntp': }