読者です 読者をやめる 読者になる 読者になる

らくがきちょう

なんとなく

ESXi6 Update2 に Cisco VIRL をインストールする

Cisco VIRL VMware

ESXi6 Update2 に Cisco VIRL をインストールする手順を記載しておきます。

目次

作業環境

Cisco 公式のインストールガイドは以下にあります。基本的に左記に記載されている手順を辿れば問題無いはずです。

今回は以下の環境で導入しています。

  • vCenter が導入されている
  • クラスタ構成になっている
  • (Web Sphere Client では無く)vSphere Client から作業している

VIRL には vCenter もクラスタも不要です。ESXi だけの環境でも導入可能です。その場合は手順やスクリーンショットがやや異なりますので、読み替えてください(大きく手順は変わらないはずです)。

ネットワークの作成

VIRL は 5 つのネットワークを利用します。

インターフェイス 名称 用途 備考
eth0 N/A VIRL 自体へのアクセス用 -
eth1 Flat Layer2 での外部接続用 必要に応じて Promiscuous Mode に設定する
eth2 Flat1 Layer2 での外部接続用 必要に応じて Promiscuous Mode に設定する
eth3 SNAT Layer3 での外部接続用 -
eth4 INT クラスタリグ用 -

まず、ESXi 上にネットワークを作成します。Inventory → Hosts and Clusters を選択します。

f:id:sig9:20161010005305p:plain

VIRL をインストールしたい ESXi ホストを選択 → Configuration → Add Networking を選択します。

f:id:sig9:20161010005314p:plain

そのまま Next をクリックします。

f:id:sig9:20161010005454p:plain

外部ネットワークと接続する際は、そのネットワークと vmnic を関連付けておきます。

f:id:sig9:20161010005503p:plain

ネットワークラベルを入力して、Next をクリックします。ここでは VIRL_Flat という名称を指定しました。

f:id:sig9:20161010005511p:plain

Finish をクリックしてネットワークの作成を完了します。

f:id:sig9:20161010005523p:plain

ここまでの手順を繰り返し、Flat、Flat1、SNAT、INT を作成しておきます。

Promiscuous Mode の設定

Layer2 で外部接続したいネットワークは Promiscuous Mode の設定をしておきます。Flat ネットワークの Properties をクリックします。

f:id:sig9:20161010011350p:plain

vSwitch が選択された状態で Edit をクリックします。

f:id:sig9:20161010011358p:plain

Security タブをクリックします。

f:id:sig9:20161010011408p:plain

Promiscuous Mode のドロップダウンリストをクリックし、Accept をクリックします。

f:id:sig9:20161010011416p:plain

これで Promiscuous Mode の設定は完了です。Flat1 ネットワークも同様に設定しておきます。

OVF ファイルでの仮想マシンデプロイ

OVF ファイルで VIRL の仮想マシンをデプロイします。Inventory → VMs and Templates をクリックします。

f:id:sig9:20161010012248p:plain

File → Deploy OVF Template をクリックします。

f:id:sig9:20161010012300p:plain

Browse をクリックして VIRL の OVF ファイルを選択し、Next をクリックします。

f:id:sig9:20161010012307p:plain

Next をクリックします。

f:id:sig9:20161010012316p:plain

仮想マシン名を指定 & デプロイ先のデータセンターを選択し、Next をクリックします。

f:id:sig9:20161010012323p:plain

デプロイ先のクラスタを選択し、Next をクリックします。

f:id:sig9:20161010012331p:plain

デプロイ先の ESXi ホストを選択し、Next をクリックします。

f:id:sig9:20161010012339p:plain

ディスクフォーマットを選択します。VIRL のマニュアルでは Thick Provision Lazy Zeroed を指定するように記載されています(私の場合は Thin Provision にしていますが… ここはお好みで)。

f:id:sig9:20161010012347p:plain

先に作成したネットワークをマッピングしていきます。

f:id:sig9:20161010012924p:plain

Finish をクリックしてデプロイを開始します。

f:id:sig9:20161010012932p:plain

デプロイが完了するまで待ちます…

f:id:sig9:20161010013006p:plain

f:id:sig9:20161010013124p:plain

しばらくするとデプロイが完了するはずです。

f:id:sig9:20161010013220p:plain

仮想マシンのリソース調整

VIRL を起動する前に必要に応じて仮想マシンの CPU やメモリ等のリソースを調整しておきます。デプロイした VIRL 仮想マシンを右クリックし、Edit Settings をクリックします。

