Sets the default settings to ensure packages exist in deltacloud-configure but leave installed packages as is in deltacloud-cleanup --- bin/deltacloud-cleanup | 1 + bin/deltacloud-configure | 1 + .../lib/puppet/parser/functions/return_if.rb | 7 ++ recipes/deltacloud_recipe/manifests/aggregator.pp | 70 ++++++++------- recipes/deltacloud_recipe/manifests/core.pp | 16 ++-- recipes/deltacloud_recipe/manifests/deltacloud.pp | 6 ++ .../deltacloud_recipe/manifests/image-factory.pp | 92 ++++++++++--------- recipes/deltacloud_recipe/manifests/iwhd.pp | 22 +++-- 8 files changed, 124 insertions(+), 91 deletions(-) create mode 100644 recipes/deltacloud_recipe/lib/puppet/parser/functions/return_if.rb
diff --git a/bin/deltacloud-cleanup b/bin/deltacloud-cleanup index a359fce..6401683 100755 --- a/bin/deltacloud-cleanup +++ b/bin/deltacloud-cleanup @@ -1,4 +1,5 @@ #!/bin/sh
+export FACTER_AEOLUS_ENABLE_PACKAGES=false puppet /usr/share/deltacloud-configure/deltacloud_uninstall.pp \ --modulepath=/usr/share/deltacloud-configure/modules/ diff --git a/bin/deltacloud-configure b/bin/deltacloud-configure index c034d4c..2c2f6bb 100755 --- a/bin/deltacloud-configure +++ b/bin/deltacloud-configure @@ -1,4 +1,5 @@ #!/bin/sh
+export FACTER_AEOLUS_ENABLE_PACKAGES=true puppet /usr/share/deltacloud-configure/deltacloud_recipe.pp \ --modulepath=/usr/share/deltacloud-configure/modules/ diff --git a/recipes/deltacloud_recipe/lib/puppet/parser/functions/return_if.rb b/recipes/deltacloud_recipe/lib/puppet/parser/functions/return_if.rb new file mode 100644 index 0000000..0e943ea --- /dev/null +++ b/recipes/deltacloud_recipe/lib/puppet/parser/functions/return_if.rb @@ -0,0 +1,7 @@ +module Puppet::Parser::Functions + newfunction(:return_if, :type => :rvalue) do |args| + condition = args[0] + value = args[1] + condition ? value : [] + end +end diff --git a/recipes/deltacloud_recipe/manifests/aggregator.pp b/recipes/deltacloud_recipe/manifests/aggregator.pp index 538b7f1..b329f68 100644 --- a/recipes/deltacloud_recipe/manifests/aggregator.pp +++ b/recipes/deltacloud_recipe/manifests/aggregator.pp @@ -3,16 +3,18 @@ class deltacloud::aggregator inherits deltacloud { ### Install the deltacloud components # specific versions of these two packages are needed and we need to pull the third in - package { 'rubygem-deltacloud-client': - provider => 'yum', ensure => 'installed', require => Yumrepo['deltacloud_arch', 'deltacloud_noarch'] } - - package {['deltacloud-aggregator', - 'deltacloud-aggregator-daemons', - 'deltacloud-aggregator-doc']: - provider => 'yum', ensure => 'installed', - require => Package['rubygem-deltacloud-client', - 'rubygem-deltacloud-image-builder-agent', - 'iwhd']} + if $enable_packages { + package { 'rubygem-deltacloud-client': + provider => 'yum', ensure => 'installed', require => Yumrepo['deltacloud_arch', 'deltacloud_noarch'] } + + package {['deltacloud-aggregator', + 'deltacloud-aggregator-daemons', + 'deltacloud-aggregator-doc']: + provider => 'yum', ensure => 'installed', + require => Package['rubygem-deltacloud-client', + 'rubygem-deltacloud-image-builder-agent', + 'iwhd']} + }
file {"/var/lib/deltacloud-aggregator": ensure => directory, @@ -26,7 +28,7 @@ class deltacloud::aggregator inherits deltacloud { ### Start the deltacloud services file {"/var/lib/condor/condor_config.local": source => "puppet:///modules/deltacloud_recipe/condor_config.local", - require => Package['deltacloud-aggregator-daemons'] } + require => return_if($enable_packages, Package['deltacloud-aggregator-daemons']) } service { ['condor', 'httpd']: ensure => 'running', enable => true, @@ -37,7 +39,7 @@ class deltacloud::aggregator inherits deltacloud { ensure => 'running', enable => true, hasstatus => true, - require => [Package['deltacloud-aggregator-daemons'], + require => [return_if($enable_packages, Package['deltacloud-aggregator-daemons']), Rails::Seed::Db[seed_deltacloud_database], Service[condor]] }
@@ -58,7 +60,7 @@ class deltacloud::aggregator inherits deltacloud { rails::create::db{"create_deltacloud_database": cwd => "/usr/share/deltacloud-aggregator", rails_env => "production", - require => [Postgres::User[dcloud], Package['deltacloud-aggregator']]} + require => [Postgres::User[dcloud], return_if($enable_packages, Package['deltacloud-aggregator'])] } rails::migrate::db{"migrate_deltacloud_database": cwd => "/usr/share/deltacloud-aggregator", rails_env => "production", @@ -76,7 +78,7 @@ class deltacloud::aggregator inherits deltacloud { hasstatus => "false", pattern => "solr", ensure => 'running', - require => [Package['deltacloud-aggregator'], Rails::Create::Db['create_deltacloud_database']]} + require => [return_if($enable_packages, Package['deltacloud-aggregator']), Rails::Create::Db['create_deltacloud_database']]}
exec{"build_solr_index": cwd => "/usr/share/deltacloud-aggregator", @@ -87,30 +89,34 @@ class deltacloud::aggregator inherits deltacloud {
class deltacloud::aggregator::disabled { ### Uninstall the deltacloud components - package {['deltacloud-aggregator-daemons', - 'deltacloud-aggregator-doc']: - provider => 'yum', ensure => 'absent', - require => Service['deltacloud-aggregator', - 'deltacloud-condor_refreshd', - 'deltacloud-dbomatic', - 'imagefactoryd', - 'deltacloud-image_builder_service']} - - package {'deltacloud-aggregator': - provider => 'yum', ensure => 'absent', - require => [Package['deltacloud-aggregator-daemons', - 'deltacloud-aggregator-doc'], - Service['solr'], - Rails::Drop::Db["drop_deltacloud_database"]] } + if $enable_packages { + package {['deltacloud-aggregator-daemons', + 'deltacloud-aggregator-doc']: + provider => 'yum', ensure => 'absent', + require => Service['deltacloud-aggregator', + 'deltacloud-condor_refreshd', + 'deltacloud-dbomatic', + 'imagefactoryd', + 'deltacloud-image_builder_service']} + + package {'deltacloud-aggregator': + provider => 'yum', ensure => 'absent', + require => [Package['deltacloud-aggregator-daemons', + 'deltacloud-aggregator-doc'], + Service['solr'], + Rails::Drop::Db["drop_deltacloud_database"]] } + }
file {"/var/lib/deltacloud-aggregator": ensure => absent, force => true }
- package { 'rubygem-deltacloud-client': - provider => 'yum', ensure => 'absent', - require => Package['deltacloud-aggregator']} + if $enable_packages { + package { 'rubygem-deltacloud-client': + provider => 'yum', ensure => 'absent', + require => Package['deltacloud-aggregator']} + }
### Stop the deltacloud services service { ['condor', 'httpd']: diff --git a/recipes/deltacloud_recipe/manifests/core.pp b/recipes/deltacloud_recipe/manifests/core.pp index 443268d..0c649d5 100644 --- a/recipes/deltacloud_recipe/manifests/core.pp +++ b/recipes/deltacloud_recipe/manifests/core.pp @@ -2,8 +2,10 @@
class deltacloud::core inherits deltacloud { ### Install the deltacloud components - package { 'rubygem-deltacloud-core': - provider => 'yum', ensure => 'installed', require => Yumrepo['deltacloud_arch', 'deltacloud_noarch']} + if $enable_packages { + package { 'rubygem-deltacloud-core': + provider => 'yum', ensure => 'installed', require => Yumrepo['deltacloud_arch', 'deltacloud_noarch']} + } file { "/var/log/deltacloud-core": ensure => 'directory' }
### we need to sync time to communicate w/ cloud providers @@ -16,15 +18,17 @@ class deltacloud::core inherits deltacloud { service { 'deltacloud-core': ensure => 'running', enable => true, - require => [Package['rubygem-deltacloud-core'], + require => [return_if($enable_packages, Package['rubygem-deltacloud-core']), File['/etc/init.d/deltacloud-core']] } }
class deltacloud::core::disabled { ### Uninstall the deltacloud components - package { 'rubygem-deltacloud-core': - provider => 'yum', ensure => 'absent', - require => Service['deltacloud-core']} + if $enable_packages { + package { 'rubygem-deltacloud-core': + provider => 'yum', ensure => 'absent', + require => Service['deltacloud-core']} + }
### Stop the deltacloud services service { 'deltacloud-core': diff --git a/recipes/deltacloud_recipe/manifests/deltacloud.pp b/recipes/deltacloud_recipe/manifests/deltacloud.pp index 1362f62..3de32f0 100644 --- a/recipes/deltacloud_recipe/manifests/deltacloud.pp +++ b/recipes/deltacloud_recipe/manifests/deltacloud.pp @@ -12,6 +12,12 @@ import "core" import "iwhd" import "image-factory"
+if $aeolus_enable_packages == "true" or $aeolus_enable_packages == "1" { + $enable_packages = true +} else { + $enable_packages = false +} + # Base deltacloud class class deltacloud { # Setup repos which to pull deltacloud components diff --git a/recipes/deltacloud_recipe/manifests/image-factory.pp b/recipes/deltacloud_recipe/manifests/image-factory.pp index c584d5a..6d4be23 100644 --- a/recipes/deltacloud_recipe/manifests/image-factory.pp +++ b/recipes/deltacloud_recipe/manifests/image-factory.pp @@ -3,14 +3,16 @@ class deltacloud::image-factory inherits deltacloud { # TODO: Fix me, find a better way to do this... # We need to also install this rpm from amazon - package{"ec2-ami-tools": - provider => "rpm", - source => "http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.noarch.rpm", - ensure => 'installed' } + if $enable_packages { + package{"ec2-ami-tools": + provider => "rpm", + source => "http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.noarch.rpm", + ensure => 'installed' }
- package { 'rubygem-deltacloud-image-builder-agent': - provider => 'yum', ensure => 'installed', - require => [Package['ec2-ami-tools'], Yumrepo['deltacloud_arch', 'deltacloud_noarch']]} + package { 'rubygem-deltacloud-image-builder-agent': + provider => 'yum', ensure => 'installed', + require => [Package['ec2-ami-tools'], Yumrepo['deltacloud_arch', 'deltacloud_noarch']]} + }
### Configure boxgrinder, this should go into the boxgrinder rpms eventually @@ -49,12 +51,12 @@ class deltacloud::image-factory inherits deltacloud { ensure => 'running', enable => true, require => [File['/etc/qpidd.conf'], - Package['deltacloud-aggregator-daemons']]} + return_if($enable_packages, Package['deltacloud-aggregator-daemons'])]} file { "/etc/imagefactory.yml": source => "puppet:///modules/deltacloud_recipe/imagefactory.yml", mode => 644 } - $requires = [Package['rubygem-deltacloud-image-builder-agent'], - Package['deltacloud-aggregator-daemons'], + $requires = [return_if($enable_packages, Package['rubygem-deltacloud-image-builder-agent']), + return_if($enable_packages, Package['deltacloud-aggregator-daemons']), File['/etc/imagefactory.yml'], Service[qpidd], Rails::Seed::Db[seed_deltacloud_database], @@ -88,40 +90,42 @@ class deltacloud::image-factory::disabled {
### Uninstall the deltacloud components - package { 'rubygem-deltacloud-image-builder-agent': - provider => 'yum', ensure => 'absent', - require => Package['deltacloud-aggregator']} - - # FIXME these lingering dependencies, pulled in for - # rubygem-deltacloud-image-builder-agent, need to be removed as - # ec2-ami-tools and appliance-tools depend on them and using - # 'absent' in the context of the 'yum' provider dispatches - # to 'rpm -e' instead of 'yum erase' - package { ['rubygem-boxgrinder-build-ec2-platform-plugin', - 'rubygem-boxgrinder-build-centos-os-plugin', - 'rubygem-boxgrinder-build-fedora-os-plugin']: - provider => "yum", ensure => 'absent', - require => Package['rubygem-deltacloud-image-builder-agent']} - package { 'rubygem-boxgrinder-build-rhel-os-plugin': - provider => "yum", ensure => 'absent', - require => Package['rubygem-boxgrinder-build-centos-os-plugin']} - package { 'rubygem-boxgrinder-build-rpm-based-os-plugin': - provider => "yum", ensure => 'absent', - require => Package['rubygem-boxgrinder-build-rhel-os-plugin', - 'rubygem-boxgrinder-build-fedora-os-plugin']} - - package { 'ec2-ami-tools': - provider => "yum", ensure => 'absent', - require => Package['rubygem-boxgrinder-build-ec2-platform-plugin']} - package { 'appliance-tools': - provider => 'yum', ensure => 'absent', - require => Package['rubygem-boxgrinder-build-rpm-based-os-plugin']} - package { 'livecd-tools': - provider => 'yum', ensure => 'absent', - require => Package['appliance-tools']} - package { 'python-imgcreate': - provider => 'yum', ensure => 'absent', - require => Package['appliance-tools', 'livecd-tools']} + if $enable_packages { + package { 'rubygem-deltacloud-image-builder-agent': + provider => 'yum', ensure => 'absent', + require => Package['deltacloud-aggregator']} + + # FIXME these lingering dependencies, pulled in for + # rubygem-deltacloud-image-builder-agent, need to be removed as + # ec2-ami-tools and appliance-tools depend on them and using + # 'absent' in the context of the 'yum' provider dispatches + # to 'rpm -e' instead of 'yum erase' + package { ['rubygem-boxgrinder-build-ec2-platform-plugin', + 'rubygem-boxgrinder-build-centos-os-plugin', + 'rubygem-boxgrinder-build-fedora-os-plugin']: + provider => "yum", ensure => 'absent', + require => Package['rubygem-deltacloud-image-builder-agent']} + package { 'rubygem-boxgrinder-build-rhel-os-plugin': + provider => "yum", ensure => 'absent', + require => Package['rubygem-boxgrinder-build-centos-os-plugin']} + package { 'rubygem-boxgrinder-build-rpm-based-os-plugin': + provider => "yum", ensure => 'absent', + require => Package['rubygem-boxgrinder-build-rhel-os-plugin', + 'rubygem-boxgrinder-build-fedora-os-plugin']} + + package { 'ec2-ami-tools': + provider => "yum", ensure => 'absent', + require => Package['rubygem-boxgrinder-build-ec2-platform-plugin']} + package { 'appliance-tools': + provider => 'yum', ensure => 'absent', + require => Package['rubygem-boxgrinder-build-rpm-based-os-plugin']} + package { 'livecd-tools': + provider => 'yum', ensure => 'absent', + require => Package['appliance-tools']} + package { 'python-imgcreate': + provider => 'yum', ensure => 'absent', + require => Package['appliance-tools', 'livecd-tools']} + }
### Destroy and cleanup deltacloud artifacts diff --git a/recipes/deltacloud_recipe/manifests/iwhd.pp b/recipes/deltacloud_recipe/manifests/iwhd.pp index ed5bd7a..e8eae12 100644 --- a/recipes/deltacloud_recipe/manifests/iwhd.pp +++ b/recipes/deltacloud_recipe/manifests/iwhd.pp @@ -2,10 +2,12 @@
class deltacloud::iwhd inherits deltacloud { ### Install the deltacloud components - package { 'iwhd': - provider => 'yum', ensure => 'installed', - require => Yumrepo['deltacloud_arch', 'deltacloud_noarch'] - } + if $enable_packages{ + package { 'iwhd': + provider => 'yum', ensure => 'installed', + require => Yumrepo['deltacloud_arch', 'deltacloud_noarch'] + } + }
### Start the deltacloud services file { "/data": ensure => 'directory' } @@ -23,13 +25,13 @@ class deltacloud::iwhd inherits deltacloud { service { 'mongod': ensure => 'running', enable => true, - require => [Package['iwhd'], File["/data/db"]]} + require => [return_if($enable_package, Package['iwhd']), File["/data/db"]]} service { 'iwhd': ensure => 'running', enable => true, hasstatus => true, require => [File['/etc/rc.d/init.d/iwhd', '/etc/iwhd/conf.js'], - Package['iwhd'], + return_if($enable_package, Package['iwhd']), Service[mongod]]}
# XXX ugly hack but iwhd might take some time to come up @@ -52,9 +54,11 @@ class deltacloud::iwhd::disabled {
### Uninstall the deltacloud components - package { 'iwhd': - provider => 'yum', ensure => 'absent', - require => [Package['deltacloud-aggregator'], Service['iwhd']]} + if $enable_packages { + package { 'iwhd': + provider => 'yum', ensure => 'absent', + require => [Package['deltacloud-aggregator'], Service['iwhd']]} + } }
# Create a named bucket in iwhd
aeolus-devel@lists.fedorahosted.org