Description of problem: Deployment fails with: Error: Duplicate declaration: Mysql_database[fd00] is already declared in file /etc/puppet/modules/openstacklib/manifests/db/mysql.pp:57; cannot redeclare at /etc/puppet/modules/openstacklib/manifests/db/mysql.pp:57 on node overcloud-controller-0.localdomain Version-Release number of selected component (if applicable): openstack-puppet-modules-2015.1.8-36.el7ost.noarch How reproducible: 100% Steps to Reproduce: 1. Deploy ipv6 enabled overcloud Actual results: Deployment failes: { "status": "FAILED", "server_id": "2a533762-a9ec-4347-be30-8e4bbec1b9de", "config_id": "2af557bd-92e9-4ca8-8e3a-50b49f29b7e9", "output_values": { "deploy_stdout": "", "deploy_stderr": "Device \"br_ex\" does not exist.\nDevice \"ovs_system\" does not exist.\n\u001b[1;31mError: Duplicate declaration: Mysql_database[fd00] is already declared in file /etc/puppet/modules/openstacklib/manifests/db/mysql.pp:57; cannot redeclare at /etc/puppet/modules/openstacklib/manifests/db/mysql.pp:57 on node overcloud-controller-0.localdomain\u001b[0m\n\u001b[1;31mError: Duplicate declaration: Mysql_database[fd00] is already declared in file /etc/puppet/modules/openstacklib/manifests/db/mysql.pp:57; cannot redeclare at /etc/puppet/modules/openstacklib/manifests/db/mysql.pp:57 on node overcloud-controller-0.localdomain\u001b[0m\n", "deploy_status_code": 1 }, "creation_time": "2016-01-16T11:14:32Z", "updated_time": "2016-01-16T11:15:02Z", "input_values": {}, "action": "CREATE", "status_reason": "deploy_status_code : Deployment exited with non-zero status code: 1", "id": "62df5503-ff7f-4525-a09a-8ffa897a885c" } stack@instack:~>>> cat deploy.command Expected results: Deployment proceeds.
Created attachment 1115428 [details] the overcloud_controller_pacemaker puppet manifest from the failed node contents of /var/lib/heat-config/heat-config-puppet/14205c1c-b115-45bb-afe1-672a0df51a03.pp from the error trace
In the created manifest on the controller node we have this: $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'], } ... The problem when using IPv6 is this idiom : split(hiera('cinder::database_connection'), '[@:/?]') It works ok for ipv4, but with ipv6, ":" is part of the url. For instance: cinder::database_connection = mysql://cinder:7ZT8sXWMxQMm2wVGWEEvjpCbm@[fd00:fd00:fd00:2000:f816:3eff:fec7:b967]/cinder giving dbname=fd00 instead of cinder. This is true for all ".*::database_connection". Then all the database will be named "fd00", giving rise to the aforementioned error.
Deployed 1 ctrl + 1 compute successfuly with: openstack-tripleo-heat-templates-0.8.6-106.el7ost.noarch
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2016-0264.html