f:id:sig9:20161010014110p:plain

(Web 版では無い)vSphere Client から設定変更している為、警告が表示されます。警告は無視して OK をクリックし、続行します。

f:id:sig9:20161010014123p:plain

VIRL をデプロイした直後は以下のようになっていました。vCPU は 4、メモリは 8GB が割り当てられていました。

f:id:sig9:20161010014129p:plain

今回は CPU 8、メモリ 32GB を割り当てました。

f:id:sig9:20161010014138p:plain

必須ではありませんが、仮想マシン用にメモリを予約する設定をしておくとパフォーマンスが改善しますので、ホストマシンのメモリ容量に余裕があれば設定しておきます。Resources → Memory を選択し、Reserve all guset memory にチェックを入れておきます。

f:id:sig9:20161010014147p:plain

仮想マシンの電源オン

これで事前の準備は完了です。Power → Power On をクリックし、仮想マシンの電源をオンにします。

f:id:sig9:20161010015816p:plain

仮想マシンを起動するホストの推奨が表示された場合は任意に調整します。

f:id:sig9:20161010015822p:plain

今後の作業の為にコンソールを開いておきます。Open Console をクリックします。

f:id:sig9:20161010020002p:plain

IP アドレスの確認

しばらくして VIRL の起動が完了するとコンソールにログイン画面が表示されるはずです。初期状態ではユーザ名「virl」、パスワード「VIRL」でログイン出来ます。virl ユーザでログインして作業を続けます。

f:id:sig9:20161010020021p:plain

現状の VIRL はベースが Ubuntu 14.04.4 LTS になっています。

virl@virl:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.4 LTS
Release:    14.04
Codename:   trusty

より新しい 16.x 系がリリースされている為、アップグレードを促すダイアログが表示されます。Don't Upgrade をクリックします。

f:id:sig9:20161010020029p:plain

アップグレードの拒否に関して確認が表示されるので OK をクリックします。

f:id:sig9:20161010020036p:plain

デスクトップ上に ip-address というショートカットがあるので、これをダブルクリックします。

f:id:sig9:20161010020045p:plain

すると VIRL に割り当てられている IP アドレスが表示されます。以降はこのアドレスに対して SSH やブラウザでアクセスして作業を継続します。

f:id:sig9:20161010020057p:plain

固定 IP アドレスへの変更

ここまでの手順で確認したアドレスに対して SSH アクセスし、virl ユーザでログインします(上述の通り、初期パスワードは「VIRL」です)。初期状態で VIRL が外部とアクセスする eth0 が(固定アドレスでは無く)DHCP 設定になっています。

$ sudo su
# cat /etc/network/interfaces
auto eth4
iface eth4 inet static
    address 172.16.10.250
    netmask 255.255.255.0
    mtu 1500
    post-up ip link set eth4 promisc on
auto lo
iface lo inet loopback
auto lo:1
iface lo:1 inet loopback
    address 127.0.1.1
    netmask 255.0.0.0
auto eth1
iface eth1 inet static
    address 172.16.1.254/24
    netmask 255.255.255.0
    post-up ip link set eth1 promisc on
auto eth2
iface eth2 inet static
    address 172.16.2.254/24
    netmask 255.255.255.0
    post-up ip link set eth2 promisc on
auto eth3
iface eth3 inet static
    address 172.16.3.254/24
    netmask 255.255.255.0
    post-up ip link set eth3 promisc on
auto eth0
iface eth0 inet dhcp
    dns-nameservers 8.8.8.8 8.8.4.4

今回は以下のように設定変更しました。DNS は元々、Google(8.8.8.8 と 8.8.4.4)が設定されていました。

項目
アドレス 10.100.4.238
ネットマスク /16
ゲートウェイ 10.100.254.254
DNS1 8.8.8.8
DNS2 8.8.4.4

具体的には eth0 部分を以下のように書き換えます。

auto eth0
iface eth0 inet static
    address 10.100.4.238/16
    netmask 255.255.0.0
    gateway 10.100.254.254
    dns-nameservers 8.8.8.8 8.8.4.4

設定ファイルの修正が完了したら、再起動します。

# sync ; sync ; sync ; reboot

KVM の確認

KVM が利用出来る状態になっているか、確認します。virl ユーザで SSH ログインし、kvm-ok を実行します。「KVM acceleration can be used」と表示されれば OK です。

