From ffa69110969d79c222a57d71da4d9dcf6fa22b3f Mon Sep 17 00:00:00 2001 From: Dan Prince Date: Mon, 20 Jul 2015 07:56:26 -0400 Subject: 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 --- puppet/controller-puppet.yaml | 12 ++++ puppet/hieradata/database.yaml | 55 ++++++++++++++++++ puppet/manifests/overcloud_controller.pp | 65 +++------------------- puppet/manifests/overcloud_controller_pacemaker.pp | 45 +-------------- 4 files changed, 75 insertions(+), 102 deletions(-) create mode 100644 puppet/hieradata/database.yaml (limited to 'puppet') 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'], } } -- cgit 1.2.3-korg