diff --git a/README.md b/README.md index b5b3a53ee..fa26321ae 100644 --- a/README.md +++ b/README.md @@ -22,43 +22,43 @@ Infrastructure environment. Description ----------- -OpenStack Infrastructure is deploying three jobs per supported Operating System -(Ubuntu and CentOS): scenario001, scenario002 and scenario003. +OpenStack Infrastructure is deploying four jobs per supported Operating System +(Ubuntu and CentOS): scenario001, scenario002, scenario003 and scenario004. -OpenStack services are balanced between three scenarios because OpenStack +OpenStack services are balanced between four scenarios because OpenStack Infastructure Jenkins slaves can not afford the load of running everything on the same node. One manifest (scenario-aio) is used for people who want to [run a simple All-In-One scenario](#all-in-one). -| - | scenario001 | scenario002 | scenario003 | scenario-aio | -|:----------:|:-----------:|:-----------:|:-----------:|:-------------: -| ssl | yes | yes | yes | no | -| ipv6 | centos7 | centos7 | centos7 | no | -| keystone | X | X | X | X | -| tokens | uuid | uuid | fernet | uuid | -| glance | rbd | swift | file | file | -| nova | rbd | X | X | X | -| neutron | ovs | ovs | linuxbridge | ovs | -| lbaas | v2 | v2 | v2 | v2 | -| cinder | rbd | iscsi | | iscsi | -| ceilometer | X | | | | -| aodh | X | | | | -| designate | | | bind | | -| backup | | swift | | | -| gnocchi | rbd | | | | -| ec2api | | X | | | -| heat | | | X | | -| swift | | X | | | -| sahara | | | X | | -| trove | | | X | | -| horizon | | | X | X | -| ironic | | X | | | -| zaqar | | X | | | -| barbican | | X | | | -| murano | | | X | | -| ceph | X | | | | -| mongodb | | X | | | +| - | scenario001 | scenario002 | scenario003 | scenario004 | scenario-aio | +|:----------:|:-----------:|:-----------:|:-----------:|:-----------:|:------------:| +| ssl | yes | yes | yes | yes | no | +| ipv6 | centos7 | centos7 | centos7 | no | no | +| keystone | X | X | X | X | X | +| tokens | uuid | uuid | fernet | fernet | uuid | +| glance | rbd | swift | file | swift+rgw | file | +| nova | rbd | X | X | rbd | X | +| neutron | ovs | ovs | linuxbridge | ovs | ovs | +| lbaas | v2 | v2 | v2 | | v2 | +| cinder | rbd | iscsi | | | iscsi | +| ceilometer | X | | | | | +| aodh | X | | | | | +| designate | | | bind | | | +| backup | | swift | | | | +| gnocchi | rbd | | | | | +| ec2api | | X | | | | +| heat | | | X | | | +| swift | | X | | | | +| sahara | | | X | | | +| trove | | | X | | | +| horizon | | | X | | X | +| ironic | | X | | | | +| zaqar | | X | | | | +| barbican | | X | | | | +| ceph | X | | | X | | +| ceph rgw | | | | X | | +| mongodb | | X | | | | When the Jenkins slave is created, the *run_tests.sh* script will executed. This script will execute *install_modules.sh* that prepare /etc/puppet/modules diff --git a/fixtures/scenario004.pp b/fixtures/scenario004.pp new file mode 100644 index 000000000..5eb52adef --- /dev/null +++ b/fixtures/scenario004.pp @@ -0,0 +1,54 @@ +# +# Copyright 2016 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# 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. +# + +# Disable SSL (workaround for Xenial) +if $::operatingsystem == 'Ubuntu' { + $ssl_enabled = false +} else { + $ssl_enabled = true +} + +include ::openstack_integration +class { '::openstack_integration::config': + ssl => $ssl_enabled, + ipv6 => true, +} + +include ::openstack_integration::cacert +include ::openstack_integration::memcached +include ::openstack_integration::rabbitmq +include ::openstack_integration::mysql +class { '::openstack_integration::keystone': + token_provider => 'fernet', +} +class { '::openstack_integration::glance': + backend => 'swift', +} +include ::openstack_integration::neutron +class { '::openstack_integration::nova': + libvirt_rbd => true, +} + +class { '::openstack_integration::ceph': + deploy_rgw => true, + swift_dropin => true, +} + +include ::openstack_integration::provision + +# Don't test swift, radosgw won't pass the current tests +# Glance, nova, neutron are true by default. +include ::openstack_integration::tempest diff --git a/manifests/ceph.pp b/manifests/ceph.pp index 6c0d1bb01..d1c6c0337 100644 --- a/manifests/ceph.pp +++ b/manifests/ceph.pp @@ -1,4 +1,19 @@ -class openstack_integration::ceph { +# Configure the Ceph services +# +# [*deploy_rgw*] +# (optional) Setting flag to enable the deployment +# of Ceph RadosGW and configure various services +# to use Swift provided by RGW as a backend. +# Defaults to false +# +# [*swift_dropin*] +# (optional) Flag if Ceph RGW will provide swift +# services for openstack +# +class openstack_integration::ceph ( + $deploy_rgw = false, + $swift_dropin = false, +) { include ::openstack_integration::config @@ -43,6 +58,11 @@ class openstack_integration::ceph { osds => { '/var/lib/ceph/data' => {}, }, + # Configure Ceph RadosGW + # These could be always set in the above call to ceph::profile::params + frontend_type => 'civetweb', + rgw_frontends => "civetweb port=${::openstack_integration::config::ip_for_url}:8080", + rgw_user => 'ceph', } $ceph_pools = ['glance', 'nova', 'cinder', 'gnocchi'] @@ -66,4 +86,50 @@ class openstack_integration::ceph { class { '::ceph::conf': args => $ceph_extra_config, } + + if $deploy_rgw { + + ceph::key { 'client.radosgw.gateway': + user => 'ceph', + secret => 'AQD7kyJQQGoOBhAAqrPAqSopSwPrrfMMomzVdw==', + cap_mon => 'allow rwx', + cap_osd => 'allow rwx', + inject => true, + } + + # FIXME(Xarses) switch to param when supported in puppet-ceph + class { '::ceph::profile::rgw': + # swift_dropin = $swift_dropin + } + + + $password = 'secret' + $auth_name = 'rgwuser' + $project = 'services' + $user_domain = 'default' + + #configure rgw to use keystone + ceph::rgw::keystone { 'radosgw.gateway': + rgw_keystone_url => $::openstack_integration::config::keystone_admin_uri, + rgw_keystone_version => 'v3', + user => 'ceph', + use_pki => false, + rgw_keystone_accepted_roles => ['admin', 'Member'], + rgw_keystone_admin_domain => $user_domain, + rgw_keystone_admin_project => $project, + rgw_keystone_admin_user => $auth_name, + rgw_keystone_admin_password => $password, + } + + if $swift_dropin { + class { '::ceph::rgw::keystone::auth': + password => $password, + public_url => "http://${::openstack_integration::config::ip_for_url}:8080/swift/v1", + admin_url => "http://${::openstack_integration::config::ip_for_url}:8080/swift/v1", + internal_url => "http://${::openstack_integration::config::ip_for_url}:8080/swift/v1", + } + # FIXME(Xarses) remove when supported in puppet-ceph + Service<| tag == 'ceph-radosgw' |> -> Service <| tag == 'glance-service' |> + } + } } diff --git a/manifests/glance.pp b/manifests/glance.pp index eac35b289..fc99c6592 100644 --- a/manifests/glance.pp +++ b/manifests/glance.pp @@ -82,7 +82,6 @@ class openstack_integration::glance ( Exec['create-glance'] -> Service['glance-api'] } 'swift': { - Service<| tag == 'swift-service' |> -> Service['glance-api'] $backend_store = ['swift'] class { '::glance::backend::swift': swift_store_user => 'services:glance',