bringing it more inline w/ how puppet normally works
---
recipes/deltacloud_recipe/deltacloud_recipe.pp | 27 +-
recipes/deltacloud_recipe/deltacloud_uninstall.pp | 19 +-
recipes/deltacloud_recipe/manifests/aggregator.pp | 187 ++++++++++
recipes/deltacloud_recipe/manifests/core.pp | 33 ++
recipes/deltacloud_recipe/manifests/deltacloud.pp | 368 +-------------------
.../deltacloud_recipe/manifests/image-factory.pp | 80 +++++
recipes/deltacloud_recipe/manifests/iwhd.pp | 40 +++
7 files changed, 360 insertions(+), 394 deletions(-)
create mode 100644 recipes/deltacloud_recipe/manifests/aggregator.pp
create mode 100644 recipes/deltacloud_recipe/manifests/core.pp
create mode 100644 recipes/deltacloud_recipe/manifests/image-factory.pp
create mode 100644 recipes/deltacloud_recipe/manifests/iwhd.pp
diff --git a/recipes/deltacloud_recipe/deltacloud_recipe.pp
b/recipes/deltacloud_recipe/deltacloud_recipe.pp
index d7e8765..83c8037 100644
--- a/recipes/deltacloud_recipe/deltacloud_recipe.pp
+++ b/recipes/deltacloud_recipe/deltacloud_recipe.pp
@@ -25,30 +25,17 @@
# Modules used by the recipe
import "deltacloud_recipe/deltacloud"
-# setup the deltacloud repositories
-dc::repos{"deltacloud":}
-
-# install deltacloud components
-dc::package::install{["aggregator", "core"]:
- require => Dc::Repos["deltacloud"]}
-
-# setup selinux
-dc::selinux{'deltacloud':}
-
-# setup the firewall
-dc::firewall{'deltacloud':}
-
-# setup deltacloud db
-dc::db{"postgres":}
-
-# start deltacloud services
-dc::service::start{["aggregator", "core", 'iwhd',
'image-factory']:}
+# include the various deltacloud components
+include deltacloud::aggregator
+include deltacloud::core
+include deltacloud::image-factory
+include deltacloud::iwhd
# create bucket in image warehouse
-dc::create_bucket{"deltacloud":}
+deltacloud::create_bucket{"deltacloud":}
# Create dcuser aggregator web user
-dc::site_admin{"admin":
+deltacloud::site_admin{"admin":
email => 'dcuser(a)deltacloud.org',
password => 'password',
first_name => 'deltacloud',
diff --git a/recipes/deltacloud_recipe/deltacloud_uninstall.pp
b/recipes/deltacloud_recipe/deltacloud_uninstall.pp
index b39d423..013f669 100644
--- a/recipes/deltacloud_recipe/deltacloud_uninstall.pp
+++ b/recipes/deltacloud_recipe/deltacloud_uninstall.pp
@@ -25,17 +25,8 @@
# Modules used by the recipe
import "deltacloud_recipe/deltacloud"
-$packages = ["aggregator", "core"]
-
-# stop deltacloud services
-dc::service::stop{["aggregator", "core", 'iwhd',
'image-factory']:}
-
-# destroy deltacloud db
-dc::db::destroy{"postgres":
- require => Dc::Service::Stop['aggregator']}
-
-# install deltacloud components
-dc::package::uninstall{$packages:
- require => Dc::Db::Destroy['postgres']}
-
-dc::cleanup{"deltacloud": require => Dc::Package::Uninstall[$packages]}
+# disable the various deltacloud components
+include deltacloud::aggregator::disabled
+include deltacloud::core::disabled
+include deltacloud::iwhd::disabled
+include deltacloud::image-factory::disabled
diff --git a/recipes/deltacloud_recipe/manifests/aggregator.pp
b/recipes/deltacloud_recipe/manifests/aggregator.pp
new file mode 100644
index 0000000..0072a0f
--- /dev/null
+++ b/recipes/deltacloud_recipe/manifests/aggregator.pp
@@ -0,0 +1,187 @@
+# Deltacloud aggregator puppet definitions
+
+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 { 'python-imgcreate':
+ provider => 'rpm', ensure => installed,
+ source =>
'http://repos.fedorapeople.org/repos/deltacloud/appliance/fedora-13/x86_64/python-imgcreate-031-1.fc12.1.x86_64.rpm'}
+ package { 'livecd-tools':
+ provider => 'rpm', ensure => installed,
+ source =>
'http://repos.fedorapeople.org/repos/deltacloud/appliance/fedora-13/x86_64/livecd-tools-031-1.fc12.1.x86_64.rpm',
+ require => Package['python-imgcreate']}
+ package { 'appliance-tools':
+ provider => 'yum', ensure => installed,
+ require => Package["livecd-tools",
"python-imgcreate"]}
+
+ # 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' }
+
+ package { 'rubygem-deltacloud-client':
+ provider => 'yum', ensure => 'installed' }
+ package { 'rubygem-deltacloud-image-builder-agent':
+ provider => 'yum', ensure => 'installed',
+ require => Package['appliance-tools',
'livecd-tools', 'python-imgcreate', 'ec2-ami-tools']}
+ package { 'iwhd':
+ provider => 'yum', ensure => 'installed' }
+
+
+ package {['deltacloud-aggregator',
+ 'deltacloud-aggregator-daemons',
+ 'deltacloud-aggregator-doc']:
+ provider => 'yum', ensure => 'installed',
+ require => Package['rubygem-deltacloud-client',
+ 'rubygem-deltacloud-image-builder-agent',
+ 'iwhd']}
+
+ ### Setup selinux for deltacloud
+ selinux::mode{"permissive":}
+
+ ### Setup firewall for deltacloud
+ firewall::rule{"http": destination_port => '80'}
+
+ ### Start the deltacloud services
+ file {"/var/lib/condor/condor_config.local":
+ source =>
"puppet:///modules/deltacloud_recipe/condor_config.local",
+ require => Package['deltacloud-aggregator-daemons'] }
+ service { ['condor', 'httpd']:
+ ensure => 'running',
+ enable => true,
+ require => File['/var/lib/condor/condor_config.local'] }
+ service { ['deltacloud-aggregator',
+ 'deltacloud-condor_refreshd',
+ 'deltacloud-dbomatic']:
+ ensure => 'running',
+ enable => true,
+ hasstatus => true,
+ require => [Package['deltacloud-aggregator-daemons'],
+ Rails::Migrate::Db[migrate_deltacloud_database],
+ Service[condor]] }
+
+ ### Initialize and start the deltacloud database
+ # Right now we configure and start postgres, at some point I want
+ # to make the db that gets setup configurable
+ include postgres::server
+ file { "/var/lib/pgsql/data/pg_hba.conf":
+ source => "puppet:///modules/deltacloud_recipe/pg_hba.conf",
+ require => Exec["pginitdb"] }
+ postgres::user{"dcloud":
+ password => "v23zj59an",
+ roles => "CREATEDB",
+ require => Service["postgresql"]}
+
+
+ # Create deltacloud database
+ rails::create::db{"create_deltacloud_database":
+ cwd => "/usr/share/deltacloud-aggregator",
+ rails_env => "production",
+ require => [Postgres::User[dcloud],
Package['deltacloud-aggregator']]}
+ rails::migrate::db{"migrate_deltacloud_database":
+ cwd => "/usr/share/deltacloud-aggregator",
+ rails_env => "production",
+ require => Rails::Create::Db[create_deltacloud_database]}
+}
+
+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'] }
+ package { 'rubygem-deltacloud-client':
+ provider => 'yum', ensure => 'absent',
+ require => Package['deltacloud-aggregator']}
+ package { 'rubygem-deltacloud-image-builder-agent':
+ provider => 'yum', ensure => 'absent',
+ require => Package['deltacloud-aggregator']}
+ package { 'iwhd':
+ provider => 'yum', ensure => 'absent',
+ require => [Package['deltacloud-aggregator'],
Service['iwhd']]}
+
+ # 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']}
+
+
+ ### Stop the deltacloud services
+ service { ['condor', 'httpd']:
+ ensure => 'stopped',
+ enable => false,
+ require => Service['deltacloud-aggregator',
+ 'deltacloud-condor_refreshd',
+ 'deltacloud-dbomatic'] }
+ service { ['deltacloud-aggregator',
+ 'deltacloud-condor_refreshd',
+ 'deltacloud-dbomatic']:
+ ensure => 'stopped',
+ enable => false,
+ hasstatus => true }
+
+ ### Destroy the deltacloud database
+ rails::drop::db{"drop_deltacloud_database":
+ cwd => "/usr/share/deltacloud-aggregator",
+ rails_env => "production",
+ require => Service["deltacloud-aggregator",
+ "deltacloud-condor_refreshd",
+ "deltacloud-dbomatic",
+ "deltacloud-image_builder_service"]}
+ postgres::user{"dcloud":
+ ensure => 'dropped',
+ require => Rails::Drop::Db["drop_deltacloud_database"]}
+}
+
+# Create a new site admin aggregator web user
+define deltacloud::site_admin($email="", $password="",
$first_name="", $last_name=""){
+ exec{"create_site_admin_user":
+ cwd => '/usr/share/deltacloud-aggregator',
+ environment => "RAILS_ENV=production",
+ command => "/usr/bin/rake dc:create_user[${name}] email=${email}
password=${password} first_name=${first_name} last_name=${last_name}",
+ unless => "/usr/bin/test `psql dcloud dcloud -P tuples_only -c
\"select count(*) from users where login = '${name}';\"` =
\"1\"",
+ require => Rails::Migrate::Db["migrate_deltacloud_database"]}
+ exec{"grant_site_admin_privs":
+ cwd => '/usr/share/deltacloud-aggregator',
+ environment => "RAILS_ENV=production",
+ command => "/usr/bin/rake dc:site_admin[${name}]",
+ unless => "/usr/bin/test `psql dcloud dcloud -P tuples_only -c
\"select count(*) FROM roles INNER JOIN permissions ON (roles.id =
permissions.role_id) INNER JOIN users ON (permissions.user_id = users.id) where roles.name
= 'Administrator' AND users.login = '${name}';\"` =
\"1\"",
+ require => Exec[create_site_admin_user]}
+}
diff --git a/recipes/deltacloud_recipe/manifests/core.pp
b/recipes/deltacloud_recipe/manifests/core.pp
new file mode 100644
index 0000000..381e76f
--- /dev/null
+++ b/recipes/deltacloud_recipe/manifests/core.pp
@@ -0,0 +1,33 @@
+# Deltacloud core puppet definitions
+
+class deltacloud::core inherits deltacloud {
+ ### Install the deltacloud components
+ package { 'rubygem-deltacloud-core':
+ provider => 'yum', ensure => 'installed'}
+ file { "/var/log/deltacloud-core": ensure => 'directory' }
+
+ ### we need to sync time to communicate w/ cloud providers
+ include ntp::client
+
+ ### Start the deltacloud services
+ file {"/etc/init.d/deltacloud-core":
+ source => "puppet:///modules/deltacloud_recipe/deltacloud-core",
+ mode => 755 }
+ service { 'deltacloud-core':
+ ensure => 'running',
+ enable => true,
+ require => [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']}
+
+ ### Stop the deltacloud services
+ service { 'deltacloud-core':
+ ensure => 'stopped',
+ enable => false}
+}
diff --git a/recipes/deltacloud_recipe/manifests/deltacloud.pp
b/recipes/deltacloud_recipe/manifests/deltacloud.pp
index 2d791a2..5746ccd 100644
--- a/recipes/deltacloud_recipe/manifests/deltacloud.pp
+++ b/recipes/deltacloud_recipe/manifests/deltacloud.pp
@@ -6,8 +6,14 @@ import "rails"
import "selinux"
import "ntp"
-# Setup repos which to pull deltacloud components
-define dc::repos(){
+import "aggregator"
+import "core"
+import "iwhd"
+import "image-factory"
+
+# Base deltacloud class
+class deltacloud {
+ # Setup repos which to pull deltacloud components
yumrepo{"${name}_arch":
name => "${name}_arch",
baseurl =>
'http://repos.fedorapeople.org/repos/deltacloud/appliance/fedora-$releasever/$basearch',
@@ -21,361 +27,3 @@ define dc::repos(){
baseurl =>
'http://repos.fedorapeople.org/repos/pulp/pulp/fedora-13/$basearch/',
enabled => 1, gpgcheck => 0}
}
-
-# Install the deltacloud components
-define dc::package::install(){
- case $name {
- 'aggregator': {
- # specific versions of these two packages are needed and we need to pull the third
in
- package { 'python-imgcreate':
- provider => 'rpm', ensure => installed,
- source =>
'http://repos.fedorapeople.org/repos/deltacloud/appliance/fedora-13/x86_64/python-imgcreate-031-1.fc12.1.x86_64.rpm'}
- package { 'livecd-tools':
- provider => 'rpm', ensure => installed,
- source =>
'http://repos.fedorapeople.org/repos/deltacloud/appliance/fedora-13/x86_64/livecd-tools-031-1.fc12.1.x86_64.rpm',
- require => Package['python-imgcreate']}
- package { 'appliance-tools':
- provider => 'yum', ensure => installed,
- require => Package["livecd-tools",
"python-imgcreate"] }
-
- # 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' }
-
- package { 'rubygem-deltacloud-client':
- provider => 'yum', ensure => 'installed' }
- package { 'rubygem-deltacloud-image-builder-agent':
- provider => 'yum', ensure => 'installed',
- require => Package['appliance-tools',
'livecd-tools', 'python-imgcreate', 'ec2-ami-tools']}
- package { 'iwhd':
- provider => 'yum', ensure => 'installed' }
-
-
- package {['deltacloud-aggregator',
- 'deltacloud-aggregator-daemons',
- 'deltacloud-aggregator-doc']:
- provider => 'yum', ensure => 'installed',
- require => Package['rubygem-deltacloud-client',
- 'rubygem-deltacloud-image-builder-agent',
- 'iwhd']}
- }
-
- 'core': {
- package { 'rubygem-deltacloud-core':
- provider => 'yum', ensure => 'installed'}
- file { "/var/log/deltacloud-core": ensure => 'directory' }
- }
- }
-}
-
-# Uninstall the deltacloud components
-define dc::package::uninstall(){
- case $name {
- 'aggregator': {
- 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'] }
- package { 'rubygem-deltacloud-client':
- provider => 'yum', ensure => 'absent',
- require => Package['deltacloud-aggregator']}
- package { 'rubygem-deltacloud-image-builder-agent':
- provider => 'yum', ensure => 'absent',
- require => Package['deltacloud-aggregator']}
- package { 'iwhd':
- provider => 'yum', ensure => 'absent',
- require => [Package['deltacloud-aggregator'],
Service['iwhd']]}
-
- # 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']}
-
- }
-
- 'core': {
- package { 'rubygem-deltacloud-core':
- provider => 'yum', ensure => 'absent',
- require => Service['deltacloud-core']}
- }
- }
-}
-
-# Setup selinux for deltacloud
-define dc::selinux(){
- selinux::mode{"permissive":}
-}
-
-# Setup firewall for deltacloud
-define dc::firewall(){
- firewall::rule{"http": destination_port => '80'}
-}
-
-# TODO disable selinux until we're sure everything works w/ it enabled
-
-# Start the deltacloud services
-define dc::service::start(){
- case $name {
- 'aggregator': {
- file {"/var/lib/condor/condor_config.local":
- source =>
"puppet:///modules/deltacloud_recipe/condor_config.local",
- require => Package['deltacloud-aggregator-daemons'] }
- service { ['condor', 'httpd']:
- ensure => 'running',
- enable => true,
- require => File['/var/lib/condor/condor_config.local'] }
- service { ['deltacloud-aggregator',
- 'deltacloud-condor_refreshd',
- 'deltacloud-dbomatic']:
- ensure => 'running',
- enable => true,
- hasstatus => true,
- require => [Package['deltacloud-aggregator-daemons'],
- Rails::Migrate::Db[migrate_deltacloud_database],
- Service[condor]] }
- }
-
- 'core': {
- include ntp::client # we need to sync time to communicate w/ cloud providers
- file {"/etc/init.d/deltacloud-core":
- source =>
"puppet:///modules/deltacloud_recipe/deltacloud-core",
- mode => 755 }
- service { 'deltacloud-core':
- ensure => 'running',
- enable => true,
- require => [Package['rubygem-deltacloud-core'],
- File['/etc/init.d/deltacloud-core']] }
- }
-
- 'iwhd': {
- file { "/data": ensure => 'directory' }
- file { "/data/db": ensure => 'directory' }
- service { 'mongod':
- ensure => 'running',
- enable => true,
- require => [Package['iwhd'], File["/data/db"]]}
- service { 'iwhd':
- ensure => 'running',
- enable => true,
- require => [Package['iwhd'],
- Service[mongod]]}
- }
-
- 'image-factory': {
- dc::configure_boxgrinder{'conf_bxg':}
- file { "/etc/qpidd.conf":
- source =>
"puppet:///modules/deltacloud_recipe/qpidd.conf",
- mode => 644 }
- service {'qpidd':
- ensure => 'running',
- enable => true,
- require => [File['/etc/qpidd.conf'],
- 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'],
- File['/etc/imagefactory.yml'],
- Service[qpidd],
- Rails::Migrate::Db[migrate_deltacloud_database],
- Dc::Configure_boxgrinder['conf_bxg']]
- service { 'imagefactoryd':
- ensure => 'running',
- enable => true,
- require => $requires}
- service { 'deltacloud-image_builder_service':
- ensure => 'running',
- enable => true,
- hasstatus => true,
- require => $requires}
- }
- }
-}
-
-# Stop the deltacloud services
-define dc::service::stop(){
- case $name {
- 'aggregator': {
- service { ['condor', 'httpd']:
- ensure => 'stopped',
- enable => false,
- require => Service['deltacloud-aggregator',
- 'deltacloud-condor_refreshd',
- 'deltacloud-dbomatic'] }
- service { ['deltacloud-aggregator',
- 'deltacloud-condor_refreshd',
- 'deltacloud-dbomatic']:
- ensure => 'stopped',
- enable => false,
- hasstatus => true }
- }
-
- 'core': {
- service { 'deltacloud-core':
- ensure => 'stopped',
- enable => false}
- }
-
- 'iwhd': {
- service { 'mongod':
- ensure => 'stopped',
- enable => false,
- require => Service[iwhd]}
- service { 'iwhd':
- ensure => 'stopped',
- enable => false}
- }
-
- 'image-factory': {
- service {'qpidd':
- ensure => 'stopped',
- enable => false,
- require => Service['imagefactoryd',
'deltacloud-image_builder_service']}
-
- service { 'imagefactoryd':
- ensure => 'stopped',
- enable => false}
-
- service { 'deltacloud-image_builder_service':
- ensure => 'stopped',
- hasstatus => true,
- enable => false}
- }
- }
-}
-
-# Configure boxgrinder, this should go into the boxgrinder rpms eventually
-define dc::configure_boxgrinder(){
- file { "/boxgrinder": ensure => "directory"}
- file { "/boxgrinder/appliances":
- ensure => "directory",
- require => File["/boxgrinder"]}
- file { "/boxgrinder/packaged_builders":
- ensure => "directory",
- require => File["/boxgrinder"]}
- file { "/root/.boxgrinder": ensure => "directory"}
- file { "/root/.boxgrinder/plugins":
- ensure => "directory",
- require => File["/root/.boxgrinder"]}
- file { "/root/.boxgrinder/plugins/local":
- source =>
"puppet:///modules/deltacloud_recipe/root-boxgrinder-plugins-local",
- mode => 644 }
-}
-
-# Configure pulp to fetch from Fedora
-# TODO uncomment when factory/warehouse uses pulp
-#exec{"pulp_fedora_config":
-# command => "/usr/bin/pulp-admin -u admin -p admin repo create
--id=fedora-repo --feed
yum:http://download.fedora.redhat.com/pub/fedora/linux/updates/13/x86_64/...
-#}
-
-# Create a named bucket in iwhd
-define dc::create_bucket(){
- package{'curl': ensure => 'installed'}
- # XXX ugly hack but iwhd might take some time to come up
- exec{"iwhd_startup_pause":
- command => "/bin/sleep 2",
- require => Service[iwhd]}
- exec{"create-bucket-${name}":
- command => "/usr/bin/curl -X PUT
http://localhost:9090/templates",
- require => [Exec['iwhd_startup_pause'], Package[curl]] }
-}
-
-# Initialize and start the deltacloud database
-define dc::db(){
- # Right now we configure and start postgres, at some point I want
- # to make the db that gets setup configurable
- file { "/var/lib/pgsql/data/pg_hba.conf":
- source => "puppet:///modules/deltacloud_recipe/pg_hba.conf",
- require => Exec["pginitdb"] }
- include postgres::server
- postgres::user{"dcloud":
- password => "v23zj59an",
- roles => "CREATEDB",
- require => Service["postgresql"]}
-
-
- # Create deltacloud database
- rails::create::db{"create_deltacloud_database":
- cwd => "/usr/share/deltacloud-aggregator",
- rails_env => "production",
- require => [Postgres::User[dcloud],
Package['deltacloud-aggregator']]}
- rails::migrate::db{"migrate_deltacloud_database":
- cwd => "/usr/share/deltacloud-aggregator",
- rails_env => "production",
- require => Rails::Create::Db[create_deltacloud_database]}
-}
-
-# Destroy the deltacloud database
-define dc::db::destroy(){
- rails::drop::db{"drop_deltacloud_database":
- cwd => "/usr/share/deltacloud-aggregator",
- rails_env => "production",
- require => Service["deltacloud-aggregator",
- "deltacloud-condor_refreshd",
- "deltacloud-dbomatic",
- "deltacloud-image_builder_service"]}
- postgres::user{"dcloud":
- ensure => 'dropped',
- require => Rails::Drop::Db["drop_deltacloud_database"]}
-}
-
-# Create a new site admin aggregator web user
-define dc::site_admin($email="", $password="",
$first_name="", $last_name=""){
- exec{"create_site_admin_user":
- cwd => '/usr/share/deltacloud-aggregator',
- environment => "RAILS_ENV=production",
- command => "/usr/bin/rake dc:create_user[${name}] email=${email}
password=${password} first_name=${first_name} last_name=${last_name}",
- unless => "/usr/bin/test `psql dcloud dcloud -P tuples_only -c
\"select count(*) from users where login = '${name}';\"` =
\"1\"",
- require => Rails::Migrate::Db["migrate_deltacloud_database"]}
- exec{"grant_site_admin_privs":
- cwd => '/usr/share/deltacloud-aggregator',
- environment => "RAILS_ENV=production",
- command => "/usr/bin/rake dc:site_admin[${name}]",
- unless => "/usr/bin/test `psql dcloud dcloud -P tuples_only -c
\"select count(*) FROM roles INNER JOIN permissions ON (roles.id =
permissions.role_id) INNER JOIN users ON (permissions.user_id = users.id) where roles.name
= 'Administrator' AND users.login = '${name}';\"` =
\"1\"",
- require => Exec[create_site_admin_user]}
-}
-
-# Destroy and cleanup deltacloud artifacts
-define dc::cleanup(){
- exec{"remove_deltacloud_templates": command => "/bin/rm -rf
/templates"}
- exec{"remove_boxgrinder_dir": command => "/bin/rm -rf
/boxgrinder"}
-}
diff --git a/recipes/deltacloud_recipe/manifests/image-factory.pp
b/recipes/deltacloud_recipe/manifests/image-factory.pp
new file mode 100644
index 0000000..0888dd8
--- /dev/null
+++ b/recipes/deltacloud_recipe/manifests/image-factory.pp
@@ -0,0 +1,80 @@
+# Deltacloud image factory puppet definitions
+
+class deltacloud::image-factory inherits deltacloud {
+ ### Configure boxgrinder, this should go into the boxgrinder rpms eventually
+ file { "/boxgrinder": ensure => "directory"}
+ file { "/boxgrinder/appliances":
+ ensure => "directory",
+ require => File["/boxgrinder"]}
+ file { "/boxgrinder/packaged_builders":
+ ensure => "directory",
+ require => File["/boxgrinder"]}
+ file { "/root/.boxgrinder": ensure => "directory"}
+ file { "/root/.boxgrinder/plugins":
+ ensure => "directory",
+ require => File["/root/.boxgrinder"]}
+ file { "/root/.boxgrinder/plugins/local":
+ source =>
"puppet:///modules/deltacloud_recipe/root-boxgrinder-plugins-local",
+ mode => 644,
+ require => File["/root/.boxgrinder/plugins"]}
+ notify { 'boxgrinder_configured':
+ message => 'boxgrinder successfully configured',
+ require => File['/root/.boxgrinder/plugins/local',
+ '/boxgrinder/packaged_builders',
+ '/boxgrinder/appliances'] }
+
+ ### Configure pulp to fetch from Fedora
+ # TODO uncomment when factory/warehouse uses pulp
+ #exec{"pulp_fedora_config":
+ # command => "/usr/bin/pulp-admin -u admin -p admin repo create
--id=fedora-repo --feed
yum:http://download.fedora.redhat.com/pub/fedora/linux/updates/13/x86_64/...
+ #}
+
+ ### Start the deltacloud services
+ file { "/etc/qpidd.conf":
+ source => "puppet:///modules/deltacloud_recipe/qpidd.conf",
+ mode => 644 }
+ service {'qpidd':
+ ensure => 'running',
+ enable => true,
+ require => [File['/etc/qpidd.conf'],
+ 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'],
+ File['/etc/imagefactory.yml'],
+ Service[qpidd],
+ Rails::Migrate::Db[migrate_deltacloud_database],
+ Notify['boxgrinder_configured']]
+ service { 'imagefactoryd':
+ ensure => 'running',
+ enable => true,
+ require => $requires}
+ service { 'deltacloud-image_builder_service':
+ ensure => 'running',
+ enable => true,
+ hasstatus => true,
+ require => $requires}
+}
+
+class deltacloud::image-factory::disabled {
+ ### Stop the deltacloud services
+ service {'qpidd':
+ ensure => 'stopped',
+ enable => false,
+ require => Service['imagefactoryd',
'deltacloud-image_builder_service']}
+
+ service { 'imagefactoryd':
+ ensure => 'stopped',
+ enable => false}
+
+ service { 'deltacloud-image_builder_service':
+ ensure => 'stopped',
+ hasstatus => true,
+ enable => false}
+
+ ### Destroy and cleanup deltacloud artifacts
+ exec{"remove_deltacloud_templates": command => "/bin/rm -rf
/templates"}
+ exec{"remove_boxgrinder_dir": command => "/bin/rm -rf
/boxgrinder"}
+}
diff --git a/recipes/deltacloud_recipe/manifests/iwhd.pp
b/recipes/deltacloud_recipe/manifests/iwhd.pp
new file mode 100644
index 0000000..9711b75
--- /dev/null
+++ b/recipes/deltacloud_recipe/manifests/iwhd.pp
@@ -0,0 +1,40 @@
+# Deltacloud iwhd puppet definitions
+
+class deltacloud::iwhd inherits deltacloud {
+ ### Start the deltacloud services
+ file { "/data": ensure => 'directory' }
+ file { "/data/db": ensure => 'directory' }
+ service { 'mongod':
+ ensure => 'running',
+ enable => true,
+ require => [Package['iwhd'], File["/data/db"]]}
+ service { 'iwhd':
+ ensure => 'running',
+ enable => true,
+ require => [Package['iwhd'],
+ Service[mongod]]}
+}
+
+class deltacloud::iwhd::disabled {
+ ### Stop the deltacloud services
+ service { 'mongod':
+ ensure => 'stopped',
+ enable => false,
+ require => Service[iwhd]}
+ service { 'iwhd':
+ ensure => 'stopped',
+ enable => false,
+ hasstatus => true}
+}
+
+# Create a named bucket in iwhd
+define deltacloud::create_bucket(){
+ package{'curl': ensure => 'installed'}
+ # XXX ugly hack but iwhd might take some time to come up
+ exec{"iwhd_startup_pause":
+ command => "/bin/sleep 2",
+ require => Service[iwhd]}
+ exec{"create-bucket-${name}":
+ command => "/usr/bin/curl -X PUT
http://localhost:9090/templates",
+ require => [Exec['iwhd_startup_pause'], Package[curl]] }
+}
--
1.7.2.3