openstackを触ってみたかったのでdevstackを触ってみたときのメモです。
(とりあえずインストールして少し触ってみただけ)
DevStackとは
-
openstackを簡単にデプロイするためのツール
- なのでopenstackのディストリビューションではない
- あくまで開発用で本番で使用しないほうがよい、らしい
-
以前はdevstack一択だったらしいが、今はいろんなツールが存在している
- OpenStackの公式デプロイツールであり、OpenStackのCIでも使われている
- こちらの入門wikiも参考になった
-
ディストリビューションについて
vagrant_devstack
- vagrantでUbuntuを起動して、chefでdevstackを実行するパッケージ
- etc以下のsampleファイルをリネームし、独自の値で既存設定を上書きすることができる
実行してみる
-
vagrant up
で起動した後しばらく放置するだけ。。- エラーでコケた。。
==> default: OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/pbr'
==> default: /usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
==> default: InsecurePlatformWarning
==> default: + exit_trap
==> default: + local r=2
==> default: ++ jobs -p
==> default: + jobs=
==> default: + [[ -n '' ]]
==> default: + kill_spinner
==> default: + '[' '!' -z '' ']'
==> default: + [[ 2 -ne 0 ]]
==> default: + echo 'Error on exit'
==> default: + [[ -z /opt/stack/logs ]]
==> default: + /home/vagrant/devstack/tools/worlddump.py -d /opt/stack/logs
==> default: + exit 2
==> default: ---- End output of su -c 'set -e; cd /home/vagrant/devstack; RECLONE=yes bash stack.sh > devstack.log' vagrant ----
==> default: Ran su -c 'set -e; cd /home/vagrant/devstack; RECLONE=yes bash stack.sh > devstack.log' vagrant returned 2
==> default: [2016-01-12T09:22:09+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
Chef never successfully completed! Any errors should be visible in the
output above. Please fix your recipes so that they properly complete.
pythonの環境が合っていない??
調査のためVM内に入ってみたがよく分からない。。
手動devstack
今度はdevstackのクイックスタート通りにやってみる。
1. vagrant で Ubuntu 作成
$ vagrant init
$ vi Vagrantfile
Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "trusty"
config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
config.vm.network :private_network, ip: "192.168.33.10"
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "4096", "--cpus", "2"]
end
end
$ vagrant up
$ vagrant ssh
2. devstackの準備
$ sudo apt-get install git
$ git clone https://git.openstack.org/openstack-dev/devstack
3. 設定ファイルを作成
$ vi devstack/local.conf
- Minimal Configurationをそのまま使用した
[[local|localrc]]
ADMIN_PASSWORD=secrete
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
#FIXED_RANGE=172.31.1.0/24
#FLOATING_RANGE=192.168.20.0/25
#HOST_IP=10.3.4.5
4. ドキュメント通りに stack ユーザを作る
$ devstack/tools/create-stack-user.sh
$ sudo chmod -R 777 devstack
$ sudo su - stack
5. インストール実行
$ cd /home/vagrant/devstack
$ ./stack.sh
これでとりあえずインストールは完了した。
コンソールに出力されるIDとパスワードで管理画面(horizon)にログインする。
- 起動スクリプト
- Ubuntu内でdevstackを再実行する場合は、
~/devstack/stack.sh
を実行 - openstackの再起動を行う場合は、
~/devstack/rejoin-stack.sh
を実行
(vagrantに例えると、stack.shはvagrantの再実行で、rejoin-stack.shはUbuntuの再起動、というイメージだと思われる)
- Ubuntu内でdevstackを再実行する場合は、
OpenStackの操作
GUI
- ブラウザで
192.168.33.10
にアクセスするとOpenStackのコンソール画面が表示される - 手順通りに実施すると、
- ID = "admin" or "demo"
- Password = "nomoresecrete"
でログインできるはず。
CUI
- クライアントツールを実行する場合、事前に環境変数の設定が必要
- 下記コマンドで必要な環境変数をまとめて設定できる("username"と"tenantname"は省略可能)
$ source openrc [username] [tenantname]
- nova とか neutron とか、コンポーネントごとに色んなコマンドがある
RestAPI
- 外部システムから処理を呼び出す場合に使用する
- 実際には対応したSDKを使って呼び出すのが一般的な模様
エラーになる。。。
- フレーバー(インスタンスサイズ)で"m1.small"以上を選択してインスタンスを起動するとエラーになる。。
- おそらくホストのメモリが足りなくてエラーになっていたと思われる
- RDOではホストのメモリを上げたらインスタンス起動できた
⇒ 【RDOを試してみる】
参考サイト