Configurer la base de données avec dbconfig-common

Configurer la base de données avec dbconfig-common

Beaucoup des services d’OpenStack nécessite une configuration pour accéder à une base de données. Ils sont configurés par une directive DSN (Database Source Name) comme ci-dessous:

[database]
connection = mysql+pymysql://keystone:0dec658e3f14a7d@localhost/keystonedb

Cette directive connection va être traitée par le package dbconfig-common, qui fournit une interface Debian standard. Elle vous permet de configurer les paramètres de la base de données Debian. Elle inclut des prompts localisés pour de nombreux langages et elle supporte les backends de base de données suivants: SQLite, MySQL, and PostgreSQL.

Par défaut, le package dbconfig-common configure les services OpenStack pour utiliser SQLite. Donc, si vous utilisez debconf en mode non-interactif et sans pré-remplissage, les services OpenStack que vous allez installer utiliseront SQLite.

Par defaut, dbconfig-common ne fournit pas d’accès à un serveur de base de données par le réseau. Si vous vous souhaitez que le package dbconfig-common prompte pour un serveur de base de données distant accédé par le réseau et non à travers un socket UNIX, reconfigurez-le comme ci-dessous:

# apt-get install dbconfig-common && dpkg-reconfigure dbconfig-common

Cet écran apparait quand vous re-configurez le package dbconfig-common:

../_images/dbconfig-common_keep_admin_pass.png

../_images/dbconfig-common_used_for_remote_db.png

Contrairement aux autres prompts debconf, vous ne pouvez pas pré-remplir les réponses pour les prompts dbconfig-common en utilisant debconf-set-selections. A la place, vous devez créer un fichier dans /etc/dbconfig-common. Par exemple, vous pourriez créer un fichier de configuration keystone pour dbconfig-common qui serait localisé dans /etc/dbconfig-common/keystone.conf, comme ci-dessous:

dbc_install='true'
dbc_upgrade='true'
dbc_remove=''
dbc_dbtype='mysql'
dbc_dbuser='keystone'
dbc_dbpass='PASSWORD'
dbc_dbserver=''
dbc_dbport=''
dbc_dbname='keystonedb'
dbc_dbadmin='root'
dbc_basepath=''
dbc_ssl=''
dbc_authmethod_admin=''
dbc_authmethod_user=''

Après avoir créé ce fichier, exécuter la commande suivante:

# apt-get install keystone

Le service d’Identité est installé avec MySQL comme base de données, keystonedb comme nom de base, et le socket localhost. Le DNS correspondant sera alors:

[database]
connection = mysql+pymysql://keystone:PASSWORD@localhost/keystonedb

Le package dbconfig-common va configurer MySQL pour ces droits d’accès, et crée la base de donnée pour vous. Depuis OpenStack 2014.1.1, tous les packages OpenStack dans Debian effectuent la requête MySQL suivante après la création de la base de données (si vous décidez d’utiliser MySQL comme base):

ALTER DATABASE keystone CHARACTER SET utf8 COLLATE utf8_unicode_ci

Donc, si on utilise Debian, pas la peine de se préoccuper de création de base de données, de droits d’accès et de jeux de caractères. Tout ça est géré pour vous par les packages.

A titre d’exemple, voici des copies d’écran du package cinder-common:

../_images/dbconfig-common_1_configure-with-dbconfig-yes-no.png

../_images/dbconfig-common_2_db-types.png

../_images/dbconfig-common_3_connection_method.png

../_images/dbconfig-common_4_mysql_root_password.png

../_images/dbconfig-common_5_mysql_app_password.png

../_images/dbconfig-common_6_mysql_app_password_confirm.png

Par défaut dans Debian, vous pouvez accéder au serveur MySQL soit de localhost à travers le fichier socket ou 127.0.0.1. Pour y accéder via le réseau, vous devez éditer le fichier /etc/mysql/my.cnf, et la table mysql.user. Pour ce faire, Debian fournit un script helper dans le package openstack-deploy. Pour l’utiliser, installer le package:

# apt-get install openstack-deploy

et exécuter le script helper:

# /usr/share/openstack-deploy/mysql-remote-root

Autrement, si vous ne souhaitez pas installer ce package, exécuter ce script pour activer l’accès root à distance:

#!/bin/sh

set -e

SQL="mysql --defaults-file=/etc/mysql/debian.cnf -Dmysql -e"

ROOT_PASS=`${SQL} "SELECT Password FROM user WHERE User='root' LIMIT 1;" \
  | tail -n 1`
${SQL} "REPLACE INTO user SET host='%', user='root',\
  password='${ROOT_PASS}', Select_priv='Y', Insert_priv='Y',\
  Update_priv='Y', Delete_priv='Y', Create_priv='Y', Drop_priv='Y',\
  Reload_priv='Y', Shutdown_priv='Y', Process_priv='Y',  File_priv='Y',\
  Grant_priv='Y', References_priv='Y', Index_priv='Y', Alter_priv='Y',\
  Super_priv='Y', Show_db_priv='Y', Create_tmp_table_priv='Y',\
  Lock_tables_priv='Y', Execute_priv='Y', Repl_slave_priv='Y',\
  Repl_client_priv='Y', Create_view_priv='Y', Show_view_priv='Y',\
  Create_routine_priv='Y', Alter_routine_priv='Y', Create_user_priv='Y',\
  Event_priv='Y', Trigger_priv='Y' "
${SQL} "FLUSH PRIVILEGES"
sed -i 's|^bind-address[ \t]*=.*|bind-address = 0.0.0.0|' /etc/mysql/my.cnf
/etc/init.d/mysql restart

Vous devez activer l’accès distant pour pouvoir installer les services OpenStack sur plusieurs nœuds.

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.