 f0e55b8742
			
		
	
	f0e55b8742
	
	
	
		
			
			When using MySQL, the database charset should be utf-8. And the default charset is latin1, which will cause glance db sync failed. Closes-bug: #1356887 Change-Id: I50e299410de8068150d1c405994ecb96918fbc7d
		
			
				
	
	
		
			222 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			222 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # encoding: UTF-8
 | |
| #
 | |
| # Cookbook Name:: openstack-common
 | |
| # Attributes:: database
 | |
| #
 | |
| # Copyright 2012-2013, AT&T Services, Inc.
 | |
| # Copyright 2013-2014, SUSE Linux GmbH
 | |
| #
 | |
| # Licensed under the Apache License, Version 2.0 (the "License");
 | |
| # you may not use this file except in compliance with the License.
 | |
| # You may obtain a copy of the License at
 | |
| #
 | |
| # http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| # Unless required by applicable law or agreed to in writing, software
 | |
| # distributed under the License is distributed on an "AS IS" BASIS,
 | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| # See the License for the specific language governing permissions and
 | |
| # limitations under the License.
 | |
| #
 | |
| 
 | |
| # ======================== OpenStack DB Support ================================
 | |
| #
 | |
| # This section of node attributes stores information about the database hosts
 | |
| # used in an OpenStack deployment.
 | |
| #
 | |
| # There is no 'scheme' key. Instead, there is a 'service_type' key that should
 | |
| # contain one of 'sqlite', 'mysql', 'db2' or 'postgresql'
 | |
| #
 | |
| # The ::Openstack::db(<SERVICE_NAME>) library routine allows a lookup from any recipe
 | |
| # to this array, returning the host information for the server that contains
 | |
| # the database for <SERVICE_NAME>, where <SERVICE_NAME> is one of 'compute' (Nova),
 | |
| # 'image' (Glance), 'identity' (Keystone), 'network' (Neutron), or 'volume' (Cinder)
 | |
| #
 | |
| # The ::Openstack::db_connection(<SERVICE_NAME>, <USER>, <PASSWORD>) library routine
 | |
| # returns the SQLAlchemy DB URI for <SERVICE_NAME>, with the supplied user and password
 | |
| # that a calling service might be using when connecting to the database.
 | |
| #
 | |
| # For example, let's assume that the database that is used by the OpenStack Identity
 | |
| # service (Keystone) is configured as follows:
 | |
| #
 | |
| #   host: 192.168.0.3
 | |
| #   port: 3306
 | |
| #   service_type: mysql
 | |
| #   db_name: keystone
 | |
| #
 | |
| # Further suppose that a node running the OpenStack Identity API service needs to
 | |
| # connect to the above identity database server. It has the following in it's node
 | |
| # attributes:
 | |
| #
 | |
| #   node['openstack']['db']['identity']['username'] = 'keystone'
 | |
| #
 | |
| # In a 'keystone' recipe, you might find the following code:
 | |
| #
 | |
| #   user = node['openstack']['db']['identity']['username']
 | |
| #   pass = get_password 'db', 'keystone'
 | |
| #
 | |
| #   sql_connection = ::Openstack::db_uri('identity', user, pass)
 | |
| #
 | |
| # The sql_connection variable would then be set to "mysql://keystone:password@192.168.0.3:keystone"
 | |
| # and could then be written to the keystone.conf file in a template.
 | |
| #
 | |
| # Database Migrations:
 | |
| #
 | |
| #   node['openstack']['db'][<SERVICE_NAME>]['migrate']
 | |
| #
 | |
| # The above attribute causes database migrations to be executed for the given
 | |
| # service.  There are cases where migrations should not be executed.  For
 | |
| # example when upgrading a zone, and the image or identity database are replicated
 | |
| # across many zones.
 | |
| #
 | |
| 
 | |
| # ******************** Database Endpoint **************************************
 | |
| default['openstack']['endpoints']['db']['host'] = '127.0.0.1'
 | |
| default['openstack']['endpoints']['db']['scheme'] = nil
 | |
| default['openstack']['endpoints']['db']['port'] = '3306'
 | |
| default['openstack']['endpoints']['db']['path'] = nil
 | |
| default['openstack']['endpoints']['db']['bind_interface'] = nil
 | |
| 
 | |
| # Default database attributes
 | |
| default['openstack']['db']['server_role'] = 'os-ops-database'
 | |
| default['openstack']['db']['service_type'] = 'mysql'
 | |
| # Database charset during create database
 | |
| default['openstack']['db']['charset'] = {
 | |
|    mysql: 'utf8',
 | |
|    postgresql: nil,
 | |
|    pgsql: nil,
 | |
|    sqlite: nil,
 | |
|    db2: 'utf8',
 | |
|    nosql: nil
 | |
| }
 | |
