このセクションは、Compute サービス ( nova ) をコントローラーノードにインストールし、設定する方法を紹介します。

データベース環境の設定

ここでは、Compute サービス ( nova ) のデータベース環境を設定します。

データベースクライアントを使用して、データベースサーバーに root ユーザーとして接続します。

[root@controller ~]# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.1.20-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

データベース nova_api 、nova 、nova_cell0 、placement を作成します。

MariaDB [(none)]> CREATE DATABASE nova_api;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> CREATE DATABASE nova;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> CREATE DATABASE nova_cell0;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> CREATE DATABASE placement;
Query OK, 1 row affected (0.00 sec)

データベースに適切なアクセス権を付与します。ここでは nova_api 、nova 、nova_cell0 データベースに接続するパスワードは NOVA_DB_PASS 、placement データベースに接続するパスワードは PLACEMENT_DB_PASS としているので、実際の情報に置き換えてください。

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
    ->  IDENTIFIED BY 'NOVA_DB_PASS';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
    ->  IDENTIFIED BY 'NOVA_DB_PASS';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
    ->  IDENTIFIED BY 'NOVA_DB_PASS';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
    ->  IDENTIFIED BY 'NOVA_DB_PASS';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
    ->  IDENTIFIED BY 'NOVA_DB_PASS';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
    ->  IDENTIFIED BY 'NOVA_DB_PASS';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' \
    ->  IDENTIFIED BY 'PLACEMENT_DB_PASS';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' \
    ->  IDENTIFIED BY 'PLACEMENT_DB_PASS';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit
Bye
[root@controller ~]# 

クレデンシャルとエンドポイントの作成

admin クレデンシャルを読み込み、管理者専用 CLI コマンドへのアクセス権を取得します。

[root@controller ~]# . openrc/admin-openrc 
[root@controller ~]# 

nova ユーザーを作成します。ここでは、nova ユーザーのパスワードは NOVA_PASS としているので、適宜変更して下さい。

[root@controller ~]# openstack user create --domain default --password-prompt nova
User Password: NOVA_PASS
Repeat User Password: NOVA_PASS
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 9931465e648344669764ad704f1b5170 |
| name                | nova                             |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[root@controller ~]# 

admin の ロールを nova ユーザーと service プロジェクトに追加します。

[root@controller ~]# openstack role add --project service --user nova admin
[root@controller ~]# 

nova サービスエンティティーを作成します。

[root@controller ~]# openstack service create --name nova \
>   --description "OpenStack Compute" compute
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Compute                |
| enabled     | True                             |
| id          | db009971d19a4e069af2eaf7ff825104 |
| name        | nova                             |
| type        | compute                          |
+-------------+----------------------------------+
[root@controller ~]# 

Compute サービスの API エンドポイントを作成します。

[root@controller ~]# openstack endpoint create --region RegionOne \
>   compute public http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | af0b62545a0446628452acc1b9806c83 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | db009971d19a4e069af2eaf7ff825104 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+
[root@controller ~]# 
[root@controller ~]# openstack endpoint create --region RegionOne \
>   compute internal http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 7578099b350b483da4266cfa45588fe8 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | db009971d19a4e069af2eaf7ff825104 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+
[root@controller ~]# 
[root@controller ~]# openstack endpoint create --region RegionOne \
>   compute admin http://controller:8774/v2.1
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 0c052f0e1ce240669e4cec053a4222d5 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | db009971d19a4e069af2eaf7ff825104 |
| service_name | nova                             |
| service_type | compute                          |
| url          | http://controller:8774/v2.1      |
+--------------+----------------------------------+
[root@controller ~]# 

placement ユーザーを作成します。ここでは、placement ユーザーのパスワードは PLACEMENT_PASS としているので、適宜変更して下さい。

[root@controller ~]# openstack user create --domain default --password-prompt placement
User Password: PLACEMENT_PASS
Repeat User Password: PLACEMENT_PASS
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 77b83f4eb8a743b7849e9ce8e246a5be |
| name                | placement                        |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[root@controller ~]# 

admin の ロールを placement ユーザーと service プロジェクトに追加します。

[root@controller ~]# openstack role add --project service --user placement admin
[root@controller ~]# 

placement サービスエンティティーを作成します。

[root@controller ~]# openstack service create --name placement \
>   --description "Placement API" placement
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Placement API                    |
| enabled     | True                             |
| id          | 6455d40885b54fa5a61c77fc609e7dd3 |
| name        | placement                        |
| type        | placement                        |
+-------------+----------------------------------+
[root@controller ~]# 

Placement サービスの API エンドポイントを作成します。

