From 5b79a29f10d8bec7de519ca40478c60939b0a957 Mon Sep 17 00:00:00 2001 From: Tim Rozet Date: Wed, 1 Apr 2015 12:05:02 -0400 Subject: [PATCH] Adds HA and Ceph-Cinder backend to compute node PATCH SET3: Fixes whitespace: L21, L26 Changes to the module include: - ha_flag used to indicate mandatory HA parameters, such as vips for each openstack service, instead of one single controller IP. - Ceph variables introduced and defaulted for use with Cinder. Control node also uses these same defaults, along with the Ceph installer. - Minor fix for vnc proxy to work inside of Horizon for compute node when consoling in. JIRA: BGS-6 Change-Id: I61a2ebc5598e7c044a8b3d694de3daceaabcf53b Signed-off-by: Tim Rozet --- common/puppet-opnfv/manifests/compute.pp | 148 +++++++++++++++++++++---------- 1 file changed, 102 insertions(+), 46 deletions(-) diff --git a/common/puppet-opnfv/manifests/compute.pp b/common/puppet-opnfv/manifests/compute.pp index fdef9c7..7bba609 100644 --- a/common/puppet-opnfv/manifests/compute.pp +++ b/common/puppet-opnfv/manifests/compute.pp @@ -11,68 +11,128 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +# +#Provides a manifest to configure OpenStack compute node in HA or non-HA +#environment, with Ceph configured as Cinder backend storage. +#ha_flag set to true will use virtual IP addresses (VIPs provided by +#global params) as the provider to the compute node for HA class opnfv::compute { - if ($odl_flag != '') and str2bool($odl_flag) { + if ($odl_flag != '') and str2bool($odl_flag) { $ml2_mech_drivers = ['opendaylight'] $this_agent = 'opendaylight' } else { - $ml2_mech_drivers = ['openvswitch','l2population'] + $ml2_mech_drivers = ['openvswitch','l2population'] $this_agent = 'ovs' } + ##Common Parameters if $ovs_tunnel_if == '' { fail('ovs_tunnel_if is empty') } - if $private_ip == '' { fail('private_ip is empty') } - if $odl_control_ip == '' { $odl_control_ip = $private_ip } - - 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') } + if !$rbd_secret_uuid { $rbd_secret_uuid = '3b519746-4021-4f72-957e-5b9d991723be' } + if !$private_subnet { fail('private_subnet is empty')} + if !$ceph_public_network { $ceph_public_network = $private_subnet } + if !$ceph_fsid { $ceph_fsid = '904c8491-5c16-4dae-9cc3-6ce633a7f4cc' } + if !$ceph_images_key { $ceph_images_key = 'AQAfHBdUKLnUFxAAtO7WPKQZ8QfEoGqH0CLd7A==' } + if !$ceph_osd_journal_size { $ceph_osd_journal_size = '1000' } + if !$ceph_osd_pool_size { $ceph_osd_pool_size = '1' } + if !$ceph_volumes_key { $ceph_volumes_key = 'AQAfHBdUsFPTHhAAfqVqPq31FFCvyyO7oaOQXw==' } + + + ##Most users will only care about a single user/password for all services + ##so lets create one variable that can be used instead of separate usernames/passwords + if !$single_username { $single_username = 'octopus' } + if !$single_password { $single_password = 'octopus' } + + if !$admin_password { $admin_password = $single_password } + if !$neutron_db_password { $neutron_db_password = $single_password } + if !$neutron_user_password { $neutron_user_password = $single_password } + + if !$ceilometer_user_password { $ceilometer_user_password = $single_password } + if !$ceilometer_metering_secret { $ceilometer_metering_secret = $single_password } + + ##HA Global params + if $ha_flag { + if !$keystone_private_vip { fail('keystone_private_vip is empty') } + if !$glance_private_vip { fail('glance_private_vip is empty') } + if !$nova_private_vip { fail('nova_private_vip is empty') } + if !$nova_db_password { $nova_db_password = $single_password } + if !$nova_user_password { $nova_user_password = $single_password } + if !$controllers_ip_array { fail('controllers_ip_array is empty') } + if !$controllers_hostnames_array { fail('controllers_hostnames_array is empty') } + $controllers_ip_array = split($controllers_ip_array, ',') + $controllers_hostnames_array = split($controllers_hostnames_array, ',') + if !$odl_control_ip { $odl_control_ip = $controllers_ip_array[0] } + if !$db_vip { fail('db_vip is empty') } + $mysql_ip = $db_vip + if !$amqp_vip { fail('amqp_vip is empty') } + $amqp_ip = $amqp_vip + if !$amqp_username { $amqp_username = $single_username } + if !$amqp_password { $amqp_password = $single_password } + if !$ceph_mon_initial_members { $ceph_mon_initial_members = $controllers_hostnames_array } + if !$ceph_mon_host { $ceph_mon_host = $controllers_ip_array } + if !$neutron_private_vip { fail('neutron_private_vip is empty') } + } else { + ##non HA params + if !$private_ip { fail('private_ip is empty') } + $keystone_private_vip = $private_ip + $glance_private_vip = $private_ip + $nova_private_vip = $private_ip + $neutron_private_vip = $private_ip + if !$nova_db_password { fail('nova_db_password is empty') } + if !$nova_user_password { fail('nova_user_password is empty') } + if !$odl_control_ip { $odl_control_ip = $private_ip } + if !$mysql_ip { $mysql_ip = $private_ip } + if !$amqp_ip { $amqp_ip = $private_ip } + if !$amqp_username { $amqp_username = 'guest' } + if !$amqp_password { $amqp_password = 'guest' } + if !$ceph_mon_host { $ceph_mon_host= ["$private_ip"] } + if !$ceph_mon_initial_members { $ceph_mon_initial_members = ["$::hostname"] } + } class { "quickstack::neutron::compute": - auth_host => $private_ip, - glance_host => $private_ip, + auth_host => $keystone_private_vip, + glance_host => $glance_private_vip, 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, + nova_host => $nova_private_vip, + nova_db_password => $nova_db_password, + nova_user_password => $nova_user_password, private_network => '', - private_iface => '', + private_iface => $ovs_tunnel_if, private_ip => '', rbd_user => 'volumes', - rbd_secret_uuid => '', + rbd_secret_uuid => $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, + admin_password => $admin_password, + ssl => false, + + mysql_host => $mysql_ip, + mysql_ca => '/etc/ipa/ca.crt', + amqp_host => $amqp_ip, + amqp_username => $amqp_username, + amqp_password => $amqp_password, + + ceilometer => 'false', + ceilometer_metering_secret => $ceilometer_metering_secret, + ceilometer_user_password => $ceilometer_user_password, + + cinder_backend_gluster => $quickstack::params::cinder_backend_gluster, + cinder_backend_rbd => 'true', + glance_backend_rbd => 'true', + ceph_cluster_network => $ceph_public_network, + ceph_fsid => $ceph_fsid, + ceph_images_key => $ceph_images_key, + ceph_mon_host => $ceph_mon_host, + ceph_mon_initial_members => $ceph_mon_initial_members, + ceph_osd_pool_default_size => $ceph_osd_pool_size, + ceph_osd_journal_size => $ceph_osd_journal_size, + ceph_volumes_key => $ceph_volumes_key, agent_type => $this_agent, enable_tunneling => true, @@ -82,21 +142,17 @@ class opnfv::compute { neutron_db_password => $neutron_db_password, neutron_user_password => $neutron_user_password, - neutron_host => $private_ip, + neutron_host => $neutron_private_vip, - #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 => $ovs_tunnel_if, ovs_tunnel_network => '', - ovs_l2_population => 'True', + ovs_l2_population => 'false', 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, + verbose => 'true', security_group_api => 'neutron', } -- 2.16.6