]> gitweb.fluxo.info Git - puppet-stdlib.git/commitdiff
Move stages to after main
authorJeff McCune <jeff@puppetlabs.com>
Thu, 26 May 2011 17:21:42 +0000 (10:21 -0700)
committerJeff McCune <jeff@puppetlabs.com>
Thu, 26 May 2011 17:21:42 +0000 (10:21 -0700)
Working with the stages in stdlib, I quickly ran into an issue where
most of the stages were before the main stage.  This made it difficult
to declare any resources in a traditional "include" style class while
hiding the end user from the stages being associated with other module
classes.

For example, in class mcollective, a package would be declared in main.
However, if mcollective declared class mcollective::service in stage
infra_deploy and this was before main, there would be a dependency loop
between the package and the service.

There appears to be a convention around "chain your stages after main"
to avoid the need to create relatively empty shell classes.

manifests/stages.pp

index 19cee6b87813f12bf6bb14c94033b0e81203c541..365b90558663791c8b54556b2a38e3e4931f1211 100644 (file)
@@ -5,13 +5,13 @@
 # The high level stages are (In order):
 #
 #  * setup
-#  * deploy
+#  * main
 #  * runtime
 #  * setup_infra
 #  * deploy_infra
-#  * main
 #  * setup_app
 #  * deploy_app
+#  * deploy
 #
 # Parameters:
 #
 #
 class stdlib::stages {
 
-  stage { 'setup':  before => Stage['deploy'] }
-  stage { 'deploy': before => Stage['setup_infra'] }
-  stage { 'runtime':
-    require => Stage['deploy'],
-    before  => Stage['setup_infra'],
-  }
-  stage { 'setup_infra':  before  => Stage['deploy_infra'] }
-  stage { 'deploy_infra': before  => Stage['main'] }
-  stage { 'setup_app':    require => Stage['main'] }
-  stage { 'deploy_app':   require => Stage['setup_app'] }
+  stage { 'setup':  before => Stage['main'] }
+  stage { 'runtime': require => Stage['main'] }
+  -> stage { 'setup_infra': }
+  -> stage { 'deploy_infra': }
+  -> stage { 'setup_app': }
+  -> stage { 'deploy_app': }
+  -> stage { 'deploy': }
 
 }