[root@controller ~]# openstack endpoint create --region RegionOne \
>   placement public http://controller:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 6a3fe5fa18c745b593b7012780815a3d |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 6455d40885b54fa5a61c77fc609e7dd3 |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+
[root@controller ~]# 
[root@controller ~]# openstack endpoint create --region RegionOne \
>   placement internal http://controller:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | f6c3f2d816c94e91bf4b330b6496abf9 |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 6455d40885b54fa5a61c77fc609e7dd3 |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+
[root@controller ~]# 
[root@controller ~]# openstack endpoint create --region RegionOne \
>   placement admin http://controller:8778
+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 7eb7321ac1d9489aaf2ed938d0c82d24 |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | 6455d40885b54fa5a61c77fc609e7dd3 |
| service_name | placement                        |
| service_type | placement                        |
| url          | http://controller:8778           |
+--------------+----------------------------------+
[root@controller ~]# 

コンポーネントのインストールと設定

openstack-rocky の yum リポジトリ(CentOS-Openstack-rocky.repo)を使って、 Compute サービス( nova ) に必要なパッケージをインストールします。インストールは、コントローラーノードで実施します。

[root@controller ~]# yum --enablerepo=centos-openstack-rocky -y install openstack-nova-api openstack-nova-conductor \
  openstack-nova-console openstack-nova-novncproxy \
  openstack-nova-scheduler openstack-nova-placement-api
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.nara.wide.ad.jp
 * extras: ftp.nara.wide.ad.jp
 * updates: ftp.nara.wide.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ openstack-nova-api.noarch 1:18.0.2-1.el7 を インストール
--> 依存性の処理をしています: openstack-nova-common = 1:18.0.2-1.el7 のパッケージ: 1:openstack-nova-api-18.0.2-1.el7.noarch
---> パッケージ openstack-nova-conductor.noarch 1:18.0.2-1.el7 を インストール
---> パッケージ openstack-nova-console.noarch 1:18.0.2-1.el7 を インストール
--> 依存性の処理をしています: python-websockify >= 0.8.0 のパッケージ: 1:openstack-nova-console-18.0.2-1.el7.noarch
---> パッケージ openstack-nova-novncproxy.noarch 1:18.0.2-1.el7 を インストール
--> 依存性の処理をしています: novnc のパッケージ: 1:openstack-nova-novncproxy-18.0.2-1.el7.noarch
---> パッケージ openstack-nova-placement-api.noarch 1:18.0.2-1.el7 を インストール
---> パッケージ openstack-nova-scheduler.noarch 1:18.0.2-1.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ novnc.noarch 0:0.5.1-2.el7 を インストール
---> パッケージ openstack-nova-common.noarch 1:18.0.2-1.el7 を インストール
--> 依存性の処理をしています: python-nova = 1:18.0.2-1.el7 のパッケージ: 1:openstack-nova-common-18.0.2-1.el7.noarch
---> パッケージ python-websockify.noarch 0:0.8.0-1.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ python-nova.noarch 1:18.0.2-1.el7 を インストール
--> 依存性の処理をしています: python2-tooz >= 1.58.0 のパッケージ: 1:python-nova-18.0.2-1.el7.noarch
--> 依存性の処理をしています: python2-paramiko >= 2.0.0 のパッケージ: 1:python-nova-18.0.2-1.el7.noarch
--> 依存性の処理をしています: python2-oslo-versionedobjects >= 1.31.2 のパッケージ: 1:python-nova-18.0.2-1.el7.noarch
--> 依存性の処理をしています: python2-oslo-reports >= 1.18.0 のパッケージ: 1:python-nova-18.0.2-1.el7.noarch
--> 依存性の処理をしています: python2-os-vif >= 1.7.0 のパッケージ: 1:python-nova-18.0.2-1.el7.noarch
--> 依存性の処理をしています: python2-microversion-parse >= 0.2.1 のパッケージ: 1:python-nova-18.0.2-1.el7.noarch
--> 依存性の処理をしています: python2-psutil のパッケージ: 1:python-nova-18.0.2-1.el7.noarch
--> 依存性の処理をしています: python2-os-traits のパッケージ: 1:python-nova-18.0.2-1.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ python-paramiko.noarch 0:2.1.1-4.el7 を インストール
---> パッケージ python2-microversion-parse.noarch 0:0.2.1-1.el7 を インストール
---> パッケージ python2-os-traits.noarch 0:0.9.0-1.el7 を インストール
---> パッケージ python2-os-vif.noarch 0:1.11.1-1.el7 を インストール
--> 依存性の処理をしています: python2-pyroute2 のパッケージ: python2-os-vif-1.11.1-1.el7.noarch
---> パッケージ python2-oslo-reports.noarch 0:1.28.0-1.el7 を インストール
---> パッケージ python2-oslo-versionedobjects.noarch 0:1.33.3-1.el7 を インストール
--> 依存性の処理をしています: python-oslo-versionedobjects-lang = 1.33.3-1.el7 のパッケージ: python2-oslo-versionedobjects-1.33.3-1.el7.noarch
---> パッケージ python2-psutil.x86_64 0:5.2.2-2.el7 を インストール
---> パッケージ python2-tooz.noarch 0:1.62.0-2.el7 を インストール
--> 依存性の処理をしています: python2-voluptuous >= 0.8.9 のパッケージ: python2-tooz-1.62.0-2.el7.noarch
--> 依存性の処理をしています: python2-zake のパッケージ: python2-tooz-1.62.0-2.el7.noarch
--> 依存性の処理をしています: python-redis のパッケージ: python2-tooz-1.62.0-2.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ python-oslo-versionedobjects-lang.noarch 0:1.33.3-1.el7 を インストール
---> パッケージ python-redis.noarch 0:2.10.3-1.el7 を インストール
---> パッケージ python2-pyroute2.noarch 0:0.4.21-1.el7 を インストール
---> パッケージ python2-voluptuous.noarch 0:0.10.5-2.el7 を インストール
---> パッケージ python2-zake.noarch 0:0.2.2-2.el7 を インストール
--> 依存性の処理をしています: python-kazoo のパッケージ: python2-zake-0.2.2-2.el7.noarch
--> トランザクションの確認を実行しています。
---> パッケージ python-kazoo.noarch 0:2.2.1-1.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package                     アーキテクチャー
                                    バージョン     リポジトリー            容量