| 
 | |
| # Database connection options. Should include starting '?'
 | |
| default['openstack']['db']['options'] = {
 | |
|    mysql: "?charset=#{node['openstack']['db']['charset']['mysql']}",
 | |
|    postgresql: '',
 | |
|    sqlite: '',
 | |
|    db2: "?charset=#{node['openstack']['db']['charset']['db2']}",
 | |
|    nosql: ''
 | |
| }
 | |
| 
 | |
| # Database used by the OpenStack Compute (Nova) service
 | |
| default['openstack']['db']['compute']['service_type'] = node['openstack']['db']['service_type']
 | |
| default['openstack']['db']['compute']['host'] = node['openstack']['endpoints']['db']['host']
 | |
| default['openstack']['db']['compute']['port'] = node['openstack']['endpoints']['db']['port']
 | |
| default['openstack']['db']['compute']['db_name'] = 'nova'
 | |
| default['openstack']['db']['compute']['username'] = 'nova'
 | |
| default['openstack']['db']['compute']['options'] = node['openstack']['db']['options']
 | |
| 
 | |
| # Database used by the OpenStack Identity (Keystone) service
 | |
| default['openstack']['db']['identity']['service_type'] = node['openstack']['db']['service_type']
 | |
| default['openstack']['db']['identity']['host'] = node['openstack']['endpoints']['db']['host']
 | |
| default['openstack']['db']['identity']['port'] = node['openstack']['endpoints']['db']['port']
 | |
| default['openstack']['db']['identity']['db_name'] = 'keystone'
 | |
| default['openstack']['db']['identity']['username'] = 'keystone'
 | |
| default['openstack']['db']['identity']['migrate'] = true
 | |
| default['openstack']['db']['identity']['options'] = node['openstack']['db']['options']
 | |
| 
 | |
| # Database used by the OpenStack Image (Glance) service
 | |
| default['openstack']['db']['image']['service_type'] = node['openstack']['db']['service_type']
 | |
| default['openstack']['db']['image']['host'] = node['openstack']['endpoints']['db']['host']
 | |
| default['openstack']['db']['image']['port'] = node['openstack']['endpoints']['db']['port']
 | |
| default['openstack']['db']['image']['db_name'] = 'glance'
 | |
| default['openstack']['db']['image']['username'] = 'glance'
 | |
| default['openstack']['db']['image']['migrate'] = true
 | |
| default['openstack']['db']['image']['options'] = node['openstack']['db']['options']
 | |
| 
 | |
| # Database used by the OpenStack Network (Neutron) service
 | |
| default['openstack']['db']['network']['service_type'] = node['openstack']['db']['service_type']
 | |
| default['openstack']['db']['network']['host'] = node['openstack']['endpoints']['db']['host']
 | |
| default['openstack']['db']['network']['port'] = node['openstack']['endpoints']['db']['port']
 | |
| default['openstack']['db']['network']['db_name'] = 'neutron'
 | |
| default['openstack']['db']['network']['username'] = 'neutron'
 | |
| default['openstack']['db']['network']['options'] = node['openstack']['db']['options']
 | |
| # The SQLAlchemy connection string used to connect to the slave database
 | |
| default['openstack']['db']['network']['slave_connection'] = ''
 | |
| # Database reconnection retry times - in event connectivity is lost
 | |
| default['openstack']['db']['network']['max_retries'] = 10
 | |
| # Database reconnection interval in seconds - if the initial connection to the
 | |
| # database fails
 | |
| default['openstack']['db']['network']['retry_interval'] = 10
 | |
| # Minimum number of SQL connections to keep open in a pool
 | |
| default['openstack']['db']['network']['min_pool_size'] = 1
 | |
| # Maximum number of SQL connections to keep open in a pool
 | |
| default['openstack']['db']['network']['max_pool_size'] = 10
 | |
| # Timeout in seconds before idle sql connections are reaped
 | |
| default['openstack']['db']['network']['idle_timeout'] = 3600
 | |
| # If set, use this value for max_overflow with sqlalchemy
 | |
| default['openstack']['db']['network']['max_overflow'] = 20
 | |
| # Verbosity of SQL debugging information. 0=None, 100=Everything
 | |
| default['openstack']['db']['network']['connection_debug'] = 0
 | |
| # Add python stack traces to SQL as comment strings
 | |
| default['openstack']['db']['network']['connection_trace'] = false
 | |
| # If set, use this value for pool_timeout with sqlalchemy
 | |
| default['openstack']['db']['network']['pool_timeout'] = 10
 | |
| 
 | |
| # Database used by the OpenStack Block Storage (Cinder) service
 | |
