目的
OpenStackの勉強のために、Virtualbox (Vagrant) のGuest OS (ubuntu18.04)に、OpenStackをDevStackを使ってinstallする。
Ref.
https://docs.openstack.org/devstack/latest/
https://qiita.com/feifo/items/0fde474005589afcff68
https://github.com/rafiror/openstack/wiki/Devstack%E5%85%A5%E9%96%80
VagrantでUbuntu18.04のVMを作成
cpuは2個、memoryは5Gを割り当て。virutalboxのpublic_networkを使う。
### vagrant用のdirectoryを作成
$ mkdir devstack && cd devstack
### Vagrantfileを生成
$ vagrant init bento/ubuntu-18.04
### Vagrantfileを編集。メモリ量とhost OS側からguest OS(ubuntu18.04)へのアクセス用のIP addressを設定。
$ vi Vagrantfile
### 以下を修正
### 以下をコメントイン (VirtualboxのPublic Networkを使う)
config.vm.network "public_network"
### 以下をコメントイン
config.vm.provider "virtualbox" do |vb|
### 以下を追加
vb.memory = "5120"
vb.cpus = 2
### 以下をコメントイン
end
### VMを立ち上げる
$ vagrant up
### VMに接続
$ vagrant ssh
### network IFのip addressを確認しておく (後ほどdevstack install時にHost OS側からアクセス可能なeth1を使う)
vagrant@vagrant:~$ ifconfig eth1
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.20.10.3 netmask 255.255.255.240 broadcast 172.20.10.15
inet6 fe80::a00:27ff:feed:f7dd prefixlen 64 scopeid 0x20<link>
ether 08:00:27:ed:f7:dd txqueuelen 1000 (Ethernet)
RX packets 4469 bytes 480623 (480.6 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5407 bytes 7605086 (7.6 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vagrant@vagrant:~$
Ubuntu上でOpenStackをinstallする
devstackの本家サイトに従ってinstallしていく
### aptのrepogitryを最新化
vagrant@vagrant:~$ sudo apt-get update
### gitをinstall
vagrant@vagrant:~$ sudo apt-get install git
### 本家サイトに従ってstackユーザを作る
vagrant@vagrant:~$ sudo useradd -s /bin/bash -d /opt/stack -m stack
### stackユーザを、sudoでpasswordを聞かれないようにする
vagrant@vagrant:~$ echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
stack ALL=(ALL) NOPASSWD: ALL
### stackユーザになる
vagrant@vagrant:~$ sudo su - stack
stack@vagrant:~$
### devstackをgitで取ってくる
stack@vagrant:~$ git clone https://opendev.org/openstack/devstack
stack@vagrant:~$ cd devstack/
### local.confをsampleから作成
stack@vagrant:~/devstack$ cp samples/local.conf .
### local.confを編集
stack@vagrant:~/devstack$ vi local.conf
### ADMIN_PASSWORDを設定。
### DATABASE_PASSWORDやRABBIT_PASSWORDはADMIN_PASSWORDと同じに設定。
### HOST_IPのコメントアウト解除。
### 値は仮想マシンのIPアドレス(172.20.10.3)を設定。
### FLAT_INTERFACE=eth1を設定。
### 設定結果の確認
stack@vagrant:~/devstack$ diff local.conf samples/local.conf
28,30c28,30
< ADMIN_PASSWORD=secret
< DATABASE_PASSWORD=$ADMIN_PASSWORD
< RABBIT_PASSWORD=$ADMIN_PASSWORD
---
> ADMIN_PASSWORD=nomoresecret
> DATABASE_PASSWORD=stackdb
> RABBIT_PASSWORD=stackqueue
40c40
< HOST_IP=172.20.10.3
---
> #HOST_IP=w.x.y.z
43d42
< FLAT_INTERFACE=eth1
stack@vagrant:~/devstack$
### devstackをinstall
stack@vagrant:~/devstack$ ./stack.sh
### CLIのopenstackコマンドを使う際の環境変数を読み込み。
stack@vagrant:~/devstack$ source openrc
openstackへアクセス
http://172.20.10.3へアクセス
ID: admin Password: secret
login画面
login後の画面
networkの状態の確認
key pairの作成
virtualboxのguest osのubuntu18.04側で鍵を生成
### sshの鍵生成 (とりあえずstackユーザで作った)
stack@vagrant:~$ ssh-keygen
stack@vagrant:~$ cat .ssh/id_rsa.pub
# ここに出力される公開鍵をコピー
security groupの作成
instanceを作ってみる。
VMに当てるセキュリティグループを選ぶ。先ほど作ったtestを選ぶ。
VMに登録するsshの公開鍵を選ぶ。先ほどopenstackに登録した鍵を選択する。
以下の様な感じ。もしfloating IPがなければ、プラスボタンを押して新たにfloating ipを作る。
作ったVMにssh接続(floating IPにssh)
stack@vagrant:~$ ssh cirros@172.24.4.202
$ # 接続できた。
まとめ
以上です。残課題として、VirtualboxのHostOS (自分の場合はMac OS)からOpenStackで作成したVMにアクセスできてないです。誰かやり方がわかる方がいらっしゃったら教えてもらえると幸いです。