Skip to content

Commit

Permalink
Move stages to after main
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Jeff McCune committed May 26, 2011
1 parent 46533ae commit 6e9e838
Showing 1 changed file with 9 additions and 12 deletions.
21 changes: 9 additions & 12 deletions manifests/stages.pp
Original file line number Diff line number Diff line change
Expand Up @@ -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:
#
Expand All @@ -31,15 +31,12 @@
#
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': }

}

0 comments on commit 6e9e838

Please sign in to comment.