================================================================================
インストール中:
 openstack-nova-api          noarch 1:18.0.2-1.el7 centos-openstack-rocky 7.7 k
 openstack-nova-conductor    noarch 1:18.0.2-1.el7 centos-openstack-rocky 5.2 k
 openstack-nova-console      noarch 1:18.0.2-1.el7 centos-openstack-rocky 6.2 k
 openstack-nova-novncproxy   noarch 1:18.0.2-1.el7 centos-openstack-rocky 5.7 k
 openstack-nova-placement-api
                             noarch 1:18.0.2-1.el7 centos-openstack-rocky 5.5 k
 openstack-nova-scheduler    noarch 1:18.0.2-1.el7 centos-openstack-rocky 5.2 k
依存性関連でのインストールをします:
 novnc                       noarch 0.5.1-2.el7    centos-openstack-rocky 176 k
 openstack-nova-common       noarch 1:18.0.2-1.el7 centos-openstack-rocky 344 k
 python-kazoo                noarch 2.2.1-1.el7    centos-openstack-rocky 130 k
 python-nova                 noarch 1:18.0.2-1.el7 centos-openstack-rocky 3.7 M
 python-oslo-versionedobjects-lang
                             noarch 1.33.3-1.el7   centos-openstack-rocky 7.9 k
 python-paramiko             noarch 2.1.1-4.el7    extras                 268 k
 python-redis                noarch 2.10.3-1.el7   centos-openstack-rocky  94 k
 python-websockify           noarch 0.8.0-1.el7    centos-openstack-rocky  69 k
 python2-microversion-parse  noarch 0.2.1-1.el7    centos-openstack-rocky  27 k
 python2-os-traits           noarch 0.9.0-1.el7    centos-openstack-rocky  26 k
 python2-os-vif              noarch 1.11.1-1.el7   centos-openstack-rocky  73 k
 python2-oslo-reports        noarch 1.28.0-1.el7   centos-openstack-rocky  52 k
 python2-oslo-versionedobjects
                             noarch 1.33.3-1.el7   centos-openstack-rocky  72 k
 python2-psutil              x86_64 5.2.2-2.el7    centos-openstack-rocky 310 k
 python2-pyroute2            noarch 0.4.21-1.el7   centos-openstack-rocky 377 k
 python2-tooz                noarch 1.62.0-2.el7   centos-openstack-rocky  98 k
 python2-voluptuous          noarch 0.10.5-2.el7   centos-openstack-rocky  50 k
 python2-zake                noarch 0.2.2-2.el7    centos-openstack-rocky  39 k

トランザクションの要約
================================================================================
インストール  6 パッケージ (+18 個の依存関係のパッケージ)

