パッケージで丸ごとControllerNodeのインストール、そしてKeystone少々までいきます。
パッケージに質問を80個近く投げられて最初はよくわかんないですが、どうせ何かに失敗して丸ごと構築しなおしたりして、慣れて何も見ずに入力できるようになることうけあいです。
dbconfig-common
コンポーネントが多いので使います。
1 2 3 4 5 6 |
apt-get install dbconfig-common dpkg-reconfigure dbconfig-common Keep "administrative" database passwords? <いいえ> Will this server be used to access remote databases? <はい> |
MySQL
openstack-proxy-node の依存で入りますが、GRANTが足りなくてどうせエラーになるので、お好み構成にするためにも先に入れてしまいます。
1 |
apt-get install mysql-server-5.5 |
設定ファイル
/etc/mysql/conf.d/local.cnf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
[mysqld] bind-address = 0.0.0.0 datadir = /data/mysql tmpdir = /data/mysql_tmp #skip-name-resolve ##----------------- Log -----------------## log-error = /data/mysql_log/system/error.log slow_query_log slow_query_log_file = /data/mysql_log/system/slow-queries.log long_query_time = 0.1 #log-queries-not-using-indexes # uncomment if you want to save queries does not using index min_examined_row_limit = 10000 # many rows query is logged to slow_query_log general_log = 0 general_log_file = /data/mysql_log/system/general.log ##----------------- Replication -----------------## # ServerID server-id = 1012611 # specify unique id on replication servers ##----------------- Replication Master -----------------## log-bin = /data/mysql_log/bin/bin log-bin-index = /data/mysql_log/bin/index max_binlog_size = 100M expire_logs_days = 10 binlog-ignore-db = mysql #binlog-do-db = db_name #binlog_format = STATEMENT # STATEMENT(default), MIXED, ROW log_slave_updates # for slave of slave on slave log_bin_trust_function_creators ##---------- Replication Slave ----------## relay-log = /data/mysql_log/relay/relay relay-log-index = /data/mysql_log/relay/index relay-log-info-file = /data/mysql_log/relay/info max_relay_log_size = 100M replicate-ignore-db = mysql #replicate-do-db = db_name slave_compressed_protocol = 0 #skip-slave-start |
ディレクトリ作成/データ移動/再起動
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# ディレクトリ作成 mkdir /data/mysql_backup mkdir /data/mysql /data/mysql_tmp mkdir -p /data/mysql_log/bin /data/mysql_log/relay /data/mysql_log/system chmod -R 700 /data/mysql* chown -R mysql:mysql /data/mysql* # いったん停止 /etc/init.d/mysql stop # データ丸コピ cp -Rp /var/lib/mysql/* /data/mysql/ # 起動 /etc/init.d/mysql start # LISTENとエラーログ確認 lsof -i:3306 less /data/mysql_log/system/error.log |
DB GRANT修正
パッケージインストール時に各コンポーネントが、hostsのFQDNでアクセスしようとするので先に許可しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
mysql -u root -p mysql mysql> GRANT ALL PRIVILEGES ON *.* TO root@'openstack-01.opst.dc' IDENTIFIED BY 'パスワード'; GRANT ALL on keystonedb.* to keystone@localhost IDENTIFIED BY 'パスワード'; GRANT ALL on keystonedb.* to keystone@'10.1.26.%' IDENTIFIED BY 'パスワード'; GRANT ALL on keystonedb.* to keystone@'openstack-01.opst.dc' IDENTIFIED BY 'パスワード'; GRANT ALL on cinderdb.* to 'cinder-common'@localhost IDENTIFIED BY 'パスワード'; GRANT ALL on cinderdb.* to 'cinder-common'@'10.1.26.%' IDENTIFIED BY 'パスワード'; GRANT ALL on cinderdb.* to 'cinder-common'@'openstack-01.opst.dc' IDENTIFIED BY 'パスワード'; GRANT ALL on glancedb.* to 'glance-common'@localhost IDENTIFIED BY 'パスワード'; GRANT ALL on glancedb.* to 'glance-common'@'10.1.26.%' IDENTIFIED BY 'パスワード'; GRANT ALL on glancedb.* to 'glance-common'@'openstack-01.opst.dc' IDENTIFIED BY 'パスワード'; GRANT ALL on novadb.* to 'nova-common'@localhost IDENTIFIED BY 'パスワード'; GRANT ALL on novadb.* to 'nova-common'@'10.1.26.%' IDENTIFIED BY 'パスワード'; GRANT ALL on novadb.* to 'nova-common'@'openstack-01.opst.dc' IDENTIFIED BY 'パスワード'; GRANT ALL on quantumpluginopenvswitchdb.* to 'quantum-plugin-o'@localhost IDENTIFIED BY 'パスワード'; GRANT ALL on quantumpluginopenvswitchdb.* to 'quantum-plugin-o'@'10.1.26.%' IDENTIFIED BY 'パスワード'; GRANT ALL on quantumpluginopenvswitchdb.* to 'quantum-plugin-o'@'openstack-01.opst.dc' IDENTIFIED BY 'パスワード'; GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repluser@"10.1.26.%" IDENTIFIED BY 'パスワード'; DELETE FROM user WHERE Password = ''; FLUSH PRIVILEGES; exit; |
本番用に構築するのであれば、この時点で他のサーバにレプリケーションしたり、バックアップも仕込んでおくとよいです。
Proxy node
パッケージメモ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 |
apt-get install \ openstack-proxy-node firmware-linux-nonfree \ novnc nova-consoleauth nova-spicehtml5proxy python-ceph \ cinder-volume quantum-metadata-agent python-ceilometer \ iputils-arping ceilometer-api を設定しています Register Ceilometer in the keystone endpoint catalog? <はい> MySQLの設定 MySQLパスワード MySQL管理者のパスワード quantum-common を設定しています Auth server hostname: 10.1.26.11 Auth server password: OpenStack管理者ユーザのパスワード quantum-plugin-openvswitch を設定しています Type of network to allocate for tenant networks: vlan Enable tunneling: False Tunnel id ranges: 1:1000 Local IP address of this hypervisor: 10.1.26.11 Set up a database for quantum-plugin-openvswitch? <はい> quantum-plugin-openvswitch のデータベースを dbconfig-common で設定しますか? <はい> quantum-plugin-openvswitch が使うデータベースの種類: mysql quantum-plugin-openvswitch の MySQL データベースへの接続方法: TCP/IP quantum-plugin-openvswitch 用 サーバが動作しているホスト: 10.1.26.11 サービスのポート番号: 3306 データベースの管理権限を持つユーザのパスワード: MySQL管理者のパスワード quantum-plugin-openvswitch 用の MySQL アプリケーションパスワード: Quantumのパスワード quantum-server を設定しています Register Quantum in the keystone endpoint catalog? <はい> Keystone Auth Token: トークン文字列 cinder-common を設定しています You can change this setting later on by running "dpkg-reconfigure -plow cinder-common". Set up a database for Cinder? <はい> cinder-common のデータベースを dbconfig-common で設定しますか? <はい> cinder-common が使うデータベースの種類: mysql cinder-common の MySQL データベースへの接続方法: TCP/IP cinder-common 用 サーバが動作しているホスト: 10.1.26.11 サービスのポート番号: 3306 データベースの管理権限を持つユーザのパスワード: MySQL管理者のパスワード cinder-common 用の MySQL アプリケーションパスワード: Cinderのパスワード Auth server hostname: 10.1.26.11 Auth server password: OpenStack管理者ユーザのパスワード Start cinder services at boot? <はい> Cinder volume group: cinder-volumes cinder-api を設定しています Register Cinder in the keystone endpoint catalog? <はい> Keystone Auth Token: トークン文字列 glance-common を設定しています Set up a database for glance? <はい> glance-common のデータベースを dbconfig-common で設定しますか? <はい> glance-common が使うデータベースの種類: mysql glance-common の MySQL データベースへの接続方法: TCP/IP glance-common 用 サーバが動作しているホスト: 10.1.26.11 サービスのポート番号: 3306 データベースの管理権限を持つユーザのパスワード: MySQL管理者のパスワード glance-common 用の MySQL アプリケーションパスワード: Glanceのパスワード Pipeline flavor: keystone Auth server hostname: 10.1.26.11 Auth server password: OpenStack管理者ユーザのパスワード glance-api を設定しています Register Glance in the keystone endpoint catalog? <はい> Keystone Auth Token: トークン文字列 keystone を設定しています Set up a database for Keystone? <はい> keystone のデータベースを dbconfig-common で設定しますか? <はい> keystone が使うデータベースの種類: mysql keystone の MySQL データベースへの接続方法: TCP/IP keystone 用 サーバが動作しているホスト: 10.1.26.11 サービスのポート番号: 3306 データベースの管理権限を持つユーザのパスワード: MySQL管理者のパスワード keystone 用の MySQL アプリケーションパスワード: Keystoneのパスワード Authentication server administration token: トークン文字列 Register admin tenants? <はい> Password of the admin user: OpenStack管理者ユーザのパスワード Register keystone endpoint? <はい> Keystone endpoint IP address: 10.1.26.11 nova-common を設定しています Set up a database for Nova? <はい> nova-common のデータベースを dbconfig-common で設定しますか? <はい> nova-common が使うデータベースの種類: mysql nova-common の MySQL データベースへの接続方法: TCP/IP nova-common 用 サーバが動作しているホスト: 10.1.26.11 サービスのポート番号: 3306 データベースの管理権限を持つユーザのパスワード: MySQL管理者のパスワード nova-common 用の MySQL アプリケーションパスワード: Novaのパスワード Auth server hostname: 10.1.26.11 Auth server password: OpenStack管理者ユーザのパスワード Start nova services at boot? <はい> API to activate: ec2,metadata,osapi_compute Value for my_ip: 10.1.26.11 nova-api を設定しています Register Glance in the keystone endpoint catalog? <はい> Keystone Auth Token: トークン文字列 openstack-dashboard-apache を設定しています In Debian, Apache comes with a default website and a default page, configured in /etc/apache2/sites-available/default. Select if this configuration should be disabled and replaced by the Openstack Dashboard configuration. Activate Dashboard and disable default VirtualHost? <はい> Please choose if you would like Horizon to be installed on HTTPS only, with a redirection to HTTPS if HTTP is in use. Should the Dashboard be installed on HTTPS? <いいえ> |
エラーなく終了すればOKです。
RabbitMQ
ユーザ作成をしますが、今回はコンポーネント毎に作らないで、全部共通にしています。
1 2 3 4 5 6 7 |
# 起動ポート確認 lsof -i:5672 # ユーザ作成 rabbitmqctl add_vhost /openstack rabbitmqctl add_user openstack パスワード rabbitmqctl set_permissions -p /openstack openstack ".*" ".*" ".*" |
Keystone+LDAP slapd
もしLDAPでKeystoneデータを管理したい奇特な方がいる場合は、こちらを参照して slapd を構築、もしくは既存の slapd にデータを作成しておいてください。MySQL管理のままいく場合は、adminプロジェクト、adminユーザで管理者ロールに登録されているはずなので、それを使って当分作業するとよいです。エンドポイントはLDAPにしようと、MySQLのデータが使われます。
OpenStackに慣れたら、keystoneコマンドの tenant-create, user-create, role-create, user-role-add を使って、複数のプロジェクト・管理権限のないユーザなどを作って運用に備えるとよいです。
動作確認
どんなバックエンドにしようと、Keystoneが無事に動くかの確認方法は一緒です。認証に成功したら、JSONでガバッとレスポンスが返ります。
1 2 3 4 5 6 7 |
curl -d '{"auth": {"tenantName": "admin", "passwordCredentials":{"username": "OpenStackAdmin", "password": "パスワード" } } }' \ -H "Content-type:application/json" http://10.1.26.11:35357/v2.0/tokens \ | python -mjson.tool |
ここまでで肝心要の認証機能が動いたので、次回からコンポーネント設定をしていきます。