After this patch we now have the ability to setup different
profiles of aeolus components to install and seed data to
initialize.
As these profiles are based on the node yml and puppet recipes,
they can be fully automated as well as manually generated with
an interactive installer (see the next patch)
---
bin/aeolus-cleanup | 6 ++-
bin/aeolus-configure | 26 +++++++++++---
conf/default_cleanup | 2 -
conf/default_configure | 13 +------
conf/default_custom | 7 ++++
recipes/aeolus/manifests/conductor.pp | 35 ------------------
recipes/aeolus/manifests/init.pp | 3 ++
recipes/aeolus/manifests/profiles/custom.pp | 25 +++++++++++++
recipes/aeolus/manifests/profiles/default.pp | 51 ++++++++++++++++++++++++++
9 files changed, 112 insertions(+), 56 deletions(-)
create mode 100644 conf/default_custom
create mode 100644 recipes/aeolus/manifests/profiles/custom.pp
create mode 100644 recipes/aeolus/manifests/profiles/default.pp
diff --git a/bin/aeolus-cleanup b/bin/aeolus-cleanup
index bdbbacd..8e3abcd 100644
--- a/bin/aeolus-cleanup
+++ b/bin/aeolus-cleanup
@@ -31,11 +31,13 @@ while true ; do
esac
done
+PUPPET_NODE='cleanup'
+
export FACTER_AEOLUS_ENABLE_HTTPS=true
export FACTER_AEOLUS_ENABLE_SECURITY=false
-puppet /usr/share/aeolus-configure/modules/aeolus/manifests/defaults.pp \
+puppet /usr/share/aeolus-configure/aeolus.pp \
--modulepath=/usr/share/aeolus-configure/modules/ \
- --external_nodes '/usr/sbin/aeolus-node cleanup' --node_terminus exec \
+ --external_nodes "/usr/sbin/aeolus-node $PUPPET_NODE" --node_terminus
exec \
--logdest=/var/log/aeolus-configure/aeolus-cleanup.log \
--logdest=console \
$LOGLEVEL
diff --git a/bin/aeolus-configure b/bin/aeolus-configure
index 310b76e..2798c7b 100644
--- a/bin/aeolus-configure
+++ b/bin/aeolus-configure
@@ -4,39 +4,55 @@ usage()
cat << EOF
USAGE:
-aeolus-configure [-d|--debug] [-h|--help] [-v|--verbose]
+aeolus-configure [-d|--debug] [-h|--help] [-v|--verbose] [-i|--interactive]
OPTIONS:
-h | --help Show this message.
-d | --debug Debug logging mode.
-v | --verbose Verbose logging mode.
+ -i | --interactive Interactive installer.
EOF
}
-args=`getopt -o :hdv --long help,debug,verbose -- "$@"`
+args=`getopt -o :hdvi --long help,debug,verbose,interactive -- "$@"`
if test $? != 0
then
usage
exit 1
fi
+INTERACTIVE=1
+
eval set -- $args
while true ; do
case "$1" in
-h|--help) usage ; exit 1 ; shift ;;
-d|--debug) LOGLEVEL="--debug" ; shift ;;
-v|--verbose) LOGLEVEL="--verbose" ; shift ;;
+ -i|--interactive) INTERACTIVE=0 ; shift ;;
--) shift ; break ;;
*) usage ; exit 1 ;;
esac
done
+PUPPET_NODE='configure'
+
+if [[ $INTERACTIVE -eq 0 ]] ; then
+PUPPET_NODE='custom'
+/usr/bin/ruby /usr/share/aeolus-configure/cli.rb
+if [ $? == 1 ] ; then
+echo
+exit
+fi
+fi
+
+echo "Launching aeolus configuration recipe..."
+
export FACTER_AEOLUS_ENABLE_HTTPS=true
export FACTER_AEOLUS_ENABLE_SECURITY=false
-puppet /usr/share/aeolus-configure/modules/aeolus/manifests/defaults.pp \
+puppet /usr/share/aeolus-configure/aeolus.pp \
--modulepath=/usr/share/aeolus-configure/modules/ \
- --external_nodes '/usr/sbin/aeolus-node configure' --node_terminus exec \
+ --external_nodes "/usr/sbin/aeolus-node $PUPPET_NODE" --node_terminus
exec \
--logdest=/var/log/aeolus-configure/aeolus-configure.log \
--logdest=console \
$LOGLEVEL
-
diff --git a/conf/default_cleanup b/conf/default_cleanup
index d43e906..5a5ce55 100644
--- a/conf/default_cleanup
+++ b/conf/default_cleanup
@@ -20,5 +20,3 @@ classes:
- aeolus::conductor::remove_seed_data
# Uncomment this to clean up RHEV details
#- aeolus::rhevm::disabled
-# Uncomment to remove vmware
-#- aeolus::vmware::disabled
diff --git a/conf/default_configure b/conf/default_configure
index 33ac7e1..a047b5d 100644
--- a/conf/default_configure
+++ b/conf/default_configure
@@ -25,21 +25,10 @@ parameters:
# rhevm_deltacloud_username: username@fqdn
# rhevm_deltacloud_password: password
# rhevm_deltacloud_powershell_url:
https://rhevm.server.com:8543/rhevm-api-powershell
-#
-# Uncomment this section and provide appropriate values to configure vmware
-# vmware_api_endpoint:
vsphere.server.com
-# vmware_username: username
-# vmware_password: password
-# vmware_datastore: datastore
-# vmware_network_name: network_name
-# vmware_deltacloud_port: 3006
classes:
- aeolus::conductor
- aeolus::image-factory
- aeolus::iwhd
-- aeolus::conductor::seed_data
+- aeolus::profiles::default
# Uncomment this section to include rhev setup
#- aeolus::rhevm
-#
-# Uncomment this section to include vmware setup
-#- aeolus::vmware
diff --git a/conf/default_custom b/conf/default_custom
new file mode 100644
index 0000000..1e7f7aa
--- /dev/null
+++ b/conf/default_custom
@@ -0,0 +1,7 @@
+---
+parameters:
+ enable_https: true
+ enable_security: false
+classes:
+CUSTOM_CLASSES
+- aeolus::profiles::custom
diff --git a/recipes/aeolus/manifests/conductor.pp
b/recipes/aeolus/manifests/conductor.pp
index 985b883..5df47e9 100644
--- a/recipes/aeolus/manifests/conductor.pp
+++ b/recipes/aeolus/manifests/conductor.pp
@@ -112,41 +112,6 @@ class aeolus::conductor inherits aeolus {
enable => 'true' }
}
-class aeolus::conductor::seed_data {
- aeolus::create_bucket{"aeolus":}
-
- aeolus::site_admin{"$admin_user":
- email => 'dcuser(a)aeolusproject.org',
- password => "$admin_password",
- first_name => 'aeolus',
- last_name => 'user'}
-
- aeolus::provider{"mock":
- type => 'mock',
- port => 3002,
- require => Aeolus::Site_admin["admin"] }
-
- aeolus::provider{"ec2-us-east-1":
- type => 'ec2',
- endpoint => 'us-east-1',
- port => 3003,
- require => Aeolus::Site_admin["admin"] }
-
- aeolus::provider{"ec2-us-west-1":
- type => 'ec2',
- endpoint => 'us-west-1',
- port => 3004,
- require => Aeolus::Site_admin["admin"] }
-
- aeolus::conductor::hwp{"hwp1":
- memory => "512",
- cpu => "1",
- storage => "",
- architecture => "x86_64",
- require => Aeolus::Site_admin["admin"] }
-
-}
-
class aeolus::conductor::remove_seed_data {
aeolus::deltacloud::disabled{"mock": }
aeolus::deltacloud::disabled{"ec2-us-east-1": }
diff --git a/recipes/aeolus/manifests/init.pp b/recipes/aeolus/manifests/init.pp
index 7768733..f7f7bca 100644
--- a/recipes/aeolus/manifests/init.pp
+++ b/recipes/aeolus/manifests/init.pp
@@ -13,6 +13,9 @@ import "image-factory"
import "rhevm"
import "vmware"
+import "defaults"
+import "profiles/*"
+
if $aeolus_enable_https == "true" or $aeolus_enable_https == "1" {
import "openssl"
$enable_https = true
diff --git a/recipes/aeolus/manifests/profiles/custom.pp
b/recipes/aeolus/manifests/profiles/custom.pp
new file mode 100644
index 0000000..2e1134e
--- /dev/null
+++ b/recipes/aeolus/manifests/profiles/custom.pp
@@ -0,0 +1,25 @@
+class aeolus::profiles::custom {
+
+aeolus::create_bucket{"aeolus":}
+
+aeolus::conductor::site_admin{"admin":
+ email => 'dcuser(a)aeolusproject.org',
+ password => "password",
+ first_name => 'aeolus',
+ last_name => 'user'}
+
+aeolus::conductor::login{"admin": password => "password",
+ require => Aeolus::Conductor::Site_admin['admin']}
+
+AEOLUS_SEED_DATA
+
+aeolus::conductor::hwp{"hwp1":
+ memory => "1",
+ cpu => "1",
+ storage => "1",
+ architecture => "x86_64",
+ require => Aeolus::Conductor::Login["admin"] }
+
+aeolus::conductor::logout{"admin":
+ require => [AEOLUS_SEED_DATA_REQUIRESAeolus::Conductor::Hwp["hwp1"]] }
+}
diff --git a/recipes/aeolus/manifests/profiles/default.pp
b/recipes/aeolus/manifests/profiles/default.pp
new file mode 100644
index 0000000..c464f2b
--- /dev/null
+++ b/recipes/aeolus/manifests/profiles/default.pp
@@ -0,0 +1,51 @@
+class aeolus::profiles::default {
+
+ aeolus::create_bucket{"aeolus":}
+
+ aeolus::conductor::site_admin{"admin":
+ email => 'dcuser(a)aeolusproject.org',
+ password => "password",
+ first_name => 'aeolus',
+ last_name => 'user'}
+
+ aeolus::conductor::login{"admin": password => "password",
+ require => Aeolus::Conductor::Site_admin['admin']}
+
+ aeolus::provider{"mock":
+ type => 'mock',
+ port => 3002,
+ require => Aeolus::Conductor::Login["admin"] }
+ aeolus::conductor::provider::account{"mockuser":
+ provider => 'mock',
+ type => 'mock',
+ username => 'mockuser',
+ password => 'mockpassword',
+ require => Aeolus::Provider["mock"] }
+
+ aeolus::provider{"ec2-us-east-1":
+ type => 'ec2',
+ endpoint => 'us-east-1',
+ port => 3003,
+ require => Aeolus::Conductor::Login["admin"] }
+
+ aeolus::provider{"ec2-us-west-1":
+ type => 'ec2',
+ endpoint => 'us-west-1',
+ port => 3004,
+ require => Aeolus::Conductor::Login["admin"] }
+
+ aeolus::conductor::hwp{"hwp1":
+ memory => "1",
+ cpu => "1",
+ storage => "1",
+ architecture => "x86_64",
+ require => Aeolus::Conductor::Login["admin"] }
+
+ aeolus::conductor::logout{"admin":
+ require => [Aeolus::Provider['mock'],
+ Aeolus::Conductor::Provider::Account['mockuser'],
+ Aeolus::Provider['ec2-us-east-1'],
+ Aeolus::Provider['ec2-us-west-1'],
+ Aeolus::Conductor::Hwp['hwp1']] }
+
+}
--
1.7.6