OpenStack  Kolla を Macbook Air にインストールしてみた

# OpenStack とコンテナ
OpenStack も随分と枯れた雰囲気が出てきました。1年に2回開かれている OpenStack Summit でももはや安定性については語り尽くされ、次に何がフィーチャーされるのかが注目になってます。そんなラストフロンティアの一つにコンテナ利用があり、コンテナ環境を実現する Magnum、OpenStack 環境の提供を実現する Kolla やネットワーク機能を提供する Kuryr あたりは前回（2016年10月）のBarcelona でのセッションも多く盛り上がっていました。最新の [Ocata リリース](https://www.openstack.org/software/ocata/)でもそのあたりはきっちり触れられています。
そんなわけで今回はKollaについて調べていきたいと思います。まずはインストールしてみましょう。

## What is Kolla?
公式ドキュメントはこのあたり。

- [docs.openstack.org の公式ドキュメント](https://docs.openstack.org/developer/kolla/)
- [github 上に公開された kolla のソース](https://github.com/openstack/kolla)
- [docker hub にある Kolla のページ](https://hub.docker.com/u/kolla/)

Kolla には現在2つのサブプロジェクトがあります。kolla-kubernetes は kolla-ansible に依存して開発されているようなので、本記事ではまず kolla-ansible をインストールしてみようと思います。

- [kolla-ansible](https://docs.openstack.org/developer/kolla-ansible/)
- [kolla-kubernetes](https://docs.openstack.org/developer/kolla-kubernetes/)

なお、Kolla 上で提供される OpenStackプロジェクトは現在以下の通り。これだけあれば、大抵のことはできそうですね。

- `Aodh <http://docs.openstack.org/developer/aodh/>`__
- `Barbican <http://docs.openstack.org/developer/barbican/>`__
- `Bifrost <http://docs.openstack.org/developer/bifrost/>`__
- `Ceilometer <http://docs.openstack.org/developer/ceilometer/>`__
- `Cinder <http://docs.openstack.org/developer/cinder/>`__
- `CloudKitty <http://docs.openstack.org/developer/cloudkitty/>`__
- `Congress <http://docs.openstack.org/developer/congress/>`__
- `Designate <http://docs.openstack.org/developer/designate/>`__
- `Freezer <https://wiki.openstack.org/wiki/Freezer-docs>`__
- `Glance <http://docs.openstack.org/developer/glance/>`__
- `Gnocchi <http://docs.openstack.org/developer/gnocchi/>`__
- `Heat <http://docs.openstack.org/developer/heat/>`__
- `Horizon <http://docs.openstack.org/developer/horizon/>`__
- `Ironic <http://docs.openstack.org/developer/ironic/>`__
- `Karbor <http://docs.openstack.org/developer/karbor/>`__
- `Keystone <http://docs.openstack.org/developer/keystone/>`__
- `Kuryr <http://docs.openstack.org/developer/kuryr/>`__
- `Magnum <http://docs.openstack.org/developer/magnum/>`__
- `Manila <http://docs.openstack.org/developer/manila/>`__
- `Mistral <http://docs.openstack.org/developer/mistral/>`__
- `Monasca <http://wiki.openstack.org/wiki/monasca>`__
- `Murano <http://docs.openstack.org/developer/murano/>`__
- `Neutron <http://docs.openstack.org/developer/neutron/>`__
- `Nova <http://docs.openstack.org/developer/nova/>`__
- `Octavia <http://docs.openstack.org/developer/octavia/>`__
- `Panko <http://docs.openstack.org/developer/panko/>`__
- `Rally <http://docs.openstack.org/developer/rally/>`__
- `Sahara <http://docs.openstack.org/developer/sahara/>`__
- `Searchlight <http://docs.openstack.org/developer/searchlight/>`__
- `Senlin <http://docs.openstack.org/developer/senlin/>`__
- `Solum <http://docs.openstack.org/developer/solum/>`__
- `Swift <http://docs.openstack.org/developer/swift/>`__
- `Tacker <http://docs.openstack.org/developer/tacker/>`__
- `Tempest <http://docs.openstack.org/developer/tempest/>`__
- `Trove <http://docs.openstack.org/developer/trove/>`__
- `Vmtp <http://vmtp.readthedocs.io/en/latest/>`__
- `Watcher <http://docs.openstack.org/developer/watcher/>`__
- `Zaqar <http://docs.openstack.org/developer/zaqar/>`__
- `Zun <http://wiki.openstack.org/wiki/zun>`__

また、Kolla はインフラ用のコンポーネントも提供しています。この辺りがないと、インストールも儘ならないので、当然っちゃ当然ですかね。

- Ceph implementation for Cinder, Glance and Nova
- collectd, InfluxDB, and Grafana for performance monitoring.
- Elasticsearch and Kibana to search, analyze, and visualize log messages.
- HAProxy and Keepalived for high availability of services and their endpoints.
- Heka A distributed and scalable logging system for OpenStack services.
- Kafka A distributed streaming platform.
- MariaDB and Galera Cluster for highly available MySQL databases
- MongoDB as a database back end for Ceilometer and Gnocchi
- Open vSwitch and Linuxbridge back ends for Neutron
- RabbitMQ as a messaging back end for communication between services.

# インストール
さて、インストールを進めることにしましょう。[Quick Start](https://docs.openstack.org/developer/kolla-ansible/quickstart.html) を見ていくと、ハードウェア要件が書かれています。

- 2 network interfaces
- 8GB main memory
- 40GB disk space

準備できているインストール環境は **MacBook Air Early 2015 (macOS Sierra 10.12.3)** です。メモリが 4GB しかないんですが、インフラエンジニアの根性で出来るところまで動かしたいと思います。なお、推奨されている環境はベアメタルか仮想マシンということなので、Vagrant+Virtualbox を使って All-in-one 構成を試してみます。

参考までに、開発環境用の [Vagrantfile] (https://github.com/openstack/kolla/blob/master/contrib/dev/vagrant/Vagrantfile) に書かれている仮想マシンの設定は以下の通りです。

|Machine Type|CPU|Memory|
|:---------|--:|-----:|
|All-in-One|4|4096|
|Operator|1|1024|
|Control|1|2048|
|Compute|1|1024|
|Storage|1|1024|
|Network|1|1024|

## 仮想マシン環境の準備
Vagrant + VirtualBox を使い、仮想マシン環境を作ります。

```
$ vagrant init centos/7;
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
```

利用した Vagrantfile はこんな感じです。

``` ruby:Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.hostname = "KollaEvSV"
  config.vm.network "private_network", ip: "192.168.33.10"
   config.vm.provider "virtualbox" do |vb|
     vb.memory = "2048"
  end
end
```

## CentOS7 内に環境を整える

CentOS7 上で環境を整えていきます。

```
$ yum update
```

次にインターフェイスがアップしている事を確認します。

```
$ ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:1f:db:b7 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
       valid_lft 84834sec preferred_lft 84834sec
    inet6 fe80::5054:ff:fe1f:dbb7/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:fc:26:5f brd ff:ff:ff:ff:ff:ff
    inet 192.168.33.10/24 brd 192.168.33.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fefc:265f/64 scope link 
       valid_lft forever preferred_lft forever
```

## 環境の準備

Kolla のデプロイメントに必要となるソフトウェアのインストールを進めます。Ocata 用の Minimum requirement は見つからなかったので、Newtonのものを参考にします。

- Ansible (>2.0.0)
- Docker (>1.10.0)
- Docker Python (>1.6.0)
- Python Jinja2 (>2.8.0)

まずは EPEL と PIP のインストール。

```
# yum install epel-release
# yum install python-pip
# pip install -U pip
```

続いて PIP パッケージマネージャ用のライブラリをインストールします。

```
# yum install python-devel libffi-devel gcc openssl-devel
```

続いて ansible のインストール。

```
# yum install ansible
```

このままでは ansible 1,9.6 が入り requirment を満たさないので、パッケージのアップグレードをかけます。

```
# pip install -U ansible
# ansible --version
ansible 2.2.1.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides
```

続いて Docker のインストール。

```
# curl -sSL https://get.docker.io | bash
# docker --version
Docker version 17.03.0-ce, build 60ccb22
```

バージョン表記がなんかおかしいー、と思ったら2017年3月のリリースから[変わった](https://github.com/docker/docker/blob/master/CHANGELOG.md)みたいですね。

docker-engine を systemd に登録します。

```
# mkdir -p /etc/systemd/system/docker.service.d
# tee /etc/systemd/system/docker.service.d/kolla.conf <<-'EOF'
[Service]
MountFlags=shared
EOF

# systemctl daemon-reload
# systemctl restart docker
```

続いて Docker Python のインストール。こちらも同様にアップグレードをかけます。

```
# yum install python-docker-py
# pip install -U docker-py
```

NTP のインストールもします。

```
# yum install ntp
# systemctl enable ntpd.service
# systemctl start ntpd.service

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 x.ns.gin.ntt.ne 249.224.99.213   2 u    1   64    1   48.796  -15.726   0.902
 r031229.203112. 203.112.1.4      4 u    -   64    1   28.593    6.632  11.210
 153-128-30-125. 133.243.238.243  2 u    1   64    1   18.442   -3.141   0.000
 sv01.azsx.net   10.84.87.146     2 u    -   64    1   12.920   -2.351   0.000
```

Libvirtd が動いているときは、停止させる必要があります。

```
# systemctl stop libvirtd.service
# systemctl disable libvirtd.service
```

hosts への追加もお忘れなく。

```
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.2.15	koollaEvSV       KollaEvSV
```

## Kolla デプロイメント

さあ、ようやく Kolla に手がつけられます。

```
# pip install kolla-ansible
```

globals.yml と passwords.yml を /etc/kolla/ にコピーします。

```
# cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/kolla/
```

インベントリファイルをカレントディレクトリにコピー。

```
cp /usr/share/kolla-ansible/ansible/inventory/* .
```

インターフェイスの設定を行うために、/etc/kolla/globals.yml を編集します。

```
network_interface: "eth0"
neutron_external_interface: "eth1"
```

パスワードの生成を kolla-genpwd を使って行います。結果は/etc/kolla/passwords.yml に保存されます。

```
kolla-genpwd
```

さてここまででホストの準備は終了です。割とめんどくさいですね。そんなあなたに、`kolla-ansible -i <<inventory file>> bootstrap-servers`というコマンドで Quick setup をしてくれるみたいです。これ使えばよかった〜！

## コンテナイメージのビルド
etc/systemd/system/docker.service.d/kolla.confを編集して、以下のようにします。

```
[Service]
MountFlags=shared
ExecStart=
ExecStart=/usr/bin/docker daemon --mtu 1400
```

```
# systemctl daemon-reload
# systemctl restart docker
```

Docker image をプルします。

```
# kolla-ansible pull
# docker images
REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
kolla/centos-binary-neutron-server              4.0.0               8dedaf87d819        31 hours ago        727 MB
kolla/centos-binary-nova-compute                4.0.0               35da27fc5586        31 hours ago        1.23 GB
kolla/centos-binary-neutron-openvswitch-agent   4.0.0               d276dcdfcbb6        31 hours ago        727 MB
kolla/centos-binary-neutron-metadata-agent      4.0.0               e1c0bf5f7745        31 hours ago        703 MB
kolla/centos-binary-heat-api                    4.0.0               66332a0e6ad4        31 hours ago        644 MB
kolla/centos-binary-neutron-dhcp-agent          4.0.0               445442cd0f01        31 hours ago        703 MB
kolla/centos-binary-neutron-l3-agent            4.0.0               445442cd0f01        31 hours ago        703 MB
kolla/centos-binary-heat-api-cfn                4.0.0               ce92766d3ff1        31 hours ago        644 MB
kolla/centos-binary-nova-ssh                    4.0.0               3b0f5591ecc8        31 hours ago        723 MB
kolla/centos-binary-nova-placement-api          4.0.0               8a16c227e835        31 hours ago        755 MB
kolla/centos-binary-nova-conductor              4.0.0               65a844b9889e        31 hours ago        703 MB
kolla/centos-binary-nova-api                    4.0.0               d90b06229654        31 hours ago        755 MB
kolla/centos-binary-nova-consoleauth            4.0.0               487d0b6926d3        31 hours ago        704 MB
kolla/centos-binary-nova-scheduler              4.0.0               92bdcfc854ac        31 hours ago        703 MB
kolla/centos-binary-nova-novncproxy             4.0.0               7f246ab0d8f5        31 hours ago        704 MB
kolla/centos-binary-kolla-toolbox               4.0.0               d771b993a59b        31 hours ago        730 MB
kolla/centos-binary-keystone                    4.0.0               9b0c48681973        31 hours ago        677 MB
kolla/centos-binary-glance-registry             4.0.0               68da81d330c4        31 hours ago        757 MB
kolla/centos-binary-horizon                     4.0.0               dc5a666631eb        31 hours ago        863 MB
kolla/centos-binary-haproxy                     4.0.0               420fb3e8ce55        31 hours ago        439 MB
kolla/centos-binary-cron                        4.0.0               74a89fe112f0        31 hours ago        418 MB
kolla/centos-binary-openvswitch-db-server       4.0.0               37f21379cad8        31 hours ago        440 MB
kolla/centos-binary-heat-engine                 4.0.0               ab9138c4719c        31 hours ago        644 MB
kolla/centos-binary-glance-api                  4.0.0               bc61de7fba03        31 hours ago        816 MB
kolla/centos-binary-fluentd                     4.0.0               5b98e39f1285        31 hours ago        720 MB
kolla/centos-binary-nova-libvirt                4.0.0               b21c5bacfbcf        31 hours ago        966 MB
kolla/centos-binary-openvswitch-vswitchd        4.0.0               b047dd6e83cd        31 hours ago        440 MB
kolla/centos-binary-memcached                   4.0.0               927246be7bd2        31 hours ago        418 MB
kolla/centos-binary-rabbitmq                    4.0.0               c9e9af5a39b9        31 hours ago        477 MB
kolla/centos-binary-mariadb                     4.0.0               7c9305397257        31 hours ago        808 MB
kolla/centos-binary-keepalived                  4.0.0               b8fb9f966ac4        31 hours ago        423 MB

```

用意されたイメージは31ほどありました。これらが docker run するだけで動くとは胸熱ですね。

設定を続けます。もう一度`/etc/kolla/globals.yml`の編集に戻り`kolla_internal_vip_address`の値を設定します。同一サブネットに所属する未使用アドレスを指定します。

```
kolla_internal_vip_address: "10.0.2.16"
```

続いて仮想化のハードウェア・アクセラレーションがサポート有無を確認。今回はzeroが返ってきているので、Nova は QEMU を使うようにします。

```
# egrep -c '(vmx|svm)' /proc/cpuinfo
0
# mkdir -p /etc/kolla/config/nova
# cat << EOF > /etc/kolla/config/nova/nova-compute.conf
[libvirt]
virt_type = qemu
cpu_mode = none
EOF
```

## ようやくデプロイ…なのだが
これで一通りの準備は整いました。が、忘れていけないのは今回の環境の貧弱さ。このままデプロイしてはきっと不幸なことが起こります。デプロイされるコンポーネントの制御はどのスクリプトでしているのかを見てみると、~~どうもインベントリファイルが臭い~~ `/etc/kolla/globals.yml`で設定するようです。ここの記述を僕の独断と偏見で最低限のものにしてみましょう。

編集したglobals.ymlを[ここ](https://github.com/radedance/kolla-testing/blob/master/globals.yml)においてみました。参考にしてみてください。

kolla-ansible の prechecks でこれまでの設定や環境の確認をしていきます。ここでいっぱいエラーが出るかもしれませんが一つ一つ解決していきましょう。あと少しですよ！

```
kolla-ansible prechecks -i all-in-one
(...)
PLAY RECAP *********************************************************************
localhost                  : ok=126  changed=0    unreachable=0    failed=0  
```

ヤッター、通ったー！早速デプロイです。


## OpenStack Kolla のデプロイ

では早速やってみましょう。

```
kolla-ansible deploy -i all-in-one
(...)
PLAY RECAP *********************************************************************
localhost                  : ok=265  changed=116  unreachable=0    failed=0
```

意外と早いですね。体感ですが数分といったところです。これならデプロイ時に問題が起きたときの切り戻しでも実用になるかもしれません。

```
# docker ps
CONTAINER ID        IMAGE                                                 COMMAND             CREATED             STATUS              PORTS               NAMES
660109e1c5a1        kolla/centos-binary-horizon:4.0.0                     "kolla_start"       2 minutes ago       Up 2 minutes                            horizon
065a055bb5f1        kolla/centos-binary-heat-engine:4.0.0                 "kolla_start"       3 minutes ago       Up 3 minutes                            heat_engine
83c25517a69f        kolla/centos-binary-heat-api-cfn:4.0.0                "kolla_start"       3 minutes ago       Up 3 minutes                            heat_api_cfn
6455729f0915        kolla/centos-binary-heat-api:4.0.0                    "kolla_start"       3 minutes ago       Up 3 minutes                            heat_api
2c39a5fb949a        kolla/centos-binary-neutron-metadata-agent:4.0.0      "kolla_start"       5 minutes ago       Up 5 minutes                            neutron_metadata_agent
6fc7abebd4f4        kolla/centos-binary-neutron-l3-agent:4.0.0            "kolla_start"       5 minutes ago       Up 5 minutes                            neutron_l3_agent
8d82d1231d27        kolla/centos-binary-neutron-dhcp-agent:4.0.0          "kolla_start"       5 minutes ago       Up 5 minutes                            neutron_dhcp_agent
1a19cb1b3711        kolla/centos-binary-neutron-openvswitch-agent:4.0.0   "kolla_start"       5 minutes ago       Up 5 minutes                            neutron_openvswitch_agent
2b9cad419219        kolla/centos-binary-neutron-server:4.0.0              "kolla_start"       5 minutes ago       Up 5 minutes                            neutron_server
9bce73422ce5        kolla/centos-binary-openvswitch-vswitchd:4.0.0        "kolla_start"       5 minutes ago       Up 5 minutes                            openvswitch_vswitchd
89964bb13a96        kolla/centos-binary-openvswitch-db-server:4.0.0       "kolla_start"       5 minutes ago       Up 5 minutes                            openvswitch_db
80ec59644b0e        kolla/centos-binary-nova-compute:4.0.0                "kolla_start"       8 minutes ago       Up 8 minutes                            nova_compute
51be30d1fe3b        kolla/centos-binary-nova-novncproxy:4.0.0             "kolla_start"       8 minutes ago       Up 8 minutes                            nova_novncproxy
e1c15eb9ff6d        kolla/centos-binary-nova-consoleauth:4.0.0            "kolla_start"       8 minutes ago       Up 8 minutes                            nova_consoleauth
a1a8b9c91efa        kolla/centos-binary-nova-conductor:4.0.0              "kolla_start"       8 minutes ago       Up 8 minutes                            nova_conductor
9a9c023fd765        kolla/centos-binary-nova-scheduler:4.0.0              "kolla_start"       8 minutes ago       Up 8 minutes                            nova_scheduler
0415d5f8088e        kolla/centos-binary-nova-api:4.0.0                    "kolla_start"       8 minutes ago       Up 8 minutes                            nova_api
eca65fa6a8e9        kolla/centos-binary-nova-placement-api:4.0.0          "kolla_start"       8 minutes ago       Up 8 minutes                            placement_api
23819b965280        kolla/centos-binary-nova-libvirt:4.0.0                "kolla_start"       8 minutes ago       Up 8 minutes                            nova_libvirt
138bf2fe6cd7        kolla/centos-binary-nova-ssh:4.0.0                    "kolla_start"       8 minutes ago       Up 8 minutes                            nova_ssh
f6836459471d        kolla/centos-binary-glance-registry:4.0.0             "kolla_start"       10 minutes ago      Up 10 minutes                           glance_registry
cd24476d69bb        kolla/centos-binary-glance-api:4.0.0                  "kolla_start"       10 minutes ago      Up 10 minutes                           glance_api
68e4de29feb1        kolla/centos-binary-keystone:4.0.0                    "kolla_start"       11 minutes ago      Up 11 minutes                           keystone
2934bf820687        kolla/centos-binary-rabbitmq:4.0.0                    "kolla_start"       11 minutes ago      Up 11 minutes                           rabbitmq
1f1645be9e37        kolla/centos-binary-mariadb:4.0.0                     "kolla_start"       12 minutes ago      Up 12 minutes                           mariadb
9a7fd746ba07        kolla/centos-binary-memcached:4.0.0                   "kolla_start"       12 minutes ago      Up 12 minutes                           memcached
a5e0fb64ebc7        kolla/centos-binary-keepalived:4.0.0                  "kolla_start"       13 minutes ago      Up 13 minutes                           keepalived
9c818d0b52fb        kolla/centos-binary-haproxy:4.0.0                     "kolla_start"       13 minutes ago      Up 13 minutes                           haproxy
5a126c7b600c        kolla/centos-binary-cron:4.0.0                        "kolla_start"       30 minutes ago      Up 30 minutes                           cron
3677d3d6420a        kolla/centos-binary-kolla-toolbox:4.0.0               "kolla_start"       30 minutes ago      Up 30 minutes                           kolla_toolbox
425bf226015c        kolla/centos-binary-fluentd:4.0.0                     "kolla_start"       30 minutes ago      Up 30 minutes                           fluentd
```

## デプロイした環境を使ってみる

新しく構築した環境を使うため、変数設定などを行うシェルを生成します。

```
$ kolla-ansible post-deploy
$ . /etc/kolla/admin-openrc.sh
$ env | grep OS_
OS_USER_DOMAIN_NAME=default
OS_PROJECT_NAME=admin
OS_IDENTITY_API_VERSION=3
OS_PASSWORD=UwK9kID4v7AQe4ISvILhkSZ1MvRk83fXexJ7RzCf
OS_AUTH_URL=http://10.0.2.16:35357/v3
OS_USERNAME=admin
OS_TENANT_NAME=admin
OS_INTERFACE=internal
OS_PROJECT_DOMAIN_NAME=default
```

OpenStack クライアントを入れていない場合は、インストールします。

```
pip install python-openstackclient
```

flavor も image も何もない環境なので、適当に作って……。

```
$ nova boot --flavor m1.extra_tiny --image cirros test
+--------------------------------------+------------------------------------------------------+
| Property                             | Value                                                |
+--------------------------------------+------------------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                               |
| OS-EXT-AZ:availability_zone          |                                                      |
| OS-EXT-SRV-ATTR:host                 | -                                                    |
| OS-EXT-SRV-ATTR:hostname             | test                                                 |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | -                                                    |
| OS-EXT-SRV-ATTR:instance_name        |                                                      |
| OS-EXT-SRV-ATTR:kernel_id            |                                                      |
| OS-EXT-SRV-ATTR:launch_index         | 0                                                    |
| OS-EXT-SRV-ATTR:ramdisk_id           |                                                      |
| OS-EXT-SRV-ATTR:reservation_id       | r-o71a4xpx                                           |
| OS-EXT-SRV-ATTR:root_device_name     | -                                                    |
| OS-EXT-SRV-ATTR:user_data            | -                                                    |
| OS-EXT-STS:power_state               | 0                                                    |
| OS-EXT-STS:task_state                | scheduling                                           |
| OS-EXT-STS:vm_state                  | building                                             |
| OS-SRV-USG:launched_at               | -                                                    |
| OS-SRV-USG:terminated_at             | -                                                    |
| accessIPv4                           |                                                      |
| accessIPv6                           |                                                      |
| adminPass                            | 79ZaWp3SUyps                                         |
| config_drive                         |                                                      |
| created                              | 2017-03-20T03:26:56Z                                 |
| description                          | -                                                    |
| flavor                               | m1.extra_tiny (db60905a-05b6-404d-959a-f8c2a047ddfd) |
| hostId                               |                                                      |
| host_status                          |                                                      |
| id                                   | b956fb98-2295-45da-937c-96275924371e                 |
| image                                | cirros (76898c08-10b7-4e49-812c-fa518cc60c51)        |
| key_name                             | -                                                    |
| locked                               | False                                                |
| metadata                             | {}                                                   |
| name                                 | test                                                 |
| os-extended-volumes:volumes_attached | []                                                   |
| progress                             | 0                                                    |
| security_groups                      | default                                              |
| status                               | BUILD                                                |
| tags                                 | []                                                   |
| tenant_id                            | 4faa7e528627446781136e9db40ed168                     |
| updated                              | 2017-03-20T03:26:57Z                                 |
| user_id                              | 90bf61329d924ca485a68bc18fd4db4a                     |
+--------------------------------------+------------------------------------------------------+
```

出来ました！

# 終わりに
Kolla を使ったOpenStack デプロイを思いついてから動かすまで、10時間ぐらいかかったでしょうか。Ansible と OpenStack に慣れた方なら、もっと早く動かせると思います。さて今回のお題だった、貧弱な Macbook Air の環境で無事に Kolla でデプロイした OpenStack を動かすことが出来ました。DevStack でもリソース的に結構苦しいと思うんですが、今回のように最低限に絞れば動くんでしょうか？

ともあれ Kolla にはこれから期待です。

ハマりどころは globals.yml でコンポーネントの有効無効を制御するところでしょうか。QuickStart でも*All variables for the environment can be specified in the files: /etc/kolla/globals.yml and /etc/kolla/passwords.yml.* ぐらいの触れ方なので、私のように分からずに突き進んでしまうかもしれません。でも、分かってしまえば設定は簡単です。