総ダウンロード容量: 5.9 M
インストール容量: 25 M
Downloading packages:
(1/24): openstack-nova-api-18.0.2-1.el7.noarch.rpm         | 7.7 kB   00:00     
(2/24): openstack-nova-common-18.0.2-1.el7.noarch.rpm      | 344 kB   00:00     
(3/24): openstack-nova-conductor-18.0.2-1.el7.noarch.rpm   | 5.2 kB   00:00     
(4/24): openstack-nova-console-18.0.2-1.el7.noarch.rpm     | 6.2 kB   00:00     
(5/24): openstack-nova-novncproxy-18.0.2-1.el7.noarch.rpm  | 5.7 kB   00:00     
(6/24): openstack-nova-placement-api-18.0.2-1.el7.noarch.r | 5.5 kB   00:00     
(7/24): openstack-nova-scheduler-18.0.2-1.el7.noarch.rpm   | 5.2 kB   00:00     
(8/24): python-kazoo-2.2.1-1.el7.noarch.rpm                | 130 kB   00:00     
(9/24): python-nova-18.0.2-1.el7.noarch.rpm                | 3.7 MB   00:02     
(10/24): python-oslo-versionedobjects-lang-1.33.3-1.el7.no | 7.9 kB   00:00     
(11/24): novnc-0.5.1-2.el7.noarch.rpm                      | 176 kB   00:04     
(12/24): python-redis-2.10.3-1.el7.noarch.rpm              |  94 kB   00:00     
(13/24): python-paramiko-2.1.1-4.el7.noarch.rpm            | 268 kB   00:00     
(14/24): python2-microversion-parse-0.2.1-1.el7.noarch.rpm |  27 kB   00:00     
(15/24): python-websockify-0.8.0-1.el7.noarch.rpm          |  69 kB   00:00     
(16/24): python2-os-traits-0.9.0-1.el7.noarch.rpm          |  26 kB   00:01     
(17/24): python2-os-vif-1.11.1-1.el7.noarch.rpm            |  73 kB   00:00     
(18/24): python2-oslo-reports-1.28.0-1.el7.noarch.rpm      |  52 kB   00:00     
(19/24): python2-oslo-versionedobjects-1.33.3-1.el7.noarch |  72 kB   00:00     
(20/24): python2-psutil-5.2.2-2.el7.x86_64.rpm             | 310 kB   00:00     
(21/24): python2-tooz-1.62.0-2.el7.noarch.rpm              |  98 kB   00:00     
(22/24): python2-voluptuous-0.10.5-2.el7.noarch.rpm        |  50 kB   00:00     
(23/24): python2-zake-0.2.2-2.el7.noarch.rpm               |  39 kB   00:00     
(24/24): python2-pyroute2-0.4.21-1.el7.noarch.rpm          | 377 kB   00:01     
--------------------------------------------------------------------------------
合計                                               708 kB/s | 5.9 MB  00:08     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : python-websockify-0.8.0-1.el7.noarch           1/24 
  インストール中          : python2-psutil-5.2.2-2.el7.x86_64              2/24 
  インストール中          : python2-oslo-reports-1.28.0-1.el7.noarch       3/24 
  インストール中          : novnc-0.5.1-2.el7.noarch                       4/24 
  インストール中          : python-paramiko-2.1.1-4.el7.noarch             5/24 
  インストール中          : python-redis-2.10.3-1.el7.noarch               6/24 
  インストール中          : python2-os-traits-0.9.0-1.el7.noarch           7/24 
  インストール中          : python2-pyroute2-0.4.21-1.el7.noarch           8/24 
  インストール中          : python-kazoo-2.2.1-1.el7.noarch                9/24 
  インストール中          : python2-zake-0.2.2-2.el7.noarch               10/24 
  インストール中          : python2-voluptuous-0.10.5-2.el7.noarch        11/24 
  インストール中          : python2-tooz-1.62.0-2.el7.noarch              12/24 
  インストール中          : python2-microversion-parse-0.2.1-1.el7.noar   13/24 
  インストール中          : python-oslo-versionedobjects-lang-1.33.3-1.   14/24 
  インストール中          : python2-oslo-versionedobjects-1.33.3-1.el7.   15/24 
  インストール中          : python2-os-vif-1.11.1-1.el7.noarch            16/24 
  インストール中          : 1:python-nova-18.0.2-1.el7.noarch             17/24 
  インストール中          : 1:openstack-nova-common-18.0.2-1.el7.noarch   18/24 
  インストール中          : 1:openstack-nova-conductor-18.0.2-1.el7.noa   19/24 
  インストール中          : 1:openstack-nova-scheduler-18.0.2-1.el7.noa   20/24 
  インストール中          : 1:openstack-nova-api-18.0.2-1.el7.noarch      21/24 
  インストール中          : 1:openstack-nova-placement-api-18.0.2-1.el7   22/24 
  インストール中          : 1:openstack-nova-novncproxy-18.0.2-1.el7.no   23/24 
  インストール中          : 1:openstack-nova-console-18.0.2-1.el7.noarc   24/24 
  検証中                  : python2-zake-0.2.2-2.el7.noarch                1/24 
  検証中                  : python-oslo-versionedobjects-lang-1.33.3-1.    2/24 
  検証中                  : python2-oslo-reports-1.28.0-1.el7.noarch       3/24 
  検証中                  : python2-os-vif-1.11.1-1.el7.noarch             4/24 
  検証中                  : 1:openstack-nova-conductor-18.0.2-1.el7.noa    5/24 
  検証中                  : python2-tooz-1.62.0-2.el7.noarch               6/24 
  検証中                  : python2-microversion-parse-0.2.1-1.el7.noar    7/24 
  検証中                  : 1:openstack-nova-scheduler-18.0.2-1.el7.noa    8/24 
  検証中                  : 1:openstack-nova-api-18.0.2-1.el7.noarch       9/24 
  検証中                  : python2-voluptuous-0.10.5-2.el7.noarch        10/24 
  検証中                  : python-kazoo-2.2.1-1.el7.noarch               11/24 
  検証中                  : python2-pyroute2-0.4.21-1.el7.noarch          12/24 
  検証中                  : 1:openstack-nova-placement-api-18.0.2-1.el7   13/24 
  検証中                  : 1:openstack-nova-novncproxy-18.0.2-1.el7.no   14/24 
  検証中                  : python2-os-traits-0.9.0-1.el7.noarch          15/24 
  検証中                  : novnc-0.5.1-2.el7.noarch                      16/24 
  検証中                  : 1:openstack-nova-common-18.0.2-1.el7.noarch   17/24 
  検証中                  : 1:openstack-nova-console-18.0.2-1.el7.noarc   18/24 
  検証中                  : python-redis-2.10.3-1.el7.noarch              19/24 
  検証中                  : 1:python-nova-18.0.2-1.el7.noarch             20/24 
  検証中                  : python2-oslo-versionedobjects-1.33.3-1.el7.   21/24 
  検証中                  : python2-psutil-5.2.2-2.el7.x86_64             22/24 
  検証中                  : python-paramiko-2.1.1-4.el7.noarch            23/24 
  検証中                  : python-websockify-0.8.0-1.el7.noarch          24/24 

