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
--
1.7.2.3