summaryrefslogtreecommitdiffstats
path: root/puppet
diff options
context:
space:
mode:
authorDan Prince <dprince@redhat.com>2015-07-20 07:56:26 -0400
committerDan Prince <dprince@redhat.com>2015-07-21 08:36:39 -0400
commitffa69110969d79c222a57d71da4d9dcf6fa22b3f (patch)
tree76aebd894c8889f84885230c86c21cfbaff4a012 /puppet
parent7fc1f4df89019d2771d5d055a99d02ad3373e6b9 (diff)
Drive DB initialization via Hiera
This patch moves most of the ::db::mysql parameter initialization into a new database.yaml Hiera file. This cleans up the controller manifests and allows us to define things in a single location across the two implementations (HA and nonHA). Change-Id: I895b753b329097a96a6c6f3a03a5fcebefe32dd4
Diffstat (limited to 'puppet')
-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
4 files changed, 75 insertions, 102 deletions
diff --git a/puppet/controller-puppet.yaml b/puppet/controller-puppet.yaml
index 1271ca97..629fe036 100644
--- a/puppet/controller-puppet.yaml
+++ b/puppet/controller-puppet.yaml
@@ -822,6 +822,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]}]}
@@ -838,6 +839,7 @@ resources:
- controller_extraconfig
- extraconfig
- controller
+ - database
- object
- swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
- ceph_cluster # provided by CephClusterConfig
@@ -861,6 +863,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:
@@ -907,6 +911,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}
@@ -930,6 +935,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}
@@ -951,6 +957,7 @@ resources:
heat::database_connection: {get_input: heat_dsn}
heat::instance_user: heat-admin
heat::debug: {get_input: debug}
+ heat::db::mysql::password: {get_input: heat_password}
# Keystone
keystone::admin_token: {get_input: admin_token}
@@ -963,6 +970,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}
@@ -976,6 +984,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}
@@ -1014,6 +1023,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}
@@ -1031,6 +1041,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}
@@ -1052,6 +1063,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 c9ff86c6..0b23a632 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 24a2f734..6a41d16d 100644
--- a/puppet/manifests/overcloud_controller_pacemaker.pp
+++ b/puppet/manifests/overcloud_controller_pacemaker.pp
@@ -400,71 +400,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'],
}
}