インストール:
  openstack-nova-api.noarch 1:18.0.2-1.el7                                      
  openstack-nova-conductor.noarch 1:18.0.2-1.el7                                
  openstack-nova-console.noarch 1:18.0.2-1.el7                                  
  openstack-nova-novncproxy.noarch 1:18.0.2-1.el7                               
  openstack-nova-placement-api.noarch 1:18.0.2-1.el7                            
  openstack-nova-scheduler.noarch 1:18.0.2-1.el7                                

依存性関連をインストールしました:
  novnc.noarch 0:0.5.1-2.el7                                                    
  openstack-nova-common.noarch 1:18.0.2-1.el7                                   
  python-kazoo.noarch 0:2.2.1-1.el7                                             
  python-nova.noarch 1:18.0.2-1.el7                                             
  python-oslo-versionedobjects-lang.noarch 0:1.33.3-1.el7                       
  python-paramiko.noarch 0:2.1.1-4.el7                                          
  python-redis.noarch 0:2.10.3-1.el7                                            
  python-websockify.noarch 0:0.8.0-1.el7                                        
  python2-microversion-parse.noarch 0:0.2.1-1.el7                               
  python2-os-traits.noarch 0:0.9.0-1.el7                                        
  python2-os-vif.noarch 0:1.11.1-1.el7                                          
  python2-oslo-reports.noarch 0:1.28.0-1.el7                                    
  python2-oslo-versionedobjects.noarch 0:1.33.3-1.el7                           
  python2-psutil.x86_64 0:5.2.2-2.el7                                           
  python2-pyroute2.noarch 0:0.4.21-1.el7                                        
  python2-tooz.noarch 0:1.62.0-2.el7                                            
  python2-voluptuous.noarch 0:0.10.5-2.el7                                      
  python2-zake.noarch 0:0.2.2-2.el7                                             

完了しました!
[root@controller ~]# 

Nova の設定ファイル( /etc/nova/nova.conf )を編集し、以下の設定をします。

[root@controller ~]# vi /etc/nova/nova.conf

