summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Radez <dradez@redhat.com>2015-01-26 15:40:43 -0500
committerDan Radez <dradez@redhat.com>2015-01-26 16:04:55 -0500
commit09247c2eca21891be5b04eda08a23d4a866a3b84 (patch)
treea1b0bdbc71867537779605ea91c6673ce6e5aba4
parent557e59792133b3c1867170126f3e646018abc388 (diff)
adding puppet code for installation
Change-Id: I97fa75fdef058e64666dc73567cdce904d6ffc72 Signed-off-by: Dan Radez <dradez@redhat.com>
-rw-r--r--puppet.md6
-rw-r--r--puppet/opnfv/manifests/compute.pp78
-rw-r--r--puppet/opnfv/manifests/controller.pp106
-rw-r--r--puppet/opnfv/manifests/init.pp10
-rw-r--r--puppet/opnfv/manifests/network.pp50
5 files changed, 247 insertions, 3 deletions
diff --git a/puppet.md b/puppet.md
index 0869be9..949c105 100644
--- a/puppet.md
+++ b/puppet.md
@@ -3,8 +3,8 @@
---
## Puppet modules
-###trystack (quickstack branch)
-[https://github.com/trystack/puppet-trystack/tree/quickstack](https://github.com/trystack/puppet-trystack/tree/quickstack)
+###genesis
+[https://gerrit.opnfv.org/gerrit/genesis](https://gerrit.opnfv.org/gerrit/genesis)
This module is a small set of puppet code. Its intention is mostly to glue the variables in foreman to the quickstack module. These classes could also be used as a site.pp node manifest for running a puppet apply.
@@ -26,7 +26,7 @@ The fork is necessary because there is a patch on this fork to teach quickstack
Once this patch is merged the upstream astapor module can be cloned from upstream at
[https://github.com/redhat-openstack/astapor](https://github.com/redhat-openstack/astapor).
-### openstack-puppet-modules (OPM)
+### openstack-puppet-modules (OPM)
*or the stackforge puppet modules*
[https://repos.fedorapeople.org/repos/openstack/openstack-juno/epel-7/](https://repos.fedorapeople.org/repos/openstack/openstack-juno/epel-7/)
diff --git a/puppet/opnfv/manifests/compute.pp b/puppet/opnfv/manifests/compute.pp
new file mode 100644
index 0000000..696f671
--- /dev/null
+++ b/puppet/opnfv/manifests/compute.pp
@@ -0,0 +1,78 @@
+class opnfv::compute {
+
+ if $private_ip == '' { fail('private_ip is empty') }
+ if $mysql_ip == '' { fail('mysql_ip is empty') }
+ if $amqp_ip == '' { fail('mysql_ip is empty') }
+
+ if $admin_password == '' { fail('admin_password is empty') }
+
+ if $nova_user_password == '' { fail('nova_user_password is empty') }
+ if $nova_db_password == '' { fail('nova_db_password is empty') }
+
+ if $neutron_user_password == '' { fail('nova_user_password is empty') }
+ if $neutron_db_password == '' { fail('nova_db_password is empty') }
+
+ if $ceilometer_user_password == '' { fail('ceilometer_user_password is empty') }
+ if $ceilometer_metering_secret == '' { fail('ceilometer_user_password is empty') }
+
+ class { "quickstack::neutron::compute":
+ auth_host => $private_ip,
+ glance_host => $private_ip,
+ libvirt_images_rbd_pool => 'volumes',
+ libvirt_images_rbd_ceph_conf => '/etc/ceph/ceph.conf',
+ libvirt_inject_password => 'false',
+ libvirt_inject_key => 'false',
+ libvirt_images_type => 'rbd',
+ nova_host => $private_ip,
+ nova_db_password => $nova_db_password,
+ nova_user_password => $nova_user_password,
+ private_network => '',
+ private_iface => '',
+ private_ip => '',
+ rbd_user => 'volumes',
+ rbd_secret_uuid => '',
+ network_device_mtu => $quickstack::params::network_device_mtu,
+
+ admin_password => $admin_password,
+ ssl => false,
+
+ mysql_host => $mysql_ip,
+ mysql_ca => $quickstack::params::mysql_ca,
+ amqp_host => $amqp_ip,
+ amqp_username => 'guest',
+ amqp_password => 'guest',
+ #amqp_nssdb_password => $quickstack::params::amqp_nssdb_password,
+
+ ceilometer => 'true',
+ ceilometer_metering_secret => $ceilometer_metering_secret,
+ ceilometer_user_password => $ceilometer_user_password,
+
+ cinder_backend_gluster => $quickstack::params::cinder_backend_gluster,
+
+ agent_type => 'ovs',
+ enable_tunneling => true,
+
+ neutron_db_password => $neutron_db_password,
+ neutron_user_password => $neutron_user_password,
+ neutron_host => $private_ip,
+
+ #ovs_bridge_mappings = $quickstack::params::ovs_bridge_mappings,
+ #ovs_bridge_uplinks = $quickstack::params::ovs_bridge_uplinks,
+ #ovs_vlan_ranges = $quickstack::params::ovs_vlan_ranges,
+ ovs_tunnel_iface => 'em1',
+ ovs_tunnel_network => '',
+ ovs_l2_population => 'True',
+ ml2_mechanism_drivers => ['opendaylight'],
+ odl_controller_ip => '10.1.254.4',
+
+ tenant_network_type => 'vxlan',
+ tunnel_id_ranges => '1:1000',
+ #ovs_vxlan_udp_port = $quickstack::params::ovs_vxlan_udp_port,
+ ovs_tunnel_types => ['vxlan'],
+
+ verbose => $quickstack::params::verbose,
+ security_group_api => 'neutron',
+
+ }
+
+}
diff --git a/puppet/opnfv/manifests/controller.pp b/puppet/opnfv/manifests/controller.pp
new file mode 100644
index 0000000..5c9e140
--- /dev/null
+++ b/puppet/opnfv/manifests/controller.pp
@@ -0,0 +1,106 @@
+class opnfv::controller {
+
+ if $admin_email == '' { fail('admin_email is empty') }
+ if $admin_password == '' { fail('admin_password is empty') }
+
+ if $public_ip == '' { fail('public_ip is empty') }
+ if $private_ip == '' { fail('private_ip is empty') }
+
+ if $mysql_ip == '' { fail('mysql_ip is empty') }
+ if $mysql_root_password == '' { fail('mysql_root_password is empty') }
+ if $amqp_ip == '' { fail('mysql_ip is empty') }
+
+ if $memcache_ip == '' { fail('memcache_ip is empty') }
+ if $neutron_ip == '' { fail('neutron_ip is empty') }
+
+ if $keystone_admin_token == '' { fail('keystone_admin_token is empty') }
+ if $keystone_db_password == '' { fail('keystone_db_password is empty') }
+
+ if $horizon_secret_key == '' { fail('horizon_secret_key is empty') }
+
+ if $nova_user_password == '' { fail('nova_user_password is empty') }
+ if $nova_db_password == '' { fail('nova_db_password is empty') }
+
+ if $cinder_user_password == '' { fail('cinder_user_password is empty') }
+ if $cinder_db_password == '' { fail('cinder_db_password is empty') }
+
+ if $glance_user_password == '' { fail('glance_user_password is empty') }
+ if $glance_db_password == '' { fail('glance_db_password is empty') }
+
+ if $neutron_user_password == '' { fail('neutron_user_password is empty') }
+ if $neutron_db_password == '' { fail('neutron_db_password is empty') }
+ if $neutron_metadata_shared_secret == '' { fail('neutron_metadata_shared_secret is empty') }
+
+ if $ceilometer_user_password == '' { fail('ceilometer_user_password is empty') }
+ if $ceilometer_metering_secret == '' { fail('ceilometer_user_password is empty') }
+
+ if $heat_user_password == '' { fail('heat_user_password is empty') }
+ if $heat_db_password == '' { fail('heat_db_password is empty') }
+ if $heat_auth_encrypt_key == '' { fail('heat_auth_encrypt_key is empty') }
+
+ if $swift_user_password == '' { fail('swift_user_password is empty') }
+ if $swift_shared_secret == '' { fail('swift_shared_secret is empty') }
+ if $swift_admin_password == '' { fail('swift_admin_password is empty') }
+
+ class { "quickstack::neutron::controller":
+ admin_email => $admin_email,
+ admin_password => $admin_password,
+ controller_admin_host => $private_ip,
+ controller_priv_host => $private_ip,
+ controller_pub_host => $public_ip,
+ ssl => false,
+ #support_profile => $quickstack::params::support_profile,
+ #freeipa => $quickstack::params::freeipa,
+
+ mysql_host => $mysql_ip,
+ mysql_root_password => $mysql_root_password,
+ #amqp_provider => $amqp_provider,
+ amqp_host => $amqp_ip,
+ amqp_username => 'guest',
+ amqp_password => 'guest',
+ #amqp_nssdb_password => $quickstack::params::amqp_nssdb_password,
+
+ keystone_admin_token => $keystone_admin_token,
+ keystone_db_password => $keystone_db_password,
+
+ ceilometer_metering_secret => $ceilometer_metering_secret,
+ ceilometer_user_password => $ceilometer_user_password,
+
+ cinder_backend_gluster => $quickstack::params::cinder_backend_gluster,
+ cinder_backend_gluster_name => $quickstack::params::cinder_backend_gluster_name,
+ cinder_gluster_shares => $quickstack::params::cinder_gluster_shares,
+ cinder_user_password => $cinder_user_password,
+ cinder_db_password => $cinder_db_password,
+
+ glance_db_password => $glance_db_password,
+ glance_user_password => $glance_user_password,
+
+ heat_cfn => true,
+ heat_cloudwatch => true,
+ heat_db_password => $heat_db_password,
+ heat_user_password => $heat_user_password,
+ heat_auth_encrypt_key => $heat_auth_encrypt_key,
+
+ horizon_secret_key => $horizon_secret_key,
+ horizon_ca => $quickstack::params::horizon_ca,
+ horizon_cert => $quickstack::params::horizon_cert,
+ horizon_key => $quickstack::params::horizon_key,
+
+ #neutron => true,
+ neutron_metadata_proxy_secret => $neutron_metadata_shared_secret,
+ neutron_db_password => $neutron_db_password,
+ neutron_user_password => $neutron_user_password,
+ ml2_mechanism_drivers => ['opendaylight'],
+ odl_controller_ip => '10.1.254.4',
+
+ nova_db_password => $nova_db_password,
+ nova_user_password => $nova_user_password,
+
+ swift_shared_secret => $swift_shared_secret,
+ swift_admin_password => $swift_admin_password,
+ swift_ringserver_ip => '192.168.203.1',
+ swift_storage_ips => ["192.168.203.2","192.168.203.3","192.168.203.4"],
+ swift_storage_device => 'device1',
+ }
+
+}
diff --git a/puppet/opnfv/manifests/init.pp b/puppet/opnfv/manifests/init.pp
new file mode 100644
index 0000000..9c00fdd
--- /dev/null
+++ b/puppet/opnfv/manifests/init.pp
@@ -0,0 +1,10 @@
+class opnfv {
+ # cent rpms don't setup selinux
+ # correctly for ovs to set odl as
+ # its manager. disabling it till
+ # that's fixed.
+ exec {'disable selinux':
+ command => '/usr/sbin/setenforce 0',
+ unless => '/usr/sbin/getenforce | grep Permissive',
+ }
+}
diff --git a/puppet/opnfv/manifests/network.pp b/puppet/opnfv/manifests/network.pp
new file mode 100644
index 0000000..37cc75e
--- /dev/null
+++ b/puppet/opnfv/manifests/network.pp
@@ -0,0 +1,50 @@
+class opnfv::network {
+
+ if $private_ip == '' { fail('private_ip is empty') }
+ if $mysql_ip == '' { fail('mysql_ip is empty') }
+ if $amqp_ip == '' { fail('amqp_ip is empty') }
+ if $opendaylight_ip == '' { fail('opendaylight_ip is empty') }
+
+
+ if $nova_user_password == '' { fail('nova_user_password is empty') }
+ if $nova_db_password == '' { fail('nova_db_password is empty') }
+
+ if $neutron_user_password == '' { fail('neutron_user_password is empty') }
+ if $neutron_db_password == '' { fail('neutron_db_password is empty') }
+ if $neutron_metadata_shared_secret == '' { fail('neutron_metadata_shared_secret is empty') }
+
+ class { "opendaylight":
+ features => ['odl-base-all','odl-aaa-authn','odl-restconf',
+ 'odl-nsf-all','odl-adsal-northbound','odl-mdsal-apidocs',
+ 'odl-ovsdb-openstack','odl-ovsdb-northbound','odl-dlux-core'],
+ }
+
+
+ class { "quickstack::neutron::networker":
+ require => Class['opendaylight'],
+ neutron_metadata_proxy_secret => $neutron_metadata_shared_secret,
+ neutron_db_password => $neutron_db_password,
+ neutron_user_password => $neutron_user_password,
+ nova_db_password => $nova_db_password,
+ nova_user_password => $nova_user_password,
+
+ controller_priv_host => $private_ip,
+
+ agent_type => 'ovs',
+ enable_tunneling => true,
+ ovs_tunnel_iface => 'em1',
+ ovs_tunnel_network => '',
+ ovs_l2_population => 'True',
+ ovs_tunnel_types => ['vxlan'],
+ external_network_bridge => 'br-ex',
+ tenant_network_type => 'vxlan',
+ tunnel_id_ranges => '1:1000',
+ ml2_mechanism_drivers => ['opendaylight'],
+ odl_controller_ip => $opendaylight_ip,
+
+ mysql_host => $mysql_ip,
+ amqp_host => $amqp_ip,
+ amqp_username => 'guest',
+ amqp_password => 'guest',
+ }
+}