Adds HA and Ceph-Cinder backend to compute node 42/242/4
authorTim Rozet <trozet@redhat.com>
Wed, 1 Apr 2015 16:05:02 +0000 (12:05 -0400)
committerTim Rozet <trozet@redhat.com>
Thu, 2 Apr 2015 16:26:41 +0000 (12:26 -0400)
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 <trozet@redhat.com>
common/puppet-opnfv/manifests/compute.pp

index fdef9c7..7bba609 100644 (file)
 #   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',
 
   }