[DEFAULT] セクションで、 compute API とメタデータ API のみを有効にします。

[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata

セクション [api_database] と [database] と [placement_database] で、データベースのアクセス方法を設定します。ここでは、nova データベースに接続するパスワードは NOVA_DB_PASS 、placement データベースに接続するパスワードは PLACEMENT_DB_PASS としているので、実際の情報に置き換えてください。

[api_database]
# ...
connection = mysql+pymysql://nova:NOVA_DB_PASS@controller/nova_api

[database]
# ...
connection = mysql+pymysql://nova:NOVA_DB_PASS@controller/nova

[placement_database]
# ...
connection = mysql+pymysql://placement:PLACEMENT_DB_PASS@controller/placement

[DEFAULT] セクションに、RabbitMQ メッセージキューのアクセス方法を設定します。RABBIT_PASS は、RabbitMQ の openstack ユーザー用に選択したパスワードに置き換えてください。

[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller

[api] セクションと [keystone_authtoken] セクションに、認証サービス( Keystone )へのアクセス方法を設定します。ここでは、nova ユーザーのパスワードは NOVA_PASS としているので、実際の情報に置き換えてください。

[api]
# ...
auth_strategy = keystone

[keystone_authtoken]
# ...
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = NOVA_PASS

[DEFAULT] セクションで、コントローラーノードの管理インターフェースの IP アドレスを使用するように my_ip オプションを設定します。

[DEFAULT]
# ...
my_ip = 192.168.24.111

[DEFAULT] セクションで、Networking サービスのサポートを有効にします。

[DEFAULT]
# ...
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver

[vnc] セクションで、VNC プロキシーを有効にし、コントローラーノードの管理インターフェース IP アドレスを使用するように、VNC プロキシーを設定します。

[vnc]
enabled = true
# ...
server_listen = $my_ip
server_proxyclient_address = $my_ip

[glance] セクションで、Image サービス API の場所を設定します。

[glance]
# ...
api_servers = http://controller:9292

[oslo_concurrency] セクションにロックパスを設定します。

[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp

[placement] セクションに Placement へのアクセス方法を設定します。ここでは、placement ユーザーのパスワードは PLACEMENT_PASS としているので、実際の情報に置き換えてください。

[placement]
# ...
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = PLACEMENT_PASS

パッケージングのバグにより、/etc/httpd/conf.d/00-nova-placement-api.confに 〜(ここから)〜 から 〜(ここまで追加)〜 の設定を追加して、プレースメントAPIへのアクセスを有効にします。

[root@controller ~]# vi /etc/httpd/conf.d/00-nova-placement-api.conf 

Listen 8778

<VirtualHost *:8778>
  WSGIProcessGroup nova-placement-api
  WSGIApplicationGroup %{GLOBAL}
  WSGIPassAuthorization On
  WSGIDaemonProcess nova-placement-api processes=3 threads=1 user=nova group=nova
  WSGIScriptAlias / /usr/bin/nova-placement-api
  <IfVersion >= 2.4>
    ErrorLogFormat "%M"
  </IfVersion>
  ErrorLog /var/log/nova/nova-placement-api.log
  #SSLEngine On
  #SSLCertificateFile ...
  #SSLCertificateKeyFile ...
〜(ここから)〜
  <Directory /usr/bin>
     <IfVersion >= 2.4>
        Require all granted
     </IfVersion>
     <IfVersion < 2.4>
        Order allow,deny
        Allow from all
     </IfVersion>
  </Directory>
〜(ここまで追加)〜
</VirtualHost>

httpd サービスを再起動します。

■ 再起動
[root@controller ~]# systemctl restart httpd
[root@controller ~]#

■ 起動状態の確認 
[root@controller ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2018-10-21 12:15:18 JST; 5s ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 4816 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
 Main PID: 4826 (httpd)
   Status: "Processing requests..."
   CGroup: /system.slice/httpd.service
           ├─4826 /usr/sbin/httpd -DFOREGROUND
           ├─4827 /usr/sbin/httpd -DFOREGROUND
           ├─4828 /usr/sbin/httpd -DFOREGROUND
           ├─4829 /usr/sbin/httpd -DFOREGROUND
           ├─4830 (wsgi:keystone- -DFOREGROUND
           ├─4831 (wsgi:keystone- -DFOREGROUND
           ├─4832 (wsgi:keystone- -DFOREGROUND
           ├─4833 (wsgi:keystone- -DFOREGROUND
           ├─4834 (wsgi:keystone- -DFOREGROUND
           ├─4835 /usr/sbin/httpd -DFOREGROUND
           ├─4836 /usr/sbin/httpd -DFOREGROUND
           ├─4837 /usr/sbin/httpd -DFOREGROUND
           ├─4838 /usr/sbin/httpd -DFOREGROUND
           └─4839 /usr/sbin/httpd -DFOREGROUND

10月 21 12:15:17 controller systemd[1]: Starting The Apache HTTP Server...
10月 21 12:15:18 controller systemd[1]: Started The Apache HTTP Server.
[root@controller ~]# 

nova と placement データベースを展開します。

[root@controller ~]# su -s /bin/sh -c "nova-manage api_db sync" nova
[root@controller ~]# 

cell0 データベースを登録します。

[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
[root@controller ~]# 

cell1 セルを作成します。

[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
836a518c-376f-421d-abe5-7dde15dd2558
[root@controller ~]# 

Compute サービス( nova ) データベースを展開します。

[root@controller ~]# su -s /bin/sh -c "nova-manage db sync" nova
/usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `block_device_mapping_instance_uuid_virtual_name_device_name_idx`. This is deprecated and will be disallowed in a future release.')
  result = self._query(query)
/usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `uniq_instances0uuid`. This is deprecated and will be disallowed in a future release.')
  result = self._query(query)
[root@controller ~]# 

nova cell0 と cell1 が正しく登録されていることを確認します。

[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
+-------+--------------------------------------+------------------------------------+-------------------------------------------------+----------+
|  Name |                 UUID                 |           Transport URL            |               Database Connection               | Disabled |
+-------+--------------------------------------+------------------------------------+-------------------------------------------------+----------+
| cell0 | 00000000-0000-0000-0000-000000000000 |               none:/               | mysql+pymysql://nova:****@controller/nova_cell0 |  False   |
| cell1 | 836a518c-376f-421d-abe5-7dde15dd2558 | rabbit://openstack:****@controller |    mysql+pymysql://nova:****@controller/nova    |  False   |
+-------+--------------------------------------+------------------------------------+-------------------------------------------------+----------+
[root@controller ~]# 

ファイアウォールでの通信許可

Compute サービス( Nova )で必要となる TCP 6080( Nova novnc Proxy  )と 6081( Nova xvpvnc proxy )と 6082( Nova spicehtml5 proxy )と 8774( Nova API ) と 8775( Nova メタデータ )通信を許可します。

[root@controller ~]# firewall-cmd --add-port=6080/tcp --zone=public --permanent
success
[root@controller ~]# 

[root@controller ~]# firewall-cmd --add-port=6081/tcp --zone=public --permanent
success
[root@controller ~]# 

[root@controller ~]# firewall-cmd --add-port=6082/tcp --zone=public --permanent
success
[root@controller ~]# 

[root@controller ~]# firewall-cmd --add-port=8774/tcp --zone=public --permanent
success
[root@controller ~]# 

[root@controller ~]# firewall-cmd --add-port=8775/tcp --zone=public --permanent
success
[root@controller ~]# 

firewalld をリロードし、設定を反映します。

[root@controller ~]# firewall-cmd --reload
success
[root@controller ~]# 

インストールの最後

Compute サービス( Nova )の自動起動を有効化します。

■ 自動起動の有効化
[root@controller ~]# systemctl enable openstack-nova-api.service \
>   openstack-nova-scheduler.service openstack-nova-conductor.service \
>   openstack-nova-novncproxy.service
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-api.service to /usr/lib/systemd/system/openstack-nova-api.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-scheduler.service to /usr/lib/systemd/system/openstack-nova-scheduler.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-conductor.service to /usr/lib/systemd/system/openstack-nova-conductor.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-novncproxy.service to /usr/lib/systemd/system/openstack-nova-novncproxy.service.
[root@controller ~]# 

■ 自動起動の状態確認
[root@controller ~]# systemctl is-enabled openstack-nova-api.service   openstack-nova-scheduler.service openstack-nova-conductor.service   openstack-nova-novncproxy.service
enabled
enabled
enabled
enabled
[root@controller ~]# 

Compute サービス( Nova )を再起動します。

■ 再起動
[root@controller ~]# systemctl restart openstack-nova-api.service \
>   openstack-nova-scheduler.service openstack-nova-conductor.service \
>   openstack-nova-novncproxy.service
[root@controller ~]# 

■ 起動状態の確認
[root@controller ~]# systemctl status openstack-nova-api.service   openstack-nova-scheduler.service openstack-nova-conductor.service   openstack-nova-novncproxy.service
● openstack-nova-api.service - OpenStack Nova API Server
   Loaded: loaded (/usr/lib/systemd/system/openstack-nova-api.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2018-10-21 12:19:18 JST; 8s ago
 Main PID: 5009 (nova-api)
   CGroup: /system.slice/openstack-nova-api.service
           ├─5009 /usr/bin/python2 /usr/bin/nova-api
           ├─5063 /usr/bin/python2 /usr/bin/nova-api
           ├─5064 /usr/bin/python2 /usr/bin/nova-api
           ├─5067 /usr/bin/python2 /usr/bin/nova-api
           └─5068 /usr/bin/python2 /usr/bin/nova-api

10月 21 12:19:14 controller systemd[1]: Starting OpenStack Nova API Server...
10月 21 12:19:18 controller systemd[1]: Started OpenStack Nova API Server.

● openstack-nova-scheduler.service - OpenStack Nova Scheduler Server
   Loaded: loaded (/usr/lib/systemd/system/openstack-nova-scheduler.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2018-10-21 12:19:18 JST; 9s ago
 Main PID: 5010 (nova-scheduler)
   CGroup: /system.slice/openstack-nova-scheduler.service
           ├─5010 /usr/bin/python2 /usr/bin/nova-scheduler
           ├─5052 /usr/bin/python2 /usr/bin/nova-scheduler
           └─5053 /usr/bin/python2 /usr/bin/nova-scheduler

10月 21 12:19:14 controller systemd[1]: Starting OpenStack Nova Scheduler S....
10月 21 12:19:18 controller systemd[1]: Started OpenStack Nova Scheduler Se....

● openstack-nova-conductor.service - OpenStack Nova Conductor Server
   Loaded: loaded (/usr/lib/systemd/system/openstack-nova-conductor.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2018-10-21 12:19:18 JST; 9s ago
 Main PID: 5011 (nova-conductor)
   CGroup: /system.slice/openstack-nova-conductor.service
           ├─5011 /usr/bin/python2 /usr/bin/nova-conductor
           ├─5059 /usr/bin/python2 /usr/bin/nova-conductor
           └─5060 /usr/bin/python2 /usr/bin/nova-conductor

10月 21 12:19:14 controller systemd[1]: Starting OpenStack Nova Conductor S....
10月 21 12:19:18 controller systemd[1]: Started OpenStack Nova Conductor Se....

● openstack-nova-novncproxy.service - OpenStack Nova NoVNC Proxy Server
   Loaded: loaded (/usr/lib/systemd/system/openstack-nova-novncproxy.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2018-10-21 12:19:14 JST; 13s ago
 Main PID: 5012 (nova-novncproxy)
   CGroup: /system.slice/openstack-nova-novncproxy.service
           └─5012 /usr/bin/python2 /usr/bin/nova-novncproxy --web /usr/share/...

10月 21 12:19:14 controller systemd[1]: Started OpenStack Nova NoVNC Proxy ....
10月 21 12:19:14 controller systemd[1]: Starting OpenStack Nova NoVNC Proxy....
Hint: Some lines were ellipsized, use -l to show in full.
[root@controller ~]# 

Nova の consoleauth サービスの自動起動を有効化します。

■ 自動起動の有効化
[root@controller ~]# systemctl enable openstack-nova-consoleauth
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-nova-consoleauth.service to /usr/lib/systemd/system/openstack-nova-consoleauth.service.
[root@controller ~]# 

■ 自動起動の状態確認
[root@controller ~]# systemctl is-enabled openstack-nova-consoleauth
enabled
[root@controller ~]# 

Nova の consoleauth サービスを起動します。consoleauth サービスが起動していないと、インスタンスの VNC セッション URLの取得ができないため、注意してください。

■ 起動
[root@controller ~]# systemctl start openstack-nova-consoleauth
[root@controller ~]# 

■ 起動状態の確認
[root@controller ~]# systemctl status openstack-nova-consoleauth
● openstack-nova-consoleauth.service - OpenStack Nova VNC console auth Server
   Loaded: loaded (/usr/lib/systemd/system/openstack-nova-consoleauth.service; disabled; vendor preset: disabled)
   Active: active (running) since 日 2018-10-21 20:11:28 JST; 1s ago
 Main PID: 10365 (nova-consoleaut)
   CGroup: /system.slice/openstack-nova-consoleauth.service
           └─10365 /usr/bin/python2 /usr/bin/nova-consoleauth

10月 21 20:11:26 controller systemd[1]: Starting OpenStack Nova VNC console....
10月 21 20:11:28 controller systemd[1]: Started OpenStack Nova VNC console ....
Hint: Some lines were ellipsized, use -l to show in full.
[root@controller ~]#