aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--environments/storage-environment.yaml57
-rw-r--r--network/config/bond-with-vlans/compute.yaml2
-rw-r--r--network/config/bond-with-vlans/controller.yaml3
-rw-r--r--puppet/controller-puppet.yaml12
-rw-r--r--puppet/hieradata/database.yaml55
-rw-r--r--puppet/manifests/overcloud_controller.pp65
-rw-r--r--puppet/manifests/overcloud_controller_pacemaker.pp45
7 files changed, 135 insertions, 104 deletions
diff --git a/environments/storage-environment.yaml b/environments/storage-environment.yaml
new file mode 100644
index 00000000..535ec6fe
--- /dev/null
+++ b/environments/storage-environment.yaml
@@ -0,0 +1,57 @@
+## A Heat environment file which can be used to set up storage
+## backends. Defaults to Ceph used as a backend for Cinder, Glance and
+## Nova ephemeral storage.
+parameters:
+
+ #### BACKEND SELECTION ####
+
+ ## Whether to enable iscsi backend for Cinder.
+ CinderEnableIscsiBackend: false
+ ## Whether to enable rbd (Ceph) backend for Cinder.
+ CinderEnableRbdBackend: true
+ ## Whether to enable NFS backend for Cinder.
+ # CinderEnableNfsBackend: false
+ ## Whether to enable rbd (Ceph) backend for Nova ephemeral storage.
+ NovaEnableRbdBackend: true
+ ## Glance backend can be either 'rbd' (Ceph), 'swift' or 'file'.
+ GlanceBackend: rbd
+
+
+ #### CINDER NFS SETTINGS ####
+
+ ## NFS mount options
+ # CinderNfsMountOptions: ''
+ ## NFS mount point, e.g. '192.168.122.1:/export/cinder'
+ # CinderNfsServers: ''
+
+
+ #### GLANCE FILE BACKEND PACEMAKER SETTINGS (used for mounting NFS) ####
+
+ ## Whether to make Glance 'file' backend a mount managed by Pacemaker
+ # GlanceFilePcmkManage: false
+ ## File system type of the mount
+ # GlanceFilePcmkFstype: nfs
+ ## Pacemaker mount point, e.g. '192.168.122.1:/export/glance' for NFS
+ # GlanceFilePcmkDevice: ''
+ ## Options for the mount managed by Pacemaker
+ # GlanceFilePcmkOptions: ''
+
+
+ #### CEPH SETTINGS ####
+
+ ## Whether to deploy Ceph OSDs on the controller nodes. By default
+ ## OSDs are deployed on dedicated ceph-storage nodes only.
+ # ControllerEnableCephStorage: false
+
+ ## When deploying Ceph through the oscplugin CLI, the following
+ ## parameters are set automatically by the CLI. When deploying via
+ ## heat stack-create, they need to be provided manually.
+
+ ## Number of Ceph storage nodes to deploy
+ # CephStorageCount: 0
+ ## Ceph FSID, e.g. '4b5c8c0a-ff60-454b-a1b4-9747aa737d19'
+ # CephClusterFSID: ''
+ ## Ceph monitor key, e.g. 'AQC+Ox1VmEr3BxAALZejqeHj50Nj6wJDvs96OQ=='
+ # CephMonKey: ''
+ ## Ceph admin key, e.g. 'AQDLOh1VgEp6FRAAFzT7Zw+Y9V6JJExQAsRnRQ=='
+ # CephAdminKey: ''
diff --git a/network/config/bond-with-vlans/compute.yaml b/network/config/bond-with-vlans/compute.yaml
index 5105ee14..3a46a48d 100644
--- a/network/config/bond-with-vlans/compute.yaml
+++ b/network/config/bond-with-vlans/compute.yaml
@@ -53,7 +53,7 @@ resources:
network_config:
-
type: ovs_bridge
- name: br-bond
+ name: {get_input: bridge_name}
members:
-
type: ovs_bond
diff --git a/network/config/bond-with-vlans/controller.yaml b/network/config/bond-with-vlans/controller.yaml
index 9d6a6810..3c19f515 100644
--- a/network/config/bond-with-vlans/controller.yaml
+++ b/network/config/bond-with-vlans/controller.yaml
@@ -26,9 +26,10 @@ parameters:
description: IP address/subnet on the tenant network
type: string
BondInterfaceOvsOptions:
- default: ''
+ default: 'bond_mode=balance-tcp lacp=active other-config:lacp-fallback-ab=true'
description: The ovs_options string for the bond interface. Set things like
lacp=active and/or bond_mode=balance-slb using this option.
+ Default wil attempt LACP, but will fall back to active-backup.
type: string
ExternalNetworkVlanID:
default: 10
diff --git a/puppet/controller-puppet.yaml b/puppet/controller-puppet.yaml
index 89b35c31..291dc6e3 100644
--- a/puppet/controller-puppet.yaml
+++ b/puppet/controller-puppet.yaml
@@ -848,6 +848,7 @@ resources:
redis_vip: {get_param: RedisVirtualIP}
memcached_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
mysql_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
+ mysql_virtual_ip: {get_param: MysqlVirtualIP}
ceph_cluster_network: {get_attr: [NetIpSubnetMap, net_ip_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
ceph_public_network: {get_attr: [NetIpSubnetMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
ceph_public_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
@@ -864,6 +865,7 @@ resources:
- controller_extraconfig
- extraconfig
- controller
+ - database
- object
- swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
- ceph_cluster # provided by CephClusterConfig
@@ -887,6 +889,8 @@ resources:
ceph::profile::params::cluster_network: {get_input: ceph_cluster_network}
ceph::profile::params::public_network: {get_input: ceph_public_network}
ceph::mon::public_addr: {get_input: ceph_public_ip}
+ database:
+ raw_data: {get_file: hieradata/database.yaml}
object:
raw_data: {get_file: hieradata/object.yaml}
controller:
@@ -936,6 +940,7 @@ resources:
cinder_enable_iscsi_backend: {get_input: cinder_enable_iscsi_backend}
cinder::glance::glance_api_servers: {get_input: glance_api_servers}
cinder_backend_config: {get_input: CinderBackendConfig}
+ cinder::db::mysql::password: {get_input: cinder_password}
# Glance
glance::api::bind_port: {get_input: glance_port}
@@ -959,6 +964,7 @@ resources:
glance::backend::swift::swift_store_user: service:glance
glance::backend::swift::swift_store_key: {get_input: glance_password}
glance_backend: {get_input: glance_backend}
+ glance::db::mysql::password: {get_input: glance_password}
# Heat
heat_stack_domain_admin_password: {get_input: heat_stack_domain_admin_password}
@@ -979,6 +985,7 @@ resources:
heat::api_cfn::bind_host: {get_input: heat_api_network}
heat::database_connection: {get_input: heat_dsn}
heat::debug: {get_input: debug}
+ heat::db::mysql::password: {get_input: heat_password}
# Keystone
keystone::admin_token: {get_input: admin_token}
@@ -991,6 +998,7 @@ resources:
keystone::public_bind_host: {get_input: keystone_public_api_network}
keystone::admin_bind_host: {get_input: keystone_admin_api_network}
keystone::debug: {get_input: debug}
+ keystone::db::mysql::password: {get_input: admin_token}
# MongoDB
mongodb::server::bind_ip: {get_input: mongo_db_network}
mongodb::server::nojournal: {get_input: mongodb_no_journal}
@@ -1004,6 +1012,7 @@ resources:
mysql::server::root_password: {get_input: mysql_root_password}
mysql_cluster_name: {get_input: mysql_cluster_name}
mysql_bind_host: {get_input: mysql_network}
+ mysql_virtual_ip: {get_input: mysql_virtual_ip}
# Neutron
neutron::bind_host: {get_input: neutron_api_network}
@@ -1042,6 +1051,7 @@ resources:
neutron_dnsmasq_options: {get_input: neutron_dnsmasq_options}
neutron_dsn: {get_input: neutron_dsn}
neutron::agents::metadata::auth_url: {get_input: keystone_identity_uri}
+ neutron::db::mysql::password: {get_input: neutron_password}
# Ceilometer
ceilometer_backend: {get_input: ceilometer_backend}
@@ -1059,6 +1069,7 @@ resources:
ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
ceilometer::agent::auth::auth_url: {get_input: keystone_auth_address}
ceilometer::agent::central::coordination_url: {get_input: ceilometer_coordination_url}
+ ceilometer::db::mysql::password: {get_input: ceilometer_password}
snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
@@ -1080,6 +1091,7 @@ resources:
nova::network::neutron::neutron_url: {get_input: neutron_url}
nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
nova::vncproxy::host: {get_input: nova_api_network}
+ nova::db::mysql::password: {get_input: nova_password}
# Horizon
apache::ip: {get_input: horizon_network}
diff --git a/puppet/hieradata/database.yaml b/puppet/hieradata/database.yaml
new file mode 100644
index 00000000..7e925d90
--- /dev/null
+++ b/puppet/hieradata/database.yaml
@@ -0,0 +1,55 @@
+# Nova
+nova::db::mysql::user: nova
+nova::db::mysql::host: "%{hiera('mysql_virtual_ip')}"
+nova::db::mysql::dbname: nova
+nova::db::mysql::allowed_hosts:
+ - '%'
+ - "%{hiera('mysql_bind_host')}"
+
+# Glance
+glance::db::mysql::user: glance
+glance::db::mysql::host: "%{hiera('mysql_virtual_ip')}"
+glance::db::mysql::dbname: glance
+glance::db::mysql::allowed_hosts:
+ - '%'
+ - "%{hiera('mysql_bind_host')}"
+
+# Keystone
+keystone::db::mysql::user: keystone
+keystone::db::mysql::host: "%{hiera('mysql_virtual_ip')}"
+keystone::db::mysql::dbname: keystone
+keystone::db::mysql::allowed_hosts:
+ - '%'
+ - "%{hiera('mysql_bind_host')}"
+
+# Neutron
+neutron::db::mysql::user: neutron
+neutron::db::mysql::host: "%{hiera('mysql_virtual_ip')}"
+neutron::db::mysql::dbname: ovs_neutron
+neutron::db::mysql::allowed_hosts:
+ - '%'
+ - "%{hiera('mysql_bind_host')}"
+
+# Cinder
+cinder::db::mysql::user: cinder
+cinder::db::mysql::host: "%{hiera('mysql_virtual_ip')}"
+cinder::db::mysql::dbname: cinder
+cinder::db::mysql::allowed_hosts:
+ - '%'
+ - "%{hiera('mysql_bind_host')}"
+
+# Heat
+heat::db::mysql::user: heat
+heat::db::mysql::host: "%{hiera('mysql_virtual_ip')}"
+heat::db::mysql::dbname: heat
+heat::db::mysql::allowed_hosts:
+ - '%'
+ - "%{hiera('mysql_bind_host')}"
+
+# Ceilometer
+ceilometer::db::mysql::user: ceilometer
+ceilometer::db::mysql::host: "%{hiera('mysql_virtual_ip')}"
+ceilometer::db::mysql::dbname: ceilometer
+ceilometer::db::mysql::allowed_hosts:
+ - '%'
+ - "%{hiera('mysql_bind_host')}"
diff --git a/puppet/manifests/overcloud_controller.pp b/puppet/manifests/overcloud_controller.pp
index f8ffb8fb..b001d667 100644
--- a/puppet/manifests/overcloud_controller.pp
+++ b/puppet/manifests/overcloud_controller.pp
@@ -89,65 +89,14 @@ if hiera('step') >= 2 {
# FIXME: this should only occur on the bootstrap host (ditto for db syncs)
# Create all the database schemas
- # Example DSN format: mysql://user:password@host/dbname
- $allowed_hosts = ['%',hiera('mysql_bind_host')]
- $keystone_dsn = split(hiera('keystone::database_connection'), '[@:/?]')
- class { 'keystone::db::mysql':
- user => $keystone_dsn[3],
- password => $keystone_dsn[4],
- host => $keystone_dsn[5],
- dbname => $keystone_dsn[6],
- allowed_hosts => $allowed_hosts,
- }
- $glance_dsn = split(hiera('glance::api::database_connection'), '[@:/?]')
- class { 'glance::db::mysql':
- user => $glance_dsn[3],
- password => $glance_dsn[4],
- host => $glance_dsn[5],
- dbname => $glance_dsn[6],
- allowed_hosts => $allowed_hosts,
- }
- $nova_dsn = split(hiera('nova::database_connection'), '[@:/?]')
- class { 'nova::db::mysql':
- user => $nova_dsn[3],
- password => $nova_dsn[4],
- host => $nova_dsn[5],
- dbname => $nova_dsn[6],
- allowed_hosts => $allowed_hosts,
- }
- $neutron_dsn = split(hiera('neutron::server::database_connection'), '[@:/?]')
- class { 'neutron::db::mysql':
- user => $neutron_dsn[3],
- password => $neutron_dsn[4],
- host => $neutron_dsn[5],
- dbname => $neutron_dsn[6],
- allowed_hosts => $allowed_hosts,
- }
- $cinder_dsn = split(hiera('cinder::database_connection'), '[@:/?]')
- class { 'cinder::db::mysql':
- user => $cinder_dsn[3],
- password => $cinder_dsn[4],
- host => $cinder_dsn[5],
- dbname => $cinder_dsn[6],
- allowed_hosts => $allowed_hosts,
- }
- $heat_dsn = split(hiera('heat::database_connection'), '[@:/?]')
- class { 'heat::db::mysql':
- user => $heat_dsn[3],
- password => $heat_dsn[4],
- host => $heat_dsn[5],
- dbname => $heat_dsn[6],
- allowed_hosts => $allowed_hosts,
- }
+ include ::keystone::db::mysql
+ include ::glance::db::mysql
+ include ::nova::db::mysql
+ include ::neutron::db::mysql
+ include ::cinder::db::mysql
+ include ::heat::db::mysql
if downcase(hiera('ceilometer_backend')) == 'mysql' {
- $ceilometer_dsn = split(hiera('ceilometer_mysql_conn_string'), '[@:/?]')
- class { 'ceilometer::db::mysql':
- user => $ceilometer_dsn[3],
- password => $ceilometer_dsn[4],
- host => $ceilometer_dsn[5],
- dbname => $ceilometer_dsn[6],
- allowed_hosts => $allowed_hosts,
- }
+ include ::ceilometer::db::mysql
}
$rabbit_nodes = hiera('rabbit_node_ips')
diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp
index 8303245f..cfd30f13 100644
--- a/puppet/manifests/overcloud_controller_pacemaker.pp
+++ b/puppet/manifests/overcloud_controller_pacemaker.pp
@@ -407,71 +407,28 @@ MYSQL_HOST=localhost\n",
}
# Create all the database schemas
- # Example DSN format: mysql://user:password@host/dbname
if $sync_db {
- $allowed_hosts = ['%',hiera('mysql_bind_host')]
- $keystone_dsn = split(hiera('keystone::database_connection'), '[@:/?]')
class { 'keystone::db::mysql':
- user => $keystone_dsn[3],
- password => $keystone_dsn[4],
- host => $keystone_dsn[5],
- dbname => $keystone_dsn[6],
- allowed_hosts => $allowed_hosts,
require => Exec['galera-ready'],
}
- $glance_dsn = split(hiera('glance::api::database_connection'), '[@:/?]')
class { 'glance::db::mysql':
- user => $glance_dsn[3],
- password => $glance_dsn[4],
- host => $glance_dsn[5],
- dbname => $glance_dsn[6],
- allowed_hosts => $allowed_hosts,
require => Exec['galera-ready'],
}
- $nova_dsn = split(hiera('nova::database_connection'), '[@:/?]')
class { 'nova::db::mysql':
- user => $nova_dsn[3],
- password => $nova_dsn[4],
- host => $nova_dsn[5],
- dbname => $nova_dsn[6],
- allowed_hosts => $allowed_hosts,
require => Exec['galera-ready'],
}
- $neutron_dsn = split(hiera('neutron::server::database_connection'), '[@:/?]')
class { 'neutron::db::mysql':
- user => $neutron_dsn[3],
- password => $neutron_dsn[4],
- host => $neutron_dsn[5],
- dbname => $neutron_dsn[6],
- allowed_hosts => $allowed_hosts,
require => Exec['galera-ready'],
}
- $cinder_dsn = split(hiera('cinder::database_connection'), '[@:/?]')
class { 'cinder::db::mysql':
- user => $cinder_dsn[3],
- password => $cinder_dsn[4],
- host => $cinder_dsn[5],
- dbname => $cinder_dsn[6],
- allowed_hosts => $allowed_hosts,
require => Exec['galera-ready'],
}
- $heat_dsn = split(hiera('heat::database_connection'), '[@:/?]')
class { 'heat::db::mysql':
- user => $heat_dsn[3],
- password => $heat_dsn[4],
- host => $heat_dsn[5],
- dbname => $heat_dsn[6],
- allowed_hosts => $allowed_hosts,
require => Exec['galera-ready'],
}
+
if downcase(hiera('ceilometer_backend')) == 'mysql' {
- $ceilometer_dsn = split(hiera('ceilometer_mysql_conn_string'), '[@:/?]')
class { 'ceilometer::db::mysql':
- user => $ceilometer_dsn[3],
- password => $ceilometer_dsn[4],
- host => $ceilometer_dsn[5],
- dbname => $ceilometer_dsn[6],
- allowed_hosts => $allowed_hosts,
require => Exec['galera-ready'],
}
}