Imageサービスとは
OpenStackでは、通常KVM仮想化技術を使って仮想マシンをユーザーに提供するが、その仮想マシンのイメージの登録や提供サービスがGlanceである。既存の仮想マシンイメージをインターネットから取得して、OpenStackのGlanceサービスに登録することで、ユーザーに仮想マシンを素早く提供できる。
Imageインストール例
ここでは例として、コントローラーノード「controller」にGlanceをインストールする手順を記載する。また、話を単純化するためにイメージファイルは、コントローラーノードのファイルシステムに保存することにする。
環境の前提
OS:Ubuntu 16.04
DB:MariaDB
OpenStack関連:KeyStoneをインストール、各種設定済み
データベースの作成
MariaDBへアクセスし、glanceという名前のデータベースを作成、権限を設定する。grant行で指定した「glance@」の後に「'localhost'」を指定することで、ローカルホストからのデータベースへのアクセスを許可している。また、次のgrant行の「glance@」の後に「'%'」を指定することで、任意のホストからのアクセスを許可している。
# mysql -u<username> -p<password>
MariaDB [(none)]> create database glance;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on glance.* to glance@'localhost' identified by 'Password1';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on glance.* to glance@'%' identified by 'Password1';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Glanceの設定
設定は以下の流れで行う。
- admin用環境変数の設定
- Glanceユーザーの作成
- ロールの付与
- Glanceサービスの作成
- APIエンドポイントの作成
- Glanceパッケージのインストール
- 各種設定ファイルの編集
admin用環境変数の設定
adminユーザー用の環境変数をロードするスクリプト「admin-openrc」を実行する。
# cd
# pwd
/root
# . ./admin-openrc
Glanceユーザーの作成
「default」ドメインに所属する「glance」ユーザーを作成する。今回の例ではパスワードを「Password1」に設定した。
# openstack user create --domain default --password Password1 glance
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | 0fad132f315d49e4ae2d1ee5d0f8fb95 |
| enabled | True |
| id | b9efd65e12c54bd3825ff8194b2f41ca |
| name | glance |
+-----------+----------------------------------+
glanceユーザーへのロールの付与
「service」プロジェクトと「glance」ユーザーに「admin」ロールを付与する。
# openstack role add --project service --user glance admin
Glanceサービスの作成
「glance」サービスを作成する。サービスタイプは「image」を指定する。
# openstack service create --name glance --description "OpenStack Image service" image
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Image service |
| enabled | True |
| id | a9d54694a6c24195a9a8032d8c7458bb |
| name | glance |
| type | image |
+-------------+----------------------------------+
APIエンドポイントの作成
APIエンドポイントとして「public」、「internal」、「admin」の3つを作成する。この例では「--region」に「RegionOne」を指定する。また、クラウドコントローラーのホスト名として設定している「controller」に9292番ポートを指定する。
# openstack endpoint create --region RegionOne image public http://controller:9292
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 26da78acdef6481bbbf54e315d811618 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | a9d54694a6c24195a9a8032d8c7458bb |
| service_name | glance |
| service_type | image |
| url | http://controller:9292 |
+--------------+----------------------------------+
# openstack endpoint create --region RegionOne image internal http://controller:9292
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 0d1904bae6dc4d939217776e69224d5a |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | a9d54694a6c24195a9a8032d8c7458bb |
| service_name | glance |
| service_type | image |
| url | http://controller:9292 |
+--------------+----------------------------------+
# openstack endpoint create --region RegionOne image admin http://controller:9292
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 2b1b1e0db95341958b6fd12ceca21624 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | a9d54694a6c24195a9a8032d8c7458bb |
| service_name | glance |
| service_type | image |
| url | http://controller:9292 |
+--------------+----------------------------------+
Glanceパッケージのインストールと設定
コントローラーノード上でGlanceのパッケージをインストールする。
# apt-get install -y glance
Glanceの設定ファイル/etc/glance/glance-api.confを編集する。
# cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.org
# vi /etc/glance/glance-api.conf
...
[database]
...
connection = mysql+pymysql://glance:Password1@controller/glance ←①
[glance_store]
...
stores = file,http
...
default_store = file
...
filesystem_store_datadir = /var/lib/glance/images/
[keystone_authtoken]
...
auth_uri = http://controller:5000 ←②
auth_url = http://controller:35357 ←③
...
memcached_servers = controller:11211 ←④
...
auth_type = password ←⑤
project_domain_name = default ←⑥
user_domain_name = default ←⑦
project_name = service ←⑧
username = glance ←⑨
password = Password1 ←⑩
...
[paste_deploy]
...
flavor = keystone
...
設定の解説
① MariaDBにアクセスするglanceユーザーとパスワードを指定。ホスト名はcontrollerを指定。
② 認証URLは、ホスト名にcontroller、ポート番号に5000を指定
③ 認証URLは、ホスト名にcontroller、ポート番号に35357を指定。
④ Memcachedサーバーとしてcontrollerを指定。ポート番号は11211を指定。
⑤ 認証方法はパスワードで行う
⑥ プロジェクトのドメイン名「default」を指定。
⑦ ユーザーのドメイン名「default」を指定。
⑧ プロジェクト名「service」を指定。
⑨ ユーザー「glance」でアクセス。
⑩ ユーザー「glance」のパスワードを「Password1」に設定。
glance-registry.confファイルの編集
# cp /etc/glance/glance-registry.conf /etc/glance/glance-registry.conf.org
# vi /etc/glance/glance-registry.conf
[database]
...
connection = mysql+pymysql://glance:Password1@controller/glance
...
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
...
memcached_servers = controller:11211
...
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = Password1
...
[paste_deploy]
...
flavor = keystone
...
データベースへの登録
Glanceに関する情報をMaraiaDBのデータベースに登録する。
# su -s /bin/sh -c "glance-manage db_sync" glance
/usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py:1056: OsloDBDeprecationWarning: EngineFacade is d eprecated; please use oslo_db.sqlalchemy.enginefacade
expire_on_commit=expire_on_commit, _conf=conf)
サービスの再起動
Glanceのサービスを再起動する。
# systemctl restart glance-registry
# systemctl restart glance-api
# systemctl status glance-registry glance-api
# systemctl enable glance-api glance-registry
OSを再起動する。再起動後にGlanceのサービスが利用できるか確認する。
# pwd
/root
# . ./admin-openrc
# glance image-list
+----+------+
| ID | Name |
+----+------+
+----+------+
以上でGlanceによるイメージサービスがコントローラーノードで利用できるようになった。
CirrOSイメージを登録する
Gkanceのサービスを利用してユーザーが仮想マシンとして利用するためのOSイメージをクラウド環境に登録する。Glanceのテスト用イメージとして、CirrOSというミニOSのイメージを使う。このイメージは無料で入手でき、クラウド基盤のGlanceの初期簡易テスト用OSとして広く利用されている。
admin-openrcスクリプトの確認
adminユーザーの環境変数をロードするスクリプトadmin-openrcの内容を確認する。
# cd
# pwd
/root
# cat ./admin-openrc
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=Password1
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
admin-openrcスクリプトの実行
admin-openrcスクリプトを実行する。
# . ./admin-openrc
CirrOSイメージのダウンロード
wgetコマンドを使い、CirrOSイメージをインターネットからダウンロードしコントローラーノードに配置する。
# wget http://download.cirros-cloud.net0.3.4/cirros-0.3.4-x86_64-disk.img
CirrOSイメージの確認
ダウンロードしたイメージのファイル形式とサイズを確認すうr。ファイル形式がqcow2形式であることを確認する。CirrOSはテスト用のミニOSなので、サイズは13MB程度。
# file cirros-0.3.4-x86_64-disk.img
cirros-0.3.4-x86_64-disk.img: QEMU QCOW Image (v2), 41126400 bytes
# ls -lh cirros-0.3.4-x86_64-disk.img
-rw-r--r-- 1 root root 13M Jan 27 2020 cirros-0.3.4-x86_64-disk.img
GlanceへのCirrOSイメージの登録
CirrOSのイメージをGlanceに登録する。ディスクふぉ^マットは「qcow2」を指定し、コンテナフォーマットは「bare」を指定。イメージを公開するため「--public」オプションを付与する。
# openstack image create "cirros" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public
+------------------+------------------------------------------------------+
| Field | Value |
+------------------+------------------------------------------------------+
| checksum | ee1eca47dc88f4879d8a229cc70a07c6 |
| container_format | bare |
| created_at | 2021-03-16T09:33:08Z |
| disk_format | qcow2 |
| file | /v2/images/346b6fed-31ab-4137-902f-add27d74c57c/file |
| id | 346b6fed-31ab-4137-902f-add27d74c57c |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros |
| owner | dc0abf4629ae45fba2e9d1669c276207 |
| protected | False |
| schema | /v2/schemas/image |
| size | 13287936 |
| status | active |
| tags | |
| updated_at | 2021-03-16T09:33:08Z |
| virtual_size | None |
| visibility | public |
+------------------+------------------------------------------------------+
イメージが登録されているか確認する。
# openstack image list
+--------------------------------------+--------+--------+
| ID | Name | Status |
+--------------------------------------+--------+--------+
| 346b6fed-31ab-4137-902f-add27d74c57c | cirros | active |
+--------------------------------------+--------+--------+
これでイメージの登録完了。