$ sudo kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used

ライセンスのアクティベーション

次は VIRL のライセンス・アクティベーションを実施します。ブラウザで VIRL にアクセスします。https では無く、http でアクセスします。以下の画面が表示されたら User Workspace Management(以下、UWM)をクリックします。

f:id:sig9:20161010023936p:plain

UWM のログイン画面が表示されます。uwmadmin ユーザでログインします。初期状態でユーザ名は「uwmadmin」、パスワードは「password」です。

f:id:sig9:20161010023943p:plain

ログイン直後は以下のように表示されます。左側のナビゲーションから VIRL Server → Salt Configuration and Status をクリックします。

f:id:sig9:20161010023951p:plain

Reset keys and ID をクリックします。

f:id:sig9:20161010023959p:plain

初期状態では以下のように表示されます。

f:id:sig9:20161010024005p:plain

各々の欄には以下のように入力します。

Salt ID and domain

購入時にダウンロードしたライセンスファイルが「AB12CD35.virl.info.pem」なら、拡張子 .pem を除外して「AB12CD35.virl.info」と入力します。

Customer e-mail Address

ライセンスを購入した際に登録したメールアドレスを入力します。例えば「foobar@example.com」というメールアドレスでライセンス購入したのなら、「foobar@example.com」と入力します。

List of Cisco salt masters

以下のうち、どちらを入力します。今回は「1」の us 側を入力しました。

No.
1 us-1.virl.info, us-2.virl.info, us-3.virl.info, us-4.virl.info
2 eu-1.virl.info, eu-2.virl.info, eu-3.virl.info, eu-4.virl.info

Master sign public key

この項目については Cisco のマニュアルにも言及が無い為、初期値である「eft.pub」のままにしておきます。

Minion private RSA key in PEM format

ライセンスファイルの中身をそのままコピーします。ライセンスファイルの中身は以下のようになっているはずです(実際にはもっと長い文字列です)。

-----BEGIN RSA PRIVATE KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    (〜省略〜)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END RSA PRIVATE KEY-----

ライセンス情報入力例

入力例は以下の通りです。必要な値を入力したら下部にある Reset をクリックします。

f:id:sig9:20161010133952p:plain

問題無ければ以下のように Salt Status が表示されます。Last successful contact に日付が表示されていればアクティベーションに成功しています。もし、日付が上手く表示されていない場合はしばらくしてから画面中央の Check status now をクリックし、Last successful contact の状態が変わらないかを確認します。

f:id:sig9:20161010134813p:plain

VIRL 全体の設定

必要に応じて VIRL 全体の設定を調整します。VIRL Server → System Configuration から各種の設定を変更出来ます。基本的に変更する必要は無いと思いますが、「Usage report → Permit VIRL server to send usage information to Cisco?」のチェックは外しておいても良いと思います(お好みで…)。各設定の初期値は以下の通りです。

System

項目
Hostname virl
Domain Name virl.info
NTP Server pool.ntp.org
Ramdisk enabled uncheck
VNC enabled uncheck
VNC password letmein
Primary Ethernet port eth0
Use DHCP on primary Ethernet port? check
Static IP address 127.0.0.1
Primary port network 127.16.16.0
Primary port netmask 255.255.255.0
Primary port gateway 127.16.16.1
Primary DNS server IP address 8.8.8.8
Secondary DNS server IP address 8.8.4.4
Is your system behind a proxy? uncheck
HTTP/HTTPS Proxy http://ymbk.example.com:80/

Network

項目
Flat Network port eth1
Flat Network address 172.16.1.254/24
Flat Network address/mask 172.16.1.0/24
Flat Network netmask 255.255.255.0
Flat Network Gateway IP address 172.16.1.1
Flat Address pool start address 172.16.1.50
Flat Address pool end address 172.16.1.253
Flat primary DNS server IP address 8.8.8.8
Flat secondary DNS server IP address 8.8.4.4
項目
2nd Flat Network enabled check
2nd Flat Network port eth2
2nd Flat Network address 172.16.2.254/24
2nd Flat Network address/mask 172.16.2.0/24
2nd Flat Network netmask 255.255.255.0
2nd Flat Network Gateway IP address 172.16.2.1
2nd Flat Address pool start address 172.16.2.50
2nd Flat Address pool end address 172.16.2.253
2nd Flat primary DNS server IP address 8.8.8.8
2nd Flat secondary DNS server IP address 8.8.4.4
項目
Snat Network port eth3
Snat Network address 172.16.3.254/24
Snat Network address/mask 172.16.3.0/24
Snat Network netmask 255.255.255.0
Snat Network Gateway IP address 172.16.3.1
Snat Address pool start address 172.16.3.50
Snat Address pool end address 172.16.3.253
Snat primary DNS server IP address 8.8.8.8
Snat secondary DNS server IP address 8.8.4.4
項目
Control Network port eth4

