diff --git a/README.md b/README.md index 85fd463b9..0f50814ec 100644 --- a/README.md +++ b/README.md @@ -77,11 +77,13 @@ scenario](#all-in-one). | taas | | | | X | | | | bgpvpn-api | | | | X | | | | bgp-dr | | | | X | | | +| memcached | X | X | X | X | X | X | | redis | X | X | X | X | X | | | l2gw | | | | X | | | | octavia | | | | X | X | | | om rpc | rabbit | rabbit | rabbit | rabbit | rabbit | rabbit | | om notify | rabbit | rabbit | rabbit | rabbit | rabbit | rabbit | +| oslo.cache | redis | sentinel | memcache | memcache | memcache | memcache | When the Jenkins slave is created, the *run_tests.sh* script will be executed. This script will execute *install_modules.sh* that prepare /etc/puppet/modules diff --git a/fixtures/scenario001.pp b/fixtures/scenario001.pp index 68e653e66..73aa38a94 100644 --- a/fixtures/scenario001.pp +++ b/fixtures/scenario001.pp @@ -23,9 +23,11 @@ if $facts['os']['name'] == 'Ubuntu' { case $facts['os']['family'] { 'Debian': { $ipv6 = false + $cache_backend = 'memcached' } 'RedHat': { $ipv6 = true + $cache_backend = 'redis' } default: { fail("Unsupported osfamily (${facts['os']['family']})") @@ -39,8 +41,9 @@ $notification_topics = ['notifications'] include openstack_integration class { 'openstack_integration::config': - ssl => $ssl, - ipv6 => $ipv6, + ssl => $ssl, + ipv6 => $ipv6, + cache_backend => $cache_backend, } if $ssl { include openstack_integration::cacert diff --git a/fixtures/scenario002.pp b/fixtures/scenario002.pp index 55c7650c7..6f5da52eb 100644 --- a/fixtures/scenario002.pp +++ b/fixtures/scenario002.pp @@ -23,9 +23,11 @@ if $facts['os']['name'] == 'Ubuntu' { case $facts['os']['family'] { 'Debian': { $ipv6 = false + $cache_backend = 'memcached' } 'RedHat': { - $ipv6 = true + $ipv6 = false + $cache_backend = 'redis_sentinel' } default: { fail("Unsupported osfamily (${facts['os']['family']})") @@ -34,8 +36,9 @@ case $facts['os']['family'] { include openstack_integration class { 'openstack_integration::config': - ssl => $ssl, - ipv6 => $ipv6, + ssl => $ssl, + ipv6 => $ipv6, + cache_backend => $cache_backend, } if $ssl { include openstack_integration::cacert diff --git a/manifests/ceilometer.pp b/manifests/ceilometer.pp index a2dbea530..ba971bb27 100644 --- a/manifests/ceilometer.pp +++ b/manifests/ceilometer.pp @@ -30,7 +30,13 @@ class openstack_integration::ceilometer ( debug => true, } class { 'ceilometer::cache': + backend => $::openstack_integration::config::cache_driver, + enabled => true, memcache_servers => $::openstack_integration::config::memcached_servers, + redis_server => $::openstack_integration::config::redis_server, + redis_password => 'a_big_secret', + redis_sentinels => $::openstack_integration::config::redis_sentinel_server, + tls_enabled => $::openstack_integration::config::cache_tls_enabled, } class { 'ceilometer': telemetry_secret => 'secrete', diff --git a/manifests/config.pp b/manifests/config.pp index 88f70ac30..6ca5291d9 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -16,11 +16,16 @@ # (optional) The oslo.messaging backend to configure for notify. # Defaults to 'rabbit'. # +# [*cache_backend*] +# (optional) The oslo.cache backend +# Defaults to 'memcached'. +# class openstack_integration::config ( $ssl = false, $ipv6 = false, $rpc_backend = 'rabbit', $notify_backend = 'rabbit', + $cache_backend = 'memcached', ) { include openstack_integration::params @@ -71,6 +76,19 @@ class openstack_integration::config ( $keystone_auth_uri = "${base_url}:5000" $keystone_admin_uri = "${base_url}:5000" + $redis_server = "${ip_for_url}:6379" + $redis_sentinel_server = "${ip_for_url}:26379" + $cache_driver = $cache_backend ? { + 'redis' => 'dogpile.cache.redis', + 'redis_sentinel' => 'dogpile.cache.redis_sentinel', + default => 'dogpile.cache.pymemcache' + } + $cache_tls_enabled = $cache_backend ? { + 'redis' => $ssl, + 'redis_sentinel' => $ssl, + default => false, + } + $tooz_url = os_url({ 'scheme' => 'redis', 'password' => 'a_big_secret', diff --git a/manifests/heat.pp b/manifests/heat.pp index 952036d3a..42d54d2cf 100644 --- a/manifests/heat.pp +++ b/manifests/heat.pp @@ -47,9 +47,13 @@ class openstack_integration::heat ( debug => true, } class { 'heat::cache': - backend => 'dogpile.cache.pymemcache', + backend => $::openstack_integration::config::cache_driver, enabled => true, memcache_servers => $::openstack_integration::config::memcache_servers, + redis_server => $::openstack_integration::config::redis_server, + redis_password => 'a_big_secret', + redis_sentinels => $::openstack_integration::config::redis_sentinel_server, + tls_enabled => $::openstack_integration::config::cache_tls_enabled, } class { 'heat::db': database_connection => os_database_connection({ diff --git a/manifests/keystone.pp b/manifests/keystone.pp index d02099f63..563d74c55 100644 --- a/manifests/keystone.pp +++ b/manifests/keystone.pp @@ -63,9 +63,13 @@ class openstack_integration::keystone ( debug => true, } class { 'keystone::cache': - backend => 'dogpile.cache.pymemcache', + backend => $::openstack_integration::config::cache_driver, enabled => true, memcache_servers => $::openstack_integration::config::memcache_servers, + redis_server => $::openstack_integration::config::redis_server, + redis_password => 'a_big_secret', + redis_sentinels => $::openstack_integration::config::redis_sentinel_server, + tls_enabled => $::openstack_integration::config::cache_tls_enabled, } class { 'keystone': enabled => true, diff --git a/manifests/neutron.pp b/manifests/neutron.pp index 29d626920..da271faca 100644 --- a/manifests/neutron.pp +++ b/manifests/neutron.pp @@ -260,9 +260,13 @@ class openstack_integration::neutron ( } class { 'neutron::cache': - backend => 'dogpile.cache.pymemcache', + backend => $::openstack_integration::config::cache_driver, enabled => true, memcache_servers => $::openstack_integration::config::memcache_servers, + redis_server => $::openstack_integration::config::redis_server, + redis_password => 'a_big_secret', + redis_sentinels => $::openstack_integration::config::redis_sentinel_server, + tls_enabled => $::openstack_integration::config::cache_tls_enabled, } class { 'neutron::db': database_connection => os_database_connection({ diff --git a/manifests/nova.pp b/manifests/nova.pp index fd5de0466..3fd4e120e 100644 --- a/manifests/nova.pp +++ b/manifests/nova.pp @@ -163,9 +163,13 @@ class openstack_integration::nova ( service_name => 'httpd', } class { 'nova::cache': - backend => 'dogpile.cache.pymemcache', + backend => $::openstack_integration::config::cache_driver, enabled => true, memcache_servers => $::openstack_integration::config::memcache_servers, + redis_server => $::openstack_integration::config::redis_server, + redis_password => 'a_big_secret', + redis_sentinels => $::openstack_integration::config::redis_sentinel_server, + tls_enabled => $::openstack_integration::config::cache_tls_enabled, } class { 'nova::db::sync': extra_params => '--debug', diff --git a/manifests/trove.pp b/manifests/trove.pp index a5be83101..6b11af167 100644 --- a/manifests/trove.pp +++ b/manifests/trove.pp @@ -20,9 +20,13 @@ class openstack_integration::trove { debug => true, } class { 'trove::cache': - backend => 'dogpile.cache.pymemcache', + backend => $::openstack_integration::config::cache_driver, enabled => true, memcache_servers => $::openstack_integration::config::memcache_servers, + redis_server => $::openstack_integration::config::redis_server, + redis_password => 'a_big_secret', + redis_sentinels => $::openstack_integration::config::redis_sentinel_server, + tls_enabled => $::openstack_integration::config::cache_tls_enabled, } class { 'trove::db': database_connection => os_database_connection({ diff --git a/manifests/watcher.pp b/manifests/watcher.pp index 1a6a2b3c5..9881c1360 100644 --- a/manifests/watcher.pp +++ b/manifests/watcher.pp @@ -22,9 +22,13 @@ class openstack_integration::watcher { host => $::openstack_integration::config::host, } class { 'watcher::cache': - backend => 'dogpile.cache.pymemcache', + backend => $::openstack_integration::config::cache_driver, enabled => true, memcache_servers => $::openstack_integration::config::memcache_servers, + redis_server => $::openstack_integration::config::redis_server, + redis_password => 'a_big_secret', + redis_sentinels => $::openstack_integration::config::redis_sentinel_server, + tls_enabled => $::openstack_integration::config::cache_tls_enabled, } class { 'watcher::db': database_connection => os_database_connection({ diff --git a/manifests/zaqar.pp b/manifests/zaqar.pp index 7c6b76821..34176d874 100644 --- a/manifests/zaqar.pp +++ b/manifests/zaqar.pp @@ -35,9 +35,13 @@ class openstack_integration::zaqar { password => 'a_big_secret' } class { 'zaqar::cache': - backend => 'dogpile.cache.pymemcache', + backend => $::openstack_integration::config::cache_driver, enabled => true, memcache_servers => $::openstack_integration::config::memcache_servers, + redis_server => $::openstack_integration::config::redis_server, + redis_password => 'a_big_secret', + redis_sentinels => $::openstack_integration::config::redis_sentinel_server, + tls_enabled => $::openstack_integration::config::cache_tls_enabled, } class { 'zaqar::management::sqlalchemy': uri => os_database_connection({