ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

CentOS 7でVagrantとPackstackでOpenStack Ocataの構築

そろそろ触ってみようかと思い、試してみました。 アンサーファイルの中身、ずいぶん増えたなあ。ダッシュボードのOpenStackのロゴ、新しくなりましたね。

なお、CentOS 7はVirtualBoxとVagrantを使ってデプロイする都合で、ちょっとだけ面倒なことをしています。

OpenStackのデプロイまでの流れ

0.CentOS 7のデプロイ、起動

デプロイするCentOS 7のVagrantイメージは公式のものをダウンロードし、登録しておきます。

vagrant up もしくはvagrant up XXなどでCentOS 7を起動します。

$ vagrant up

1.CentOS7が起動したら、面倒なのでrootユーザーになる

$ sudo -i

2.リポジトリーを有効化

CentOSのOpenStackパッケージは「centos-release-openstack-XX」という名前のパッケージをインストールすると有効になります。現行の最新版はOcataです。

# yum install -y centos-release-openstack-ocata

ちなみに現時点ではインストールするパッケージを変更することで、Mitaka,Newtonをデプロイするのも成功しています。

  • centos-release-openstack-mitaka
  • centos-release-openstack-newton

3.すべてのパッケージをアップデート

# yum update -y

4.再起動する(推奨)

カーネルの更新があった場合は再起動が必要です。vagrant reloadコマンドで仮想マシンを再起動します。

# exit
$ exit
$ vagrant reload
$ vagrant ssh

5.ifupコマンドでeth1をアクティブにする

VMにNICを追加するか、事前に二つ目を追加するようにVagrantfileに記述しておき、CentOS起動後に追加したデバイスをUpします。今後のVagrantのバージョンアップでこの処理が不要になるかも知れません。

# ifup eth1

6.eth1インターフェイスを確認

# ip a s eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.213/24 brd 192.168.0.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe10:63dc/64 scope link
       valid_lft forever preferred_lft forever

7.openstack-packstackパッケージのインストール

# yum install -y openstack-packstack

通常、1Nodeインストールする場合、この後packstack --allinoneコマンドを実行してall-in-oneインストール!

...するわけですが、そのまま実行すると想定したように構築できない(VirtualBoxはNATのIPアドレスには外から中へアクセスできない)ので、以下の方法で事前にデプロイする環境のBind IPアドレスを変更する。

8.アンサーファイルの作成

# packstack --gen-answer-file=answer.txt

もしくは--dry-runと--install-hostsをつけて実行する。install-hostsでbind-ip側のIPアドレスを指定すると、ステップ9が不要になります。

# packstack --install-hosts=192.168.0.213 --dry-run

9.IPアドレスが「10.0.2.15」と設定されている箇所をeth1のIPアドレスに変更

実行例

# sed -i 's/10.0.2.15/192.168.0.213/g' answer.txt

10.0.2.15はeth0が持つIPアドレス(NAT接続)。VirtualBoxのNAT接続は中から外の通信のみ可能なので、このインターフェイスを使うと構築したOpenStackにアクセスできない。これを回避するためにアクセスできるeth1の方に切り替える。

eth1は「Host Only Adapter」を割り当てると良い(ちなみに他のユーザーに公開したい場合はブリッジなどを使う)。

10.その他、設定したい箇所があれば編集する。 インストールしたい、したくないコンポーネントを設定...など。

11.インストール開始

# packstack --answer-file=answer.txt
...
 **** Installation completed successfully ******

Additional information:
 * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
 * Warning: NetworkManager is active on 192.168.0.213. OpenStack networking currently does not work on systems that have the Network Manager service enabled.
 * File /root/keystonerc_admin has been created on OpenStack client host 192.168.0.213. To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to http://192.168.0.213/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
 * The installation log file is available at: /var/tmp/packstack/20170319-123201-RWxEWA/openstack-setup.log
 * The generated manifests are available at: /var/tmp/packstack/20170319-123201-RWxEWA/manifests

OpenStackの利用

adminユーザーのログインパスワードはkeystonerc_adminに、demoユーザーのログインパスワードはkeystonerc_demoに書かれています。

f:id:ytooyama:20170319220612p:plain

セキュリティーグループでICMPとSSHを許可してインスタンスを起動。pingとsshによるログインができることを確認。

ちなみにkeystonerc_adminやkeystonerc_demoをsourceコマンドで読み込むと、コマンドによるOpenStackの操作も可能です。

なお、VirtualBoxではNested Virtualizationできないので、Nova ComputeをKVMモードで動かすことができません。QEMUモードで動かすので、ほとんどのOSは素早く起動しない点に注意しましょう。

KVMで動かしたい場合は、LinuxにVagrantとLinux KVMをインストールして、VagrantのLibvirtプラグイン(vagrant plugin install vagrant-libvirtでインストール可能)とVirtIO用のVagrant Box ImageでCentOS7を起動してその中で実行しましょう。同じように動作するはずです。ちなみにvagrant pluginがうまく通らない場合は公式のVagrantインストーラーでインストールしてから実行すると良い感じです。

OpenStack環境の停止と再開

デプロイしたOpenStackをインストールした環境はVagrantならそのままサスペンドができます。vagrant resumeコマンドを実行したら元通り。

1.環境の一時停止

$ vagrant suspend

2.環境の再開

$ vagrant resume

QEMUじゃなくてKVMモードでComputeをデプロイするには?

VagrantのLibvirtプラグインを使って、Linux KVMにデプロイするような設定をすればいける!

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。