多くの OpenStack サービスは、データベースにアクセスできるように設定する必要があります。これらは、以下のように DSN (Database Source Name) ディレクティブで設定されます。
[database]
connection = mysql+pymysql://keystone:0dec658e3f14a7d@localhost/keystonedb
この connection ディレクティブは、Debian の標準インターフェースである dbconfig-common パッケージにより処理されます。これにより Debian のデータベースパラメーターを設定できます。これは多くの言語に翻訳されたプロンプトを持ち、データベースバックエンド SQLite、MySQL、PostgreSQL に対応しています。
dbconfig-common パッケージは、デフォルトでは、OpenStack サービスが SQLite を使用するよう設定します。そのため、debconf を非対話モードで事前設定なしで利用した場合、インストールした OpenStack サービスは SQLite を使用します。
dbconfig-common は、デフォルトでは、ネットワーク経由でのデータベースサーバーへのアクセスを提供しません。dbconfig-common パッケージで、UNIX ソケットファイル経由ではなくネットワーク経由でアクセスするリモートデータベースサーバーをプロンプトに表示させたい場合、以下のように再設定します。
# apt-get install dbconfig-common && dpkg-reconfigure dbconfig-common
dbconfig-common パッケージを再設定する際には、以下の画面が表示されます。
他の debconf プロンプトと異なり、debconf-set-selections を使用して dbconfig-common プロンプトに対する応答を事前設定することはできません。代わりに、/etc/dbconfig-common にファイルを作成する必要があります。例えば、以下のように、/etc/dbconfig-common/keystone.conf に dbconfig-common の Keystone 設定を作成することができます。
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=''
このファイルを作成した後、このコマンドを実行します。
# apt-get install keystone
Identity サービスは、データベースバックエンドとして MySQL、データベース名として keystonedb 、ローカルホストのソケットファイルを指定してインストールされます。対応する DSN は以下のようになるでしょう。
[database]
connection = mysql+pymysql://keystone:PASSWORD@localhost/keystonedb
dbconfig-common パッケージは、MySQL にこれらのアクセス権を設定し、データベースを作成します。OpenStack 2014.1.1 以降、Debian のすべての OpenStack パッケージは、データベース作成後に以下の MySQL クエリーを実行します (MySQL をバックエンドとして使用する場合)。
ALTER DATABASE keystone CHARACTER SET utf8 COLLATE utf8_unicode_ci
そのため、Debian を使用する場合、データベースの作成、アクセス権の設定、文字コードセットについて気にする必要はありません。必要なことはすべて、パッケージにより処理されます。
例として、cinder-common パッケージのスクリーンショットを以下に載せます。
Debian のデフォルトでは、MySQL サーバーにアクセスできるのは、ソケットファイル経由のローカルホストか、127.0.0.1 からだけです。ネットワーク経由でアクセスする場合、ユーザーは /etc/mysql/my.cnf ファイルと mysql.user テーブルを編集する必要があります。このために、Debian は openstack-deploy パッケージでヘルパースクリプトを提供しています。使用するには、このパッケージをインストールして、
# apt-get install openstack-deploy
ヘルパースクリプトを実行します。
# /usr/share/openstack-deploy/mysql-remote-root
別の方法として、このパッケージをインストールしたくない場合には、以下のスクリプトを実行して、リモート root アクセスを有効にします。
#!/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
複数ノードに OpenStack サービスをインストールする前にリモートアクセスを有効化する必要があります。
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.