scenario002: deploy RabbitMQ with SSL
* Manage Puppet OpenStack CI CA and create a common certificate, auto-signed. * Configure RabbitMQ to activate SSL on scenario002 * Configure OpenStack services that run on scenario002 to connect to RabbitMQ using SSL protocol. Change-Id: Ic435078472ba4e0e0eaf04a64e5bcb7aabba7b3d
This commit is contained in:
parent
918a6c9342
commit
2be3e3f9d2
@ -33,6 +33,7 @@ scenario](#All-In-One).
|
||||
|
||||
| - | scenario001 | scenario002 | scenario003 | scenario-aio |
|
||||
|:----------:|:-----------:|:-----------:|:-----------:|:-------------:
|
||||
| ssl | no | yes | no | no |
|
||||
| keystone | X | X | X | X |
|
||||
| glance | rbd | swift | file | file |
|
||||
| nova | rbd | X | X | X |
|
||||
|
49
files/puppet_openstack.pem
Normal file
49
files/puppet_openstack.pem
Normal file
@ -0,0 +1,49 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDhTCCAm2gAwIBAgIJAO2foCrPQj0dMA0GCSqGSIb3DQEBCwUAMFkxCzAJBgNV
|
||||
BAYTAkNBMQ8wDQYDVQQIDAZRdWViZWMxFDASBgNVBAcMC1F1ZWJlYy1DaXR5MRIw
|
||||
EAYDVQQKDAlPcGVuU3RhY2sxDzANBgNVBAsMBlB1cHBldDAeFw0xNjAyMjcyMzQ2
|
||||
NTdaFw0xNzAyMjYyMzQ2NTdaMFkxCzAJBgNVBAYTAkNBMQ8wDQYDVQQIDAZRdWVi
|
||||
ZWMxFDASBgNVBAcMC1F1ZWJlYy1DaXR5MRIwEAYDVQQKDAlPcGVuU3RhY2sxDzAN
|
||||
BgNVBAsMBlB1cHBldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM8p
|
||||
3kUc+sKhB0/9G42EEcyAJeHbi6l96phKdu63k17xSCP6KetLVI3FXZ/NbHvXMrGZ
|
||||
45Z4UV47uChdI0T7rB4Thi5OgKRxKVMeCC38D7xnS4VX2HpLC+r/CMnDxPKMoZRF
|
||||
ua0r2aSY59268T2fXjNz9l5RUTTXJxdjMVDg0C4QQEnoRyeprmepRU8Nh7CINjl6
|
||||
IFmDDuyjVQFBDO4V2NN3T6tJwHmsn0ac2+3bvVKeov7T+tPv7dIFqgBVYKoPrzb6
|
||||
B/J3+h4gLV5cNJkkCX9X8Xo9T1WteHtQGPz4IKy7mpRyn3vICqK3ztknqeh6JjVm
|
||||
8vCfVgLw0M1nIFATKnECAwEAAaNQME4wHQYDVR0OBBYEFKc3gtxGBHMCwxwtE30a
|
||||
Ig5+A1w8MB8GA1UdIwQYMBaAFKc3gtxGBHMCwxwtE30aIg5+A1w8MAwGA1UdEwQF
|
||||
MAMBAf8wDQYJKoZIhvcNAQELBQADggEBABWJOH+ehGGjZrycXeFjs0ypnCpDtLNi
|
||||
PQhAOuoaejR/4MU801qRB+AGxjn+/pzm7t39hpdNRj+Vgx7BNOR6RmtMH68TCIzT
|
||||
xFKV8T55nH9DjwlSwKDtB5oqnODL7nIJ0Gi/kQBoopOfTUPBYLQZVR/m+7PF3m0I
|
||||
epdZr+NE5Qm10LEQ+v0vlmtyoDhQ2ettgJxFXURWKMq4600c6+dtGWAJlx0aN7Bb
|
||||
JSpU/bGgNxLunGR545G6y9iQsi1YwjVJyBSPBIjwnQZKshPELuhmrk18eHIRW0QD
|
||||
uMJ9kPyLU1r43CNNeWux0nsoyG72NAJKRIaOqIy9EPXTxjeTsYz/2Ts=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDPKd5FHPrCoQdP
|
||||
/RuNhBHMgCXh24upfeqYSnbut5Ne8Ugj+inrS1SNxV2fzWx71zKxmeOWeFFeO7go
|
||||
XSNE+6weE4YuToCkcSlTHggt/A+8Z0uFV9h6Swvq/wjJw8TyjKGURbmtK9mkmOfd
|
||||
uvE9n14zc/ZeUVE01ycXYzFQ4NAuEEBJ6Ecnqa5nqUVPDYewiDY5eiBZgw7so1UB
|
||||
QQzuFdjTd0+rScB5rJ9GnNvt271SnqL+0/rT7+3SBaoAVWCqD682+gfyd/oeIC1e
|
||||
XDSZJAl/V/F6PU9VrXh7UBj8+CCsu5qUcp97yAqit87ZJ6noeiY1ZvLwn1YC8NDN
|
||||
ZyBQEypxAgMBAAECggEAF9jB9UK4ut6+cL66BThGtDusIKudEA2mi5FGz4PiOvOb
|
||||
UkjhumwZd5hYhqSm8Dp9Y2RLhm6jLy3ArSTLgo1V6sBkmb//nu5Hy4GRf3mcdhuN
|
||||
3fOWv70TyiFBabhXW3RExUShcwWxL/lJ94QlcOp/dXzLx1+k8Wgy38ZTTvQSArs3
|
||||
IWVR/MAAwD0CKPijn3qZX804BTAGpuQRvqAmZ5Ysg9NI6F9zKdnPvjA3q0rKE1x9
|
||||
i3SnWN93r0fspH8XtOdb7qX/5NjYWbSSdN+rjgLP7ATugjO/J94eFdPcpDVHCyb5
|
||||
UKdkQ6f8W4bDCYJfXcbamR7G8zAcJU+SLllH0dkUgQKBgQDstd3Gl2rpVG8x4/JU
|
||||
LxyhVhXU59lNZpdCGDcYKV5m37LvApkgYNSBptyq1x3F4dt/NbvZ4o15Jacmbasq
|
||||
l1qSP9c/1VRjZwhLjhgAtfJPxKvjqvL/hg3RBoK9hm3n5fkjtsVYse+1xYTcwTBh
|
||||
EIf5Evyyr8s4mrrvAf3Pz2tOlQKBgQDgC5wrQBfDKqZQBpDdcbwuMInDoBVmndgz
|
||||
ZU9IZDAcpDtk4N94au6YDw5y8Bv8Y8e5XpoR0wUMvcG9hLFl/QVw6yAdzZJx+st0
|
||||
50UAqFb80qsnW5DZU2GOWMY3FUmAKNQ64f8YQ1I5DfVerIzWRsSOUrDU9E4HgVTY
|
||||
6BH2RFuhbQKBgQC14AsWErOnsiN5zu4b9tLlt9IwczAJA6GGvDpgyzBolMrUUEe9
|
||||
lAjT0ZTNg1mx+JcBSBUdFbCj++VRZoRUxlRl+L13o38inUDHZNdWfHZBChkUZf4t
|
||||
jR/CkmEUJF0ACDiEU2OQga9wF+K9B4cXnW8MVqVo2h+oT2MAT6Rn7rRBfQKBgQCO
|
||||
ljT8vZyh5AnWkmct182Io/F5Y+9a0IghJY/QpZqND+SQ7iCq9XsFoUdz1OYquaIJ
|
||||
knCBeYgUNMwRflqcauxEkg9tiEB0c8V6kBk1Mu2xl62/raHA/jTvMAZuVgjiHJn9
|
||||
I4mC+o1grEaFy1ESqhU78tqBnT3vvtqt9PxBe/3I/QKBgQCxiTa8UVbCEsaeuZaU
|
||||
v2Q/Ca6xaBPXNFG5zQzElyDT7xGqo1LrQcOZijiY39bGg4O+9jVlkWpu3nfdOYc6
|
||||
LnM5U/5/2mNa4qmO/ntypQJBuAYHvEKwZnNp0jRB7XHiqenrkMCMfxABbPO1Yksj
|
||||
NvVFs8W/3TAiZXoZVqKttZuE9g==
|
||||
-----END PRIVATE KEY-----
|
@ -15,17 +15,29 @@
|
||||
#
|
||||
|
||||
include ::openstack_integration
|
||||
include ::openstack_integration::rabbitmq
|
||||
include ::openstack_integration::cacert
|
||||
class { '::openstack_integration::rabbitmq':
|
||||
ssl => true,
|
||||
}
|
||||
include ::openstack_integration::mysql
|
||||
include ::openstack_integration::keystone
|
||||
class { '::openstack_integration::glance':
|
||||
backend => 'swift',
|
||||
ssl => true,
|
||||
}
|
||||
class { '::openstack_integration::neutron':
|
||||
ssl => true,
|
||||
}
|
||||
class { '::openstack_integration::nova':
|
||||
ssl => true,
|
||||
}
|
||||
class { '::openstack_integration::cinder':
|
||||
ssl => true,
|
||||
}
|
||||
include ::openstack_integration::neutron
|
||||
include ::openstack_integration::nova
|
||||
include ::openstack_integration::cinder
|
||||
include ::openstack_integration::swift
|
||||
include ::openstack_integration::ironic
|
||||
class { '::openstack_integration::ironic':
|
||||
ssl => true,
|
||||
}
|
||||
include ::openstack_integration::mongodb
|
||||
include ::openstack_integration::provision
|
||||
|
||||
|
20
manifests/cacert.pp
Normal file
20
manifests/cacert.pp
Normal file
@ -0,0 +1,20 @@
|
||||
class openstack_integration::cacert {
|
||||
|
||||
include ::openstack_integration::params
|
||||
|
||||
file { $::openstack_integration::params::cert_path:
|
||||
ensure => present,
|
||||
owner => 'root',
|
||||
group => 'root',
|
||||
mode => '0444',
|
||||
source => 'puppet:///modules/openstack_integration/puppet_openstack.pem',
|
||||
selinux_ignore_defaults => true,
|
||||
replace => true,
|
||||
}
|
||||
exec { 'update-ca-certificates':
|
||||
command => $::openstack_integration::params::update_ca_certs_cmd,
|
||||
subscribe => File[$::openstack_integration::params::cert_path],
|
||||
refreshonly => true,
|
||||
}
|
||||
|
||||
}
|
@ -5,10 +5,21 @@
|
||||
# Can be 'iscsi' or 'rbd'.
|
||||
# Defaults to 'iscsi'.
|
||||
#
|
||||
# [*ssl*]
|
||||
# (optional) Boolean to enable or not SSL.
|
||||
# Defaults to false.
|
||||
#
|
||||
class openstack_integration::cinder (
|
||||
$backend = 'iscsi',
|
||||
$ssl = false,
|
||||
) {
|
||||
|
||||
if $ssl {
|
||||
$rabbit_port = '5671'
|
||||
} else {
|
||||
$rabbit_port = '5672'
|
||||
}
|
||||
|
||||
rabbitmq_user { 'cinder':
|
||||
admin => true,
|
||||
password => 'an_even_bigger_secret',
|
||||
@ -32,8 +43,10 @@ class openstack_integration::cinder (
|
||||
class { '::cinder':
|
||||
database_connection => 'mysql+pymysql://cinder:cinder@127.0.0.1/cinder?charset=utf8',
|
||||
rabbit_host => '127.0.0.1',
|
||||
rabbit_port => $rabbit_port,
|
||||
rabbit_userid => 'cinder',
|
||||
rabbit_password => 'an_even_bigger_secret',
|
||||
rabbit_use_ssl => $ssl,
|
||||
verbose => true,
|
||||
debug => true,
|
||||
}
|
||||
|
@ -5,10 +5,21 @@
|
||||
# Can be 'file', 'swift' or 'rbd'.
|
||||
# Defaults to 'file'.
|
||||
#
|
||||
# [*ssl*]
|
||||
# (optional) Boolean to enable or not SSL.
|
||||
# Defaults to false.
|
||||
#
|
||||
class openstack_integration::glance (
|
||||
$backend = 'file',
|
||||
$ssl = false,
|
||||
) {
|
||||
|
||||
if $ssl {
|
||||
$rabbit_port = '5671'
|
||||
} else {
|
||||
$rabbit_port = '5672'
|
||||
}
|
||||
|
||||
rabbitmq_user { 'glance':
|
||||
admin => true,
|
||||
password => 'an_even_bigger_secret',
|
||||
@ -79,7 +90,9 @@ class openstack_integration::glance (
|
||||
rabbit_userid => 'glance',
|
||||
rabbit_password => 'an_even_bigger_secret',
|
||||
rabbit_host => '127.0.0.1',
|
||||
rabbit_port => $rabbit_port,
|
||||
notification_driver => 'messagingv2',
|
||||
rabbit_use_ssl => $ssl,
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,4 +1,18 @@
|
||||
class openstack_integration::ironic {
|
||||
# Configure the Ironic service
|
||||
#
|
||||
# [*ssl*]
|
||||
# (optional) Boolean to enable or not SSL.
|
||||
# Defaults to false.
|
||||
#
|
||||
class openstack_integration::ironic (
|
||||
$ssl = false,
|
||||
) {
|
||||
|
||||
if $ssl {
|
||||
$rabbit_port = '5671'
|
||||
} else {
|
||||
$rabbit_port = '5672'
|
||||
}
|
||||
|
||||
rabbitmq_user { 'ironic':
|
||||
admin => true,
|
||||
@ -18,6 +32,8 @@ class openstack_integration::ironic {
|
||||
rabbit_userid => 'ironic',
|
||||
rabbit_password => 'an_even_bigger_secret',
|
||||
rabbit_host => '127.0.0.1',
|
||||
rabbit_port => $rabbit_port,
|
||||
rabbit_use_ssl => $ssl,
|
||||
database_connection => 'mysql+pymysql://ironic:ironic@127.0.0.1/ironic?charset=utf8',
|
||||
debug => true,
|
||||
verbose => true,
|
||||
|
@ -1,4 +1,18 @@
|
||||
class openstack_integration::neutron {
|
||||
# Configure the Neutron services
|
||||
#
|
||||
# [*ssl*]
|
||||
# (optional) Boolean to enable or not SSL.
|
||||
# Defaults to false.
|
||||
#
|
||||
class openstack_integration::neutron (
|
||||
$ssl = false,
|
||||
) {
|
||||
|
||||
if $ssl {
|
||||
$rabbit_port = '5671'
|
||||
} else {
|
||||
$rabbit_port = '5672'
|
||||
}
|
||||
|
||||
rabbitmq_user { 'neutron':
|
||||
admin => true,
|
||||
@ -24,6 +38,8 @@ class openstack_integration::neutron {
|
||||
rabbit_user => 'neutron',
|
||||
rabbit_password => 'an_even_bigger_secret',
|
||||
rabbit_host => '127.0.0.1',
|
||||
rabbit_port => $rabbit_port,
|
||||
rabbit_use_ssl => $ssl,
|
||||
allow_overlapping_ips => true,
|
||||
core_plugin => 'ml2',
|
||||
service_plugins => ['router', 'metering', 'firewall'],
|
||||
|
@ -5,10 +5,21 @@
|
||||
# to use Libvirt RBD backend.
|
||||
# Defaults to false.
|
||||
#
|
||||
# [*ssl*]
|
||||
# (optional) Boolean to enable or not SSL.
|
||||
# Defaults to false.
|
||||
#
|
||||
class openstack_integration::nova (
|
||||
$libvirt_rbd = false,
|
||||
$ssl = false,
|
||||
) {
|
||||
|
||||
if $ssl {
|
||||
$rabbit_port = '5671'
|
||||
} else {
|
||||
$rabbit_port = '5672'
|
||||
}
|
||||
|
||||
rabbitmq_user { 'nova':
|
||||
admin => true,
|
||||
password => 'an_even_bigger_secret',
|
||||
@ -36,8 +47,10 @@ class openstack_integration::nova (
|
||||
database_connection => 'mysql+pymysql://nova:nova@127.0.0.1/nova?charset=utf8',
|
||||
api_database_connection => 'mysql+pymysql://nova_api:nova@127.0.0.1/nova_api?charset=utf8',
|
||||
rabbit_host => '127.0.0.1',
|
||||
rabbit_port => $rabbit_port,
|
||||
rabbit_userid => 'nova',
|
||||
rabbit_password => 'an_even_bigger_secret',
|
||||
rabbit_use_ssl => $ssl,
|
||||
glance_api_servers => 'http://127.0.0.1:9292',
|
||||
verbose => true,
|
||||
debug => true,
|
||||
|
19
manifests/params.pp
Normal file
19
manifests/params.pp
Normal file
@ -0,0 +1,19 @@
|
||||
class openstack_integration::params {
|
||||
|
||||
case $::osfamily {
|
||||
'RedHat': {
|
||||
$cacert_path = '/etc/ssl/certs/ca-bundle.crt'
|
||||
$cert_path = '/etc/pki/ca-trust/source/anchors/puppet_openstack.crt'
|
||||
$update_ca_certs_cmd = '/usr/bin/update-ca-trust force-enable && /usr/bin/update-ca-trust extract'
|
||||
}
|
||||
'Debian': {
|
||||
$cacert_path = '/etc/ssl/certs/puppet_openstack.pem'
|
||||
$cert_path = '/usr/local/share/ca-certificates/puppet_openstack.crt'
|
||||
$update_ca_certs_cmd = '/usr/sbin/update-ca-certificates'
|
||||
}
|
||||
default: {
|
||||
fail("Unsupported osfamily: ${::osfamily} operatingsystem")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,4 +1,14 @@
|
||||
class openstack_integration::rabbitmq {
|
||||
# Configure the RabbitMQ service
|
||||
#
|
||||
# [*ssl*]
|
||||
# (optional) Boolean to enable or not SSL.
|
||||
# Defaults to false.
|
||||
#
|
||||
class openstack_integration::rabbitmq (
|
||||
$ssl = false,
|
||||
) {
|
||||
|
||||
include ::openstack_integration::params
|
||||
|
||||
case $::osfamily {
|
||||
'Debian': {
|
||||
@ -12,9 +22,33 @@ class openstack_integration::rabbitmq {
|
||||
}
|
||||
}
|
||||
|
||||
if $ssl {
|
||||
file { '/etc/rabbitmq/ssl/private':
|
||||
ensure => directory,
|
||||
owner => 'root',
|
||||
mode => '0755',
|
||||
selinux_ignore_defaults => true,
|
||||
before => File["/etc/rabbitmq/ssl/private/${::fqdn}.pem"],
|
||||
}
|
||||
openstack_integration::ssl_key { 'rabbitmq':
|
||||
key_path => "/etc/rabbitmq/ssl/private/${::fqdn}.pem",
|
||||
require => File['/etc/rabbitmq/ssl'],
|
||||
notify => Service['rabbitmq-server'],
|
||||
}
|
||||
class { '::rabbitmq':
|
||||
delete_guest_user => true,
|
||||
package_provider => $package_provider,
|
||||
ssl => true,
|
||||
ssl_only => true,
|
||||
ssl_cacert => $::openstack_integration::params::cacert_path,
|
||||
ssl_cert => $::openstack_integration::params::cert_path,
|
||||
ssl_key => "/etc/rabbitmq/ssl/private/${::fqdn}.pem",
|
||||
}
|
||||
} else {
|
||||
class { '::rabbitmq':
|
||||
delete_guest_user => true,
|
||||
package_provider => $package_provider,
|
||||
}
|
||||
}
|
||||
rabbitmq_vhost { '/':
|
||||
provider => 'rabbitmqctl',
|
||||
|
42
manifests/ssl_key.pp
Normal file
42
manifests/ssl_key.pp
Normal file
@ -0,0 +1,42 @@
|
||||
# Deploy SSL private keys
|
||||
#
|
||||
# [*key_path*]
|
||||
# (optional) Path of SSL private key
|
||||
# Defaults to undef.
|
||||
#
|
||||
define openstack_integration::ssl_key(
|
||||
$key_path = undef,
|
||||
) {
|
||||
if $key_path == undef {
|
||||
$_key_path = "/etc/${name}/ssl/private/${::fqdn}.pem"
|
||||
} else {
|
||||
$_key_path = $key_path
|
||||
}
|
||||
|
||||
# If the user isn't providing an unexpected path, create the directory
|
||||
# structure.
|
||||
if $key_path == undef {
|
||||
file { "/etc/${name}/ssl":
|
||||
ensure => directory,
|
||||
owner => $name,
|
||||
mode => '0775',
|
||||
selinux_ignore_defaults => true,
|
||||
}
|
||||
file { "/etc/${name}/ssl/private":
|
||||
ensure => directory,
|
||||
owner => $name,
|
||||
mode => '0755',
|
||||
require => File["/etc/${name}/ssl"],
|
||||
selinux_ignore_defaults => true,
|
||||
before => File[$_key_path]
|
||||
}
|
||||
}
|
||||
|
||||
file { $_key_path:
|
||||
ensure => present,
|
||||
owner => $name,
|
||||
source => 'puppet:///modules/openstack_integration/puppet_openstack.pem',
|
||||
selinux_ignore_defaults => true,
|
||||
mode => '0600',
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user