0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

OpenStack Imageサービス(Glance)の概要とイメージ登録

Posted at

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 |
+--------------------------------------+--------+--------+

これでイメージの登録完了。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?