PaaS基盤ソフトウェアとして広いシェアを持つCloud Foundry。その商用ディストリビューションの1つであるPivotal Cloud Foudryは商用サービスでも多く使用されている。
Cloud Foundryは多くのコンポーネントから構成されており、IaaSとして大規模な基盤を要する。今回は、オールインワンの1台で構成できるPCF Dev (Pivotal Cloud Foundry Develop)で自宅で簡単にCloud Foundryを構築する。
- PCF Devシステム要件
- 自宅サーバー構成
- PCF Devをインストールする
- Ubuntu・VirtualBoxをインストールする
- PCF Devをインストールする
- PCF Devをインストールする
- トラブルシューティング
- まとめ
PCF Devシステム要件
PCF Devのシステム要件はこちら
PCFの要件はVirtualBox 5.0以上。土台のマシンはWindows, Mac OS X, Linuxのいずれでも可能。
PCF Dev uses VirtualBox version 5.0 and above as its virtualizer.
システム要件の概要は以下の通り。PCF Dev, Pivotal Cloud Foundry, Cloud FoundryのHDD容量、メモリー容量が並べられている。(Pivotal Docsから引用)
注目すべきポイント(メリット)はメモリーの必要数。CPUは快適さを我慢すればよく、HDDは増やせばいい。しかし、メモリーはないとそもそも起動しない。そして、メモリーは増やせる上限がサーバー(マザーボード)に依存し、大容量メモリーのマシンはそれなりの価格がする。メモリー3GBであれば、デスクトップPC、ノートPCでも十分に搭載可能である。
index | PCF Dev | PCF | CF |
---|---|---|---|
Space required | 20 GB | 100GB+ | 50GB+ |
Memory required | 3 GB | 50GB+ | variable |
(参考) PCF Dev Overview | VMware Tanzu Docs
自宅サーバー構成
友人から譲り受けた古いサーバーでESXiを使用している。ボードの関係でCPUはCore 2 Quad。
物理サーバー
仮想サーバー Ubuntu16.04.1 (Linux)
- CPU:1CPU2コア
- Memory:3GB
- DISK:64GB
- Virtual Box 5.1
PCF Devをインストールする
PCF DevをLinuxにインストールする手順の目次は以下の通り。
- Prerequisites
- VirtualBox
- Cloud Foundry Command Line Interface
- Install PCF Dev
- Stop PCF Dev
- Uninstall PCF Dev
(参考) Installing PCF Dev on Linux | VMware Tanzu Docs
Ubuntu・VirtualBoxをインストールする
LinuxはPCFでも使われているUbuntuとする。VirtualBoxが動作するLinuxであればどれでもよい。
Ubuntuはこちらからダウンロードできる。
今回はLong Term SupportのUbuntu Server 16.04.1 LTSを使用する。
VirtualBoxはこちらから。
Linux_Downloads – Oracle VM VirtualBox
先に記載のvSphereにLinuxのVMを作成し、Ubuntuのisoをマウントしてインストールする。 ※社内NWなどProxy環境の場合はProxyサーバーの指定が必要
(ここでは詳細手順割愛)
インストール時になんとなくVMにチェックを入れてvirbr0インタフェースが現れ戸惑った。 ここではデフォルトのまま(standard system utilitiesのみ)にする。
UbuntuのIPアドレスを設定する
初期セットアップとしてIPアドレスを設定する。(コンソールから作業)以下の通りDHCP設定をコメントアウトして、固定IPアドレスを設定する。
$ sudo -s [user password] // describe with root account from here # vi /etc/network/interfaces "/etc/network/interfaces" 21L, 493C # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto ens160 #iface ens160 inet dhcp //Comment Out DHCP iface ens160 inet static // Add Static Config as below; address 192.168.1.55 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.5 dns-nameserver 192.168.1.77 dns-nameserver 8.8.8.8
SSH接続許可設定
以下のコマンドでSSHサーバーをインストールする。これによりTeraTermなどでSSH接続できる。
# apt-get install openssh-server
Ubuntu16.04.1にVirtualBoxをインストールする。
基本的にオフィシャルの手順でインストールできる。
リポジトリを追加する。
/etc/apt/sources.list
に以下の行を追加する。
# vi /etc/apt/sources.list <Last Row> ## Add for VirtualBox deb http://download.virtualbox.org/virtualbox/debian xenial contrib
ここから失敗したため除外
Oracleの公開鍵を取得する。OSに合わせて以下のコマンドを実行する。
for Debian 8 ("Jessie") / Ubuntu 16.04 ("Xenial") and later
# apt-key add oracle_vbox_2016.asc
for older distributions.
# apt-key add oracle_vbox.asc
root@ubuntu-pcf:~# apt-key add oracle_vbox_2016.ascgpg: can't open `oracle_vbox_2016.asc': No such file or directory root@ubuntu-pcf:~# apt-key add oracle_vbox_2016.asc gpg: can't open `oracle_vbox_2016.asc': No such file or directory
次のコマンドでインターネットから明示的に取得して公開鍵を追加する。上記の通りOSに合わせて_2016は調整する。
root@ubuntu-pcf:~# wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add - OK
パッケージをアップデートしてVirtualBoxをインストールする。
root@ubuntu-pcf:~# apt-get update 0% [Working] Get:1 http://download.virtualbox.org/virtualbox/debian xenial InRelease [7,894 B] <snip> The following packages will be upgraded: libc6 1 upgraded, 240 newly installed, 0 to remove and 61 not upgraded. Need to get 149 MB of archives. After this operation, 591 MB of additional disk space will be used. Do you want to continue? [Y/n] Y <about 5 minutes takes from here> Processing triggers for dbus (1.10.6-1ubuntu3.1) ... root@ubuntu-pcf:~#
root@ubuntu-pcf:~# apt-get install virtualbox Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: diffstat gdbserver libaacs0 libapt-pkg-perl libasprintf-dev libbabeltrace-ctf1 libbabeltrace1 libbdplus0 libc6-dbg libexpat1:i386 libffi6:i386 libglib2.0-0:i386 libnm-util2 libpam-systemd:i386 libpolkit-agent-1-0:i386 libpolkit-backend-1-0:i386 libpolkit-gobject-1-0:i386 librarian0 libspeexdsp1 libsynctex1 libwebrtc-audio-processing-0 os-prober policykit-1:i386 rtkit t1utils xvt Use 'sudo apt autoremove' to remove them. <snip> DKMS: install completed. Setting up virtualbox (5.0.24-dfsg-0ubuntu1.16.04.1) ...
インストール完了。
PCF Devをインストールする
やっと本題のPCF Devのインストール。
PCF Devをインストールする
以下の流れでPCF Devをインストールする。
- cfCLIをインストールする
- PCF Devをダウンロードする
- PCF Dev Pluginをインストールする
cfCLIをインストールする
cfCLI (Cloud Foundry Command Line Interface)をGithubからダウンロードしてインストールする。PCFの設定・アプリデプロイはcfCLIを通して実行する。
インストール手順はGithubに記載の通り。
# ...first add the Cloud Foundry Foundation public key and package repository to your system $ wget -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add - $ echo "deb http://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list # ...then, update your local package index, then finally install the cf CLI $ sudo apt-get update $ sudo apt-get install cf-cli
cf -vでバージョンが表示されればcfCLIのインストールは完了。
root@ubuntu-pcf:~# cf -v cf version 6.22.2+a95e24c-2016-10-27
PCF Devをダウンロードする
まず、Pivotal NetworksからPCF Devをダウンロードする。
なお、Pivotalの製品は基本的にライセンス(有償)が必要になる。しかし、オープンソースとして公開されているものについてはOSSライセンス(無償)、Beta版についてはEULA(無償)で使用できる。ライセンス詳細はこちら。
PCF Devダウンロードはこちらから。Pivotal Networkへのユーザ登録が必要。(無料・ライセンス不要)
Download PCF Dev — VMware Tanzu Network
今回はLinux版をダウンロードする。
ダウンロードしたPCF Devのzipファイルを、TeraTermのSSH SCPなどでサーバに送信する。
サーバーにunzipがインストールされていない場合はapt install unzip
でインストールする。
以下の通り解凍する。バージョンはダウンロードしたものに合わせて要修正。
root@ubuntu-pcf:~# unzip pcfdev-v0.22.0+PCF1.8.2-linux.zip Archive: pcfdev-v0.22.0+PCF1.8.2-linux.zip inflating: pcfdev-v0.22.0+PCF1.8.2-linux root@ubuntu-pcf:~# ls -l total 16264 -rwxr-xr-x 1 root root 12566384 Nov 18 22:57 pcfdev-v0.22.0+PCF1.8.2-linux -rw-r--r-- 1 ubuntu ubuntu 4085585 Nov 24 23:50 pcfdev-v0.22.0+PCF1.8.2-linux.zip root@ubuntu-pcf:~#
PCF Devプラグインをインストールする。
以下のコマンドでPCF Devプラグインをインストールする。
root@ubuntu-pcf:~# ./pcfdev-v0.22.0+PCF1.8.2-linux Plugin successfully installed. Current version: 0.22.0. For more info run: cf dev help
インストールが完了したら、PCF Devを起動する。このとき、空きメモリーが3072MBより少ないと警告が表示される。PCF Devシステム要件が3GBだったのでUbuntuを3GBで作成したが、OS部分を考慮していなかった...Linuxサーバ自体はメモリー4GBで作るのが適切だと考えられる。
root@ubuntu-pcf:~# cf dev start Less than 3072 MB of free memory detected, continue (y/N): > y Please sign in with your Pivotal Network account. Need an account? Join Pivotal Network: https://network.pivotal.io Email> <Enter Your Pivotal Networks Account> Password> <Enter Your Pivotal Networks Password> BETA SOFTWARE END USER LICENSE AGREEMENT <Documents> [y] Accept [n] Do Not Accept y Downloading VM... <It takes about 20 minutes> Progress: |====================>| 100% VM downloaded. Allocating 3072 MB out of 3008 MB total system memory (2815 MB free). Importing VM... Starting VM... FAILED Error: failed to start VM: failed to execute 'VBoxManage startvm pcfdev-v0.389.0 --type headless': exit status 1: VBoxManage: error: VT-x is not available (VERR_VMX_NO_VMX) VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole Waiting for VM "pcfdev-v0.389.0" to power on... .
VirtualBoxのエラーで起動に失敗している...エラーログから調査する。
トラブルシューティング
状態を確認しながら、トラブルシューティングする。
FAILED
Error: failed to start VM: failed to execute 'VBoxManage startvm pcfdev-v0.389.0 --type headless': exit status 1: VBoxManage: error: VT-x is not available (VERR_VMX_NO_VMX)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole
Waiting for VM "pcfdev-v0.389.0" to power on...
VBoxManage: error: VT-x is not available (VERR_VMX_NO_VMX)
VT-x(CPU仮想化機構)が動作していないというように見える。しかし、前述の通り私のUbuntuはvSphere上の仮想マシンだ。仮想化できている。
こちらを参考に、以下の通り動作確認してみた。
root@ubuntu-pcf:~# VBoxManage list vms "pcfdev-v0.389.0" {9ba0d031-fd10-4260-8f83-698432259210} root@ubuntu-pcf:~# VBoxManage modifyvm 9ba0d031-fd10-4260-8f83-698432259210 --ioapic off root@ubuntu-pcf:~# VBoxManage startvm 9ba0d031-fd10-4260-8f83-698432259210 --type separate Waiting for VM "9ba0d031-fd10-4260-8f83-698432259210" to power on... VM "9ba0d031-fd10-4260-8f83-698432259210" has been successfully started.
しかし、最終的にcf dev start
コマンドで起動を試みると同様に失敗する。
ESXiのネストのための設定
冷静に考えたら、ゲストOSのUbuntu(Linux)ではVT-xが動作しているか分からなかった。今回はネスト(Nested)構成になるため、追加設定が必要だった。ゲストOSのVT-xを有効化してサービスを再起動する。
# vi /etc/vmware/config libdir = "/usr/lib/vmware" authd.proxy.nfc = "vmware-hostd:ha-nfc" authd.proxy.nfcssl = "vmware-hostd:ha-nfcssl" authd.proxy.vpxa-nfcssl = "vmware-vpxa:vpxa-nfcssl" authd.proxy.vpxa-nfc = "vmware-vpxa:vpxa-nfc" authd.fullpath = "/sbin/authd" vhv.enable = TRUE // add # /etc/init.d/hostd restart watchdog-hostd: Terminating watchdog process with PID 98940 hostd stopped. Ramdisk 'hostd' with estimated size of 127MB already exists hostd started. ~ #
vSphereのゲストOSはデフォルトではVT-xが有効になっていない。 仮想マシンをpoweroffし、設定を変更する。「オプション」タブの「CPU/MMU 仮想化」はデフォルトで”自動”になっているところを”Intel VT-x/AMD-vを命令セット仮想化に使用し、ソフトウェアをMMU仮想化に使用”を選択する。 仮想マシンpoweroff > 設定変更 > 仮想マシンパワーオン の順で作業する。
しかし、パワーオンしようとした際にエラーが発生した。失敗...
仮想 msg.intel.hvhwmmu には msg.intel.hvhwmmu の優先モードが必要です。自動に戻しています。
仮想マシンが起動できない。サマリ画面ではこのようなエラーが表示されている。
Virtualized Intel VT-x/EPT is not supported on this platform.
仮想 msg.intel.hvhwmmu を使わずに続行しますか?
CPU(Core 2 Quad)がゲスト仮想化に対応していない
原因が分からず調査していたら以下のディスカッションを発見。
こちらによると、Core 2 QuadではNested VMをサポートしていない...
まとめ
自宅LinuxでPCF Devをインストールした。ただし、私の環境のCore 2 QuadではネストVMをサポートしておらず、VirtualBox上のPCF Devは起動しなかった...
(認識違い等ありましたらご指摘ください。)