Support of Ubuntu 16.04 LTS Xenial deployments

Add support for Xenial deployments.

* Disable SSL on Ubuntu Xenial deployments.
* Pin puppetlabs-mysql to a recent commit (until they produce a new
  tag).
* Disable Ceph on Ubuntu Xenial deployments, neither Hammer or Jewel currently
  work out of the box with puppet-ceph on Xenial.
* Disable Horizon on Ubuntu Xenial deployments: not working yet.
* Do not deploy UCA on Xenial, since we currently deploy Mitaka.
* On Xenial, deploy Puppet using distro packaging, not puppetlabs.com.
* Cleanup /etc/default/puppet on Xenial / Puppet4 runs (workaround)
  until we figure what is installing this file on Xenial nodepool
  image.

All issues are documented here:
See https://etherpad.openstack.org/p/puppet-openstack-xenial

Change-Id: Ifc8c7e241add830c88b84c1f01770e5e15df1653
This commit is contained in:
Emilien Macchi 2016-04-20 14:54:36 -04:00
parent 769a425016
commit e5d6e6b6c0
8 changed files with 71 additions and 21 deletions

View File

@ -160,7 +160,8 @@ mod 'mongodb',
mod 'mysql', mod 'mysql',
:git => 'https://github.com/puppetlabs/puppetlabs-mysql', :git => 'https://github.com/puppetlabs/puppetlabs-mysql',
:ref => '3.7.0' # until we got a release on puppetlabs-mysql
:ref => '5695cef4a66364d34ede90a08fe07e4b277ff8ba'
mod 'postgresql', mod 'postgresql',
:git => 'https://github.com/puppetlabs/puppetlabs-postgresql', :git => 'https://github.com/puppetlabs/puppetlabs-postgresql',

View File

@ -15,7 +15,7 @@
# #
# Deploy Puppet OpenStack modules, deploy OpenStack and test the setup. # Deploy Puppet OpenStack modules, deploy OpenStack and test the setup.
# Software requirements: # Software requirements:
# * Ubuntu 14.04 LTS or CentOS7 fresh install # * Ubuntu 14.04 LTS or Ubuntu 16.04 LTS or CentOS7 fresh install
# * 'git' installed # * 'git' installed
# #
# Hardware requirements: # Hardware requirements:

View File

@ -7,7 +7,7 @@ puppetlabs/puppetlabs-concat
puppetlabs/puppetlabs-firewall puppetlabs/puppetlabs-firewall
puppetlabs/puppetlabs-inifile puppetlabs/puppetlabs-inifile
puppetlabs/puppetlabs-mongodb puppetlabs/puppetlabs-mongodb
puppetlabs/puppetlabs-mysql puppetlabs/puppetlabs-mysql,5695cef4a66364d34ede90a08fe07e4b277ff8ba
puppetlabs/puppetlabs-postgresql puppetlabs/puppetlabs-postgresql
puppetlabs/puppetlabs-rabbitmq puppetlabs/puppetlabs-rabbitmq
puppetlabs/puppetlabs-rsync puppetlabs/puppetlabs-rsync

View File

@ -29,9 +29,24 @@ case $::osfamily {
} }
} }
# List of workarounds for Ubuntu Xenial:
# - disable ceph
# - disable SSL
if ($::operatingsystem == 'Ubuntu') and (versioncmp($::operatingsystemmajrelease, '16') >= 0) {
$ssl_enabled = false
$glance_backend = 'file'
$cinder_backend = 'iscsi'
$libvirt_rbd = false
} else {
$ssl_enabled = true
$glance_backend = 'rbd'
$cinder_backend = 'rbd'
$libvirt_rbd = true
}
include ::openstack_integration include ::openstack_integration
class { '::openstack_integration::config': class { '::openstack_integration::config':
ssl => true, ssl => $ssl_enabled,
ipv6 => $ipv6, ipv6 => $ipv6,
} }
include ::openstack_integration::cacert include ::openstack_integration::cacert
@ -39,21 +54,23 @@ include ::openstack_integration::rabbitmq
include ::openstack_integration::mysql include ::openstack_integration::mysql
include ::openstack_integration::keystone include ::openstack_integration::keystone
class { '::openstack_integration::glance': class { '::openstack_integration::glance':
backend => 'rbd', backend => $glance_backend,
} }
include ::openstack_integration::neutron include ::openstack_integration::neutron
class { '::openstack_integration::nova': class { '::openstack_integration::nova':
libvirt_rbd => true, libvirt_rbd => $libvirt_rbd,
} }
class { '::openstack_integration::cinder': class { '::openstack_integration::cinder':
backend => 'rbd', backend => $cinder_backend,
} }
if $ceilometer_enabled { if $ceilometer_enabled {
include ::openstack_integration::ceilometer include ::openstack_integration::ceilometer
include ::openstack_integration::aodh include ::openstack_integration::aodh
include ::openstack_integration::gnocchi include ::openstack_integration::gnocchi
} }
include ::openstack_integration::ceph if $libvirt_rbd {
include ::openstack_integration::ceph
}
include ::openstack_integration::provision include ::openstack_integration::provision
class { '::openstack_integration::tempest': class { '::openstack_integration::tempest':

View File

@ -29,9 +29,16 @@ case $::osfamily {
} }
} }
# Disable SSL (workaround for Xenial)
if ($::operatingsystem == 'Ubuntu') and (versioncmp($::operatingsystemmajrelease, '16') >= 0) {
$ssl_enabled = false
} else {
$ssl_enabled = true
}
include ::openstack_integration include ::openstack_integration
class { '::openstack_integration::config': class { '::openstack_integration::config':
ssl => true, ssl => $ssl_enabled,
ipv6 => $ipv6, ipv6 => $ipv6,
} }
include ::openstack_integration::cacert include ::openstack_integration::cacert

