TripleO で OpenStack Ocata を仮想環境上にインストールしようとしたが失敗した

RDO の TripleO quickstart で OpenStack Ocata を仮想環境上にインストールしてみたけど、失敗したときのメモ。おそらくメモリ不足。

# はじめに

RDO の TripleO quickstart で OpenStack Ocata をインストールする。[このドキュメント](https://docs.openstack.org/developer/tripleo-quickstart/readme.html#tripleo-quickstart)によると、VIRTHOST と呼ばれる物理マシンからインストールするようなのだが、仮想マシンにしてインストールしてみる。

# 環境

物理マシン
* CentOS7.3
* Core i3-4020U(1.9GHz)
* メモリ16GB

VIRTHOST
* CentOS7.3
* CPU: 4
* メモリ 16GB
* HDD 100GB

# Nested KVM の設定

VIRTHOST 上で VM を起動するので、ここを参照して Nested KVM を設定しておく。

* [Nested KVM](http://qiita.com/syunasin/items/3b7dd1967975bfb1705f)

# 仮想ネットワークの作成

ここを参照して仮想ネットワークを作成しておく。

* [CentOS7 で仮想ネットワークを作成する](http://qiita.com/syunasin/items/71ce29038e6fe22ab49b)

# 仮想ディスクの作成

100GB のディスクイメージを作成する。

```
# mkdir -p /data/hdd
# qemu-img create -f qcow2 /data/hdd/tripleo.qcow2 100G
```

# VIRTHOST(仮想マシン)の作成

## CentOS7 の DVD イメージを取得

VIRTHOST の OS は CentOS7.3 を使用するので、DVDイメージを取得する。

```
# mkdir -p /data/iso
# cd /data/iso
# wget http://ftp.iij.ad.jp/pub/linux/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso
```

## kickstart の設定

CentOS7 は kickstart を使用してインストールする。

```xml:/tmp/tripleo-ks.cfg
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=vda
# Keyboard layouts
keyboard --vckeymap=jp --xlayouts='jp'
# System language
lang ja_JP.UTF-8

# Network information
network  --bootproto=static --device=eth0 --onboot=on --activate --gateway=192.168.172.1 --ip=192.168.172.100 --nameserver=192.168.172.1 --netmask=255.255.255.0 --noipv6
network  --hostname=tripleo

# Root password
rootpw --plaintext root
# System services
#services --enabled="chronyd"
# System timezone
timezone Asia/Tokyo --isUtc
user --groups=wheel --name=tripleo --password=tripleo --plaintext --gecos="tripleo"
# System bootloader configuration
bootloader --location=mbr --boot-drive=vda
autopart --type=lvm

# Partition clearing information
clearpart --all --initlabel --drives=vda

install
reboot
zerombr
text

%packages
@core
@base
@virtualization-client
@virtualization-hypervisor
@virtualization-tools
%end

%post --log=/root/postinstall.log
yum install -y epel-release
yum update -y
%end
```
## CentOS のインストール

仮想マシンを作成して、CentOS をインストールする。git から起動スクリプトを取得できる。(tripleo-machine.sh)

```
# virt-install \
    --virt-type kvm \
    --name tripleo \
    --vcpus 4 \
    --cpu host \
    --ram 16291 \
    --disk path=/data/hdd/tripleo.qcow2 \
    --network network:public1 \
    --graphics vnc \
    --os-type linux \
    --os-variant rhel7 \
    --boot hd \
    --location /data/iso/CentOS-7-x86_64-DVD-1611.iso \
    --initrd-inject /tmp/tripleo-ks.cfg \
    --extra-args "inst.ks=file:/tripleo-ks.cfg" \
```

# tripleo による openstack のインストール

## VIRTHOST へログイン

物理マシンからターミナルを起動して VIRTHOST へログインする。
以下の作業はこのターミナルから実行する。
virt-manager のコンソールからでもよいのだが、ログが流れてしまうので。ユーザーは tripleo を使用する。パスワードも同様に tripleo。VIRTHOST の IP は 192.168.172.100、ホストは tripleo に設定している。kickstart の設定ファイルで変更可能。

```
$ ssh tripleo@192.168.172.100
tripleo$ 
```

## ログインの設定

パスワードなしで sudo とか ssh とかをできるように設定しておく。  
まずは、ssh の設定。root のパスワードは root。

```
tripleo$ cd
tripleo$ mkdir .ssh
tripleo$ chmod 700 .ssh
tripleo$ ssh-keygen -t rsa -N "" -f .ssh/id_rsa
tripleo$ ssh-copy-id -i .ssh/id_rsa.pub tripleo@localhost
tripleo$ ssh-copy-id -i .ssh/id_rsa.pub root@localhost
```

つぎに sudo の設定

```
tripleo$ echo "tripleo ALL=(root) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/tripleo
tripleo$ sudo chmod 0440 /etc/sudoers.d/tripleo
```

## quickstart の実行

quickstart.sh をダウンロードして、実行する。undercloud のイメージなどをダウンロードするようなので時間がかかる。
僕の環境では undercloud の VM を起動しようとするまでに 1.5 時間かかった。
結局 undercloud の VM 起動できなくて、インストールに失敗した。

```
tripleo$ wget https://raw.githubusercontent.com/openstack/tripleo-quickstart/master/quickstart.sh
tripleo$ bash quickstart.sh --install-deps
tripleo$ export VIRTHOST=127.0.0.2
tripleo$ bash quickstart.sh $VIRTHOST
```


# 参考

* [https://www.rdoproject.org/tripleo/](https://www.rdoproject.org/tripleo/)
* [https://docs.openstack.org/developer/tripleo-quickstart/](https://docs.openstack.org/developer/tripleo-quickstart/)