| default['openstack']['db']['block-storage']['service_type'] = node['openstack']['db']['service_type']
 | |
| default['openstack']['db']['block-storage']['host'] = node['openstack']['endpoints']['db']['host']
 | |
| default['openstack']['db']['block-storage']['port'] = node['openstack']['endpoints']['db']['port']
 | |
| default['openstack']['db']['block-storage']['db_name'] = 'cinder'
 | |
| default['openstack']['db']['block-storage']['username'] = 'cinder'
 | |
| default['openstack']['db']['block-storage']['options'] = node['openstack']['db']['options']
 | |
| 
 | |
| # Database used by the OpenStack Dashboard (Horizon)
 | |
| default['openstack']['db']['dashboard']['service_type'] = node['openstack']['db']['service_type']
 | |
| default['openstack']['db']['dashboard']['host'] = node['openstack']['endpoints']['db']['host']
 | |
| default['openstack']['db']['dashboard']['port'] = node['openstack']['endpoints']['db']['port']
 | |
| default['openstack']['db']['dashboard']['db_name'] = 'horizon'
 | |
| default['openstack']['db']['dashboard']['username'] = 'dash'
 | |
| default['openstack']['db']['dashboard']['migrate'] = true
 | |
| default['openstack']['db']['dashboard']['options'] = node['openstack']['db']['options']
 | |
| 
 | |
| # Database used by OpenStack Metering (Ceilometer)
 | |
| default['openstack']['db']['telemetry']['service_type'] = node['openstack']['db']['service_type']
 | |
| default['openstack']['db']['telemetry']['host'] = node['openstack']['endpoints']['db']['host']
 | |
| default['openstack']['db']['telemetry']['port'] = node['openstack']['endpoints']['db']['port']
 | |
| default['openstack']['db']['telemetry']['db_name'] = 'ceilometer'
 | |
| default['openstack']['db']['telemetry']['username'] = 'ceilometer'
 | |
| default['openstack']['db']['telemetry']['nosql']['used'] = false
 | |
| default['openstack']['db']['telemetry']['nosql']['port'] = '27017'
 | |
| default['openstack']['db']['telemetry']['options'] = node['openstack']['db']['options']
 | |
| 
 | |
| # Database used by OpenStack Orchestration (Heat)
 | |
| default['openstack']['db']['orchestration']['service_type'] = node['openstack']['db']['service_type']
 | |
| default['openstack']['db']['orchestration']['host'] = node['openstack']['endpoints']['db']['host']
 | |
| default['openstack']['db']['orchestration']['port'] = node['openstack']['endpoints']['db']['port']
 | |
| default['openstack']['db']['orchestration']['db_name'] = 'heat'
 | |
| default['openstack']['db']['orchestration']['username'] = 'heat'
 | |
| default['openstack']['db']['orchestration']['options'] = node['openstack']['db']['options']
 | |
| 
 | |
| # Database used by OpenStack Database (Trove)
 | |
| default['openstack']['db']['database']['service_type'] = node['openstack']['db']['service_type']
 | |
| default['openstack']['db']['database']['host'] = node['openstack']['endpoints']['db']['host']
 | |
| default['openstack']['db']['database']['port'] = node['openstack']['endpoints']['db']['port']
 | |
| default['openstack']['db']['database']['db_name'] = 'trove'
 | |
| default['openstack']['db']['database']['username'] = 'trove'
 | |
| default['openstack']['db']['database']['options'] = node['openstack']['db']['options']
 | |
| 
 | |
| # Switch to store the MySQL root password in a databag instead of
 | |
| # using the generated OpenSSL cookbook secure_password one.
 | |
| default['openstack']['db']['root_user_use_databag'] = false
 | |
| 
 | |
| # If above root_user_use_databag is true, the below string
 | |
| # will be passed to the get_password library routine.
 | |
| default['openstack']['db']['root_user_key'] = 'mysqlroot'
 | |
| 
 | |
| # platform and DBMS-specific python client packages
 | |
| default['openstack']['db']['python_packages'] = {
 | |
|   postgresql: ['python-psycopg2'],
 | |
|   sqlite: []
 | |
| }
 | |
| case node['platform_family']
 | |
| when 'rhel'
 | |
|   default['openstack']['db']['python_packages']['mysql'] = ['MySQL-python']
 | |
|   default['openstack']['db']['python_packages']['db2'] = ['python-ibm-db', 'python-ibm-db-sa']
 | |
| when 'suse'
 | |
|   default['openstack']['db']['python_packages']['mysql'] = ['python-mysql']
 | |
| when 'debian'
 | |
|   default['openstack']['db']['python_packages']['mysql'] = ['python-mysqldb']
 | |
| end
 |