VIRL Services

項目
VIRL Apache server port 80
Start host-granted TCP port 10000
End host-granted TCP port 17000
First VM Serial Console TCP port 17000
Last VM Serial Console TCP port 18000
VIRL Web Services port 19399
UWM port 19400
AutoNetkit webserver port 19401
Live Visualization webserver port 19402
UWM web-ssh port 19403
Nova websocket serial port 19406
Nova websocket vnc port 19407
Docker Registry port 19397

Infrastructure

項目
OpenStack password password
MySQL password password
Guest account present? check

Resources

項目
RAM overcommit value 2
Reset RAM overcommit uncheck
vCPU overcommit value 3
Reset vCPU overcommit uncheck
Download proxy  
Download proxy authentication  
Download proxy exceptions  
Allow insecure Docker registry uncheck

Usage report

項目
Permit VIRL server to send usage information to Cisco? check

OpenVPN

項目
OpenVPN server on/off uncheck
Use TCP port uncheck
TCP port number 443
UDP port number 1194
Client IP range start 172.16.1.20
Client IP range end 172.16.1.39
(Advanced) Certificate Authority certificate  
(Advanced) server certificate  

VM Maestro のインストール

ここまでで VIRL サーバ側の設定は完了です。次は、検証したいトポロジーを作成したり、シミュレーションを開始する為のツール「VM Maestro」をクライアント側にインストールします。再度、VIRL のトップ画面にアクセスし、VM Maestro Clients & Python Libraries をクリックします。

f:id:sig9:20161010142803p:plain

Apache の Index 画面に各 OS 毎のバイナリが表示されます。自分が利用している OS に合わせたバイナリをダウンロードします。私の環境は macOS なので VMMaestro-dev-1.2.7-434.dmg をダウンロードしました。

f:id:sig9:20161010143223p:plain

macOS の場合はダウンロードした .dmg ファイルをダブルクリックしてマウントし、VMMaestro-1.2.7-434.app をアプリケーションディレクトリにコピーすれば OK です。

VM Maestro を起動する

アプリケーションディレクトリから VM Maestro を起動します。セキュリティ設定によっては「開発元が未確認のため開けません」と表示され、VM Maestro を開始出来ません。

f:id:sig9:20161010170700p:plain

この場合は VM Maestro のアイコンを右クリックし、Control キーを押しながら「開く」をクリックします。

f:id:sig9:20161010170707p:plain

スプラッシュスクリーンが表示され、VM Maestro が起動します。

f:id:sig9:20161010170713p:plain

ライセンス同意画面が表示されます。Remember my decision にチェックを入れた状態で OK をクリックします。

f:id:sig9:20161010172643p:plain

ユーザ体験を改善する為に Cisco へのフィードバックに関して表示されます。ここは OK をクリックして先に進みます。

f:id:sig9:20161010172655p:plain

VIRL サーバへのログイン画面が表示されます。初期値では接続先サーバが localhost になっている為、「x 4 web services are unverified.」と表示され、ログインが出来ません。

f:id:sig9:20161010172702p:plain

接続先サーバに VIRL の IP アドレスを入力します。Username と Password は、どちらも「guest」です(初期状態で guset / guest が入力されているはずです)。

f:id:sig9:20161010172709p:plain

VM Maestro の設定

VM Maestro の画面が表示されます。最初に右下にある「guest」というユーザ名をクリックします。

f:id:sig9:20161010205339p:plain

Web Services という画面が表示されます。全て緑色表示になっていることを確認します。問題無ければ OK をクリックします。

f:id:sig9:20161010205346p:plain

次は File → Preferences → Node Subtypes → Restore Defaults をクリックします。

f:id:sig9:20161010205355p:plain

OK をクリックします。

f:id:sig9:20161010205402p:plain

これで VM Maestro の設定も完了です。後は VM Maestro 上でトポロジーを作成し、シミュレーションを開始して検証を進めていきます。