View File

@ -30,10 +30,21 @@ case $::osfamily {
} }
} }
# List of workarounds for Ubuntu Xenial:
# - disable Horizon
# - disable SSL
if ($::operatingsystem == 'Ubuntu') and (versioncmp($::operatingsystemmajrelease, '16') >= 0) {
$ssl_enabled = false
$horizon_enabled = false
} else {
$ssl_enabled = true
$horizon_enabled = true
}
include ::openstack_integration include ::openstack_integration
class { '::openstack_integration::config': class { '::openstack_integration::config':
ipv6 => $ipv6, ipv6 => $ipv6,
ssl => true, ssl => $ssl_enabled,
} }
include ::openstack_integration::cacert include ::openstack_integration::cacert
include ::openstack_integration::rabbitmq include ::openstack_integration::rabbitmq
@ -47,7 +58,9 @@ class { '::openstack_integration::neutron':
} }
include ::openstack_integration::nova include ::openstack_integration::nova
include ::openstack_integration::trove include ::openstack_integration::trove
include ::openstack_integration::horizon if $horizon_enabled {
include ::openstack_integration::horizon
}
include ::openstack_integration::heat include ::openstack_integration::heat
# enable when we figure why mistral tempest tests are so unstable # enable when we figure why mistral tempest tests are so unstable
# include ::openstack_integration::mistral # include ::openstack_integration::mistral
@ -58,6 +71,6 @@ class { '::openstack_integration::tempest':
trove => true, trove => true,
sahara => true, sahara => true,
mistral => $mistral_enabled, mistral => $mistral_enabled,
horizon => true, horizon => $horizon_enabled,
heat => true, heat => true,
} }

View File

@ -3,9 +3,12 @@ class openstack_integration::repos {
case $::osfamily { case $::osfamily {
'Debian': { 'Debian': {
include ::apt include ::apt
class { '::openstack_extras::repo::debian::ubuntu': # Mitaka is already packaged in 16.04, so we don't need UCA.
release => 'mitaka', if ($::operatingsystem == 'Ubuntu') and ! (versioncmp($::operatingsystemmajrelease, '16') >= 0) {
package_require => true, class { '::openstack_extras::repo::debian::ubuntu':
release => 'mitaka',
package_require => true,
}
} }
# Ceph is both packaged on UCA & ceph.com # Ceph is both packaged on UCA & ceph.com
# Official packages are on ceph.com so we want to make sure # Official packages are on ceph.com so we want to make sure

View File

@ -19,6 +19,7 @@ export MANAGE_PUPPET_MODULES=${MANAGE_PUPPET_MODULES:-true}
export MANAGE_REPOS=${MANAGE_REPOS:-true} export MANAGE_REPOS=${MANAGE_REPOS:-true}
export PUPPET_ARGS=${PUPPET_ARGS:-} export PUPPET_ARGS=${PUPPET_ARGS:-}
export SCRIPT_DIR=$(cd `dirname $0` && pwd -P) export SCRIPT_DIR=$(cd `dirname $0` && pwd -P)
export DISTRO=$(lsb_release -c -s)
if [ $PUPPET_VERSION == 4 ]; then if [ $PUPPET_VERSION == 4 ]; then
export PATH=${PATH}:/opt/puppetlabs/bin export PATH=${PATH}:/opt/puppetlabs/bin
@ -62,13 +63,21 @@ fi
if uses_debs; then if uses_debs; then
print_header 'Setup (Debian based)' print_header 'Setup (Debian based)'
if dpkg -l $PUPPET_RELEASE_FILE >/dev/null 2>&1; then # Puppetlabs packaging:
$SUDO apt-get purge -y $PUPPET_RELEASE_FILE # - trusty: puppet3 and puppet4
# - xenial: puppet4 only
if [[ ${DISTRO} == "trusty" ]] || [[ ${DISTRO} == "xenial" && ${PUPPET_VERSION} == 4 ]]; then
if dpkg -l $PUPPET_RELEASE_FILE >/dev/null 2>&1; then
$SUDO apt-get purge -y $PUPPET_RELEASE_FILE
fi
$SUDO rm -f /tmp/puppet.deb
wget http://apt.puppetlabs.com/${PUPPET_RELEASE_FILE}-${DISTRO}.deb -O /tmp/puppet.deb
$SUDO dpkg -i /tmp/puppet.deb
# TODO(emilien): figure what installed /etc/default/puppet on the xenial nodepool image
# We have no problem on Trusty but on Xenial we need to remove /etc/default/puppet before
# trying to deploy puppet-agent from puppetlabs.com.
$SUDO rm -rf /etc/default/puppet
fi fi
$SUDO rm -f /tmp/puppet.deb
wget http://apt.puppetlabs.com/${PUPPET_RELEASE_FILE}-trusty.deb -O /tmp/puppet.deb
$SUDO dpkg -i /tmp/puppet.deb
$SUDO apt-get update $SUDO apt-get update
$SUDO apt-get install -y dstat ${PUPPET_PKG} $SUDO apt-get install -y dstat ${PUPPET_PKG}
elif is_fedora; then elif is_fedora; then