VirtualBoxで作成したCentOSにOpenStackを構築する(Image編)

[環境編](http://qiita.com/tk3fftk/items/76d696a874d829ea9fe4)
[Identity編](http://qiita.com/tk3fftk/items/546ab241ac7b89a1c3c2)
の続きです。

[公式ドキュメント](http://docs.openstack.org/liberty/ja/install-guide-rdo/glance.html)に従ってやっていきます。

# OpenStack Image service
> OpenStack Image service (glance) により、ユーザーが仮想マシンイメージを検索、登録、取得できるようになります。 REST API が提供され、仮想マシンイメージメタデータを問い合わせり、実際のイメージを取得したりできます。Image service 経由で利用可能な仮想マシンイメージは、単なるファイルシステムから OpenStack Object Storage のようなオブジェクトストレージシステムまで、さまざまな場所に保存できます。


## インストール&設定
- 今回はイメージをローカルファイルシステムに保存する
- DB作成 mysqlで以下を行う。GLANCE_DBPASSにはroot++

```mysql
  CREATE DATABASE glance;
  GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS';
  GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';
```

- 環境スクリプトの読み込み
  - `source admin-openrc.sh`
- glanceユーザ作成
  - `openstack user create --domain default --password-prompt glance`
    - GLANCE_PASSとしてroot++を入力
- adminロールをglanceユーザとserviceプロジェクトに追加
  - `openstack role add --project service --user glance admin`
- glanceサービスエンティティを作成
  - `openstack service create --name glace --description "OpenStack Image service" image`
- image serviceのエンドポイント作成 3種類
  - `openstack endpoint create --region RegionOne image public http://controller:9292`
  - `openstack endpoint create --region RegionOne image internal http://controller:9292`
  - `openstack endpoint create --region RegionOne image admin http://controller:9292`

## コンポーネントのインストールと設定
- パッケージのインストール
  - `# yum install openstack-glance python-glance python-glanceclient`
- `# vi /etc/glance/glance-api.conf` で以下

```properties:glance-api.conf
[database] # DBへのアクセス方法
connection = mysql://glance:GLANCE_DBPASS@controller/glance # root++
[keystone_authtoken] # identityサービスへのアクセス方法
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = glance
password = GLANCE_PASS # root++
[paste_deploy]
flavor = keystone

[glance_store] # ローカルファイルシステムストア及びイメージファイルの場所を指定
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
[DEFAULT] # 通知を無効化
notification_driver = noop
```

- `# vi /etc/glance/glance-registry.conf` で`glance-api.conf`と同様の作業を行う
- `# su -s /bin/sh -c "glance-manage db_sync" glance` 
  - /bin/shで""内のコマンドをglanceユーザで行う"
- openstack-glance-apiの起動処理
  - `# systemctl enable openstack-glance-api openstack-glance-registry`
  - `# systemctl start openstack-glance-api openstack-glance-registry`

## かくにん！
- 環境スクリプトにImage API ver.2を使用するよう設定
  - `# echo "export OS_IMAGE_API_VERSION=2" | tee -a admin-openrc.sh demo-openrc.sh`
  - tee は標準入力を標準出力とファイルに同時に出力する．-aは新規作成を禁止する(既存のものに書き足すオプション)
- cirrosのダウンロード
  - `# curl -OL http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img`
- cirrosのイメージをImage serviceにアップロード
  - `# glance image-create --name "cirros" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --visibility public --progress`
      - qcow2: image serviceによりサポートされる仮想マシンイメージディスク形式の1つ
      - bare: 仮想マシンイメージ用のコンテナーが存在しないことを意味する、Image service のコンテナー形式。
      - public: すべてのプロジェクトがこのイメージにアクセスできる
- 作成が成功したら`/var/lib/glance/images/`の中にidが名前のファイルができている
- `glance image-list` でも一覧が見れる
- `curl -OL http://cloud.centos.org/centos/6/images/CentOS-6-x86_64-GenericCloud.qcow2` から落としてCentも入れてみた 同様にしたらいける