これから CCIE 取得を目指しています。
まだ CCENTCCNP R&S, ネスペ 認定ですが。。。
Don’t complicate things.
とあるように、自分が何やってんのかわかっている場合を除いて余計なことはすんなよと書いてある。
Step 1: Get Started
ちなみに VirtualBox には対応していない。
Vt-x/AMDv が有効になっていることを確認すること。
つまり Vt-x/AMDv の仮想化が有効になっていることが必須です。
Step 3: Create and Configure Virtual Networks
5 つネットワークを作成する。
VMnet8 は NAT で VIRL 仮想マシンにホスト PC を通じたインターネット接続を提供する。
その他 4 つのネットワークは VIRL に外部 L2, および L3 のコネクティビティを提供する。
これらは
Flat
Flat1
SNAT
クラスタリング INT
すでに VMnet1 が存在していたらナンバリングを1つずつずらす。
いずれも ホストオンリーネットワーク とする。
VMnet1
172.16.1.0
255.255.255.0
ローカル DHCP サービスを使用して IP アドレスを VM に配布するのチェックが外れていることを確認する。
VMnet2 172.16.2.0/24
VMnet3 172.16.3.0/24
VMnet4 172.16.10.0/24
最終的に以下のような感じになればいい。
Step 4: Deploy the VIRL OVA
いよいよ Cisco VIRL の OVA (Open Virtualization Format Archive) をインポートする。
事前に VIRL の OVA ファイルとライセンスファイル *.pem ファイルをダウンロードしておくこと。
https://virl.mediuscorp.com/my-account/
ちなみに OVA はアニメの Original Video Animation のことではないので注意。
OVA といいつつハイパーバイザーによってインポートできないことが多々にしてあり、ぜんぜんオープンな気がしないんだよなあ。
virl.1.2.64.pc.ova
VIRL 自身の起動やらなんやらの読み込みは速いことに越したことはないので、新しい仮想マシンのストレージパスには
容量が許すなら SSD 領域自身を指定することを強くおすすめする。
インポートが終わるまで適当に時間を潰す。
インポート完了、やったね。
VIRL を起動したい気持ちを抑えて設定を確認・調整する。
最初のネットワークアダプタは NAT になっているのを確認したらそのままそっとしておく。
ネットワークアダプタ2~5はインポート直後はブリッジになっているので、さっき作った VMnet1~4 にそれぞれ対応付ける。
次に Intel VT-x/EPT の仮想化が有効になっていることを確認する。
そして最後はCPUとメモリ。
潤沢にあればあるほどいい。
最低限のスペックは 2 vCPU、 4GB だが、4 vCPU, 8GB かそれ以上のリソースを割り当てることが要求されている。
VMware Workstation の推奨メモリ容量は無視しろと書いてある。
特に他に立ち上げる VM も今のところ考えていないので私は 8vCPU, 16GB の割当てをおこなった。
Step 5: Prepare VIRL for Activation
VM を起動して ID: virl PASS: VIRL でログイン。
ログイン後に表示される画面。バイオハザードマークが禍々しい。
おもむろに xterm を立ち上げる。
以下のコマンドを入力して出力が以下のように出ればひとまずここまでの手順は OK 。
KVM (Kernel Based Virtual Machine) のアクセラレーション利用可能の表示が出なければ何かがおかしいので手順に沿ってやったか見直せと書いてある。
virl@virl:~$ sudo kvm-ok INFO: /dev/kvm exists KVM acceleration can be used
次にインターネットへの接続性を確認する。
VIRL は定期的に Cisco の SaltStack サーバーと通信をしてアクティベーションの妥当性を確認する必要がある。
ping -c 4 www.cisco.com curl http://curltools.com/get-ip wget --spider --no-verbose http://www.google.com
VIRL のインストラクションにはないが、ここでひとつチューニングをしておく。
VIRL の割当メモリを使い果たすまで Swap を使うなという設定を入れる。
別にすぐ VIRL を割当メモリ目いっぱいまで酷使するわけでなければこの手順はすっ飛ばしてかまわない。
公式の手順にも載ってないし。
virl@virl:~$ sudo -i root@virl:~# cat /proc/sys/vm/swappiness 60
キーボードが英字配列になっていることに注意をする。
イコールは日本語キーボードの場合チルダ ~
のキーを Shift 無しでタイプした時に出てくる。
また、保存するときのコロン :
はセミコロン ;
のキーを Shift キー押しながらタイプすると入力できる。
また、 vi は vim でないことに注意する。
とても使いづらい。
root@virl:~# vi /etc/sysctl.conf
vm.swappiness = 1
root@virl:~# sysctl -p net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.all.rp_filter = 0 net.ipv4.ip_forward = 1 vm.swappiness = 1 root@virl:~# cat /proc/sys/vm/swappiness 1 root@virl:~# exit
中身をちょっと見るとわかるが、 Ubuntu Linux 14.04 LTS (Trusty) がベースとなっており、 OpenStack がインストールされているようだ。
なるほどなあ。
virl@virl:~$ cat /etc/debian_version jessie/sid virl@virl:~$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04.4 LTS"
Step 6: Activate VIRL
VIRL の IP アドレスを調べてホスト側のブラウザからその IP にアクセスする。
Web 管理画面が見えるはず。
圧倒的 Bootstrap 感。
User Workspace Management を選択し、以下のログイン情報を入力する。
ID: uwmadmin
PASS: password
各フィールドを埋める。
Salt ID and domain には pem ファイルの拡張子抜きのファイル名を、
Customer email Address は読んで字のごとく、
List of Cisco salt masters は地理的に近いものを適当に選んで突っ込む。
正直日本の場合 us のほうでとくに問題はないと思われる。
us-1.virl.info, us-2.virl.info, us-3.virl.info, us-4.virl.info
eu-1.virl.info, eu-2.virl.info, eu-3.virl.info, eu-4.virl.info
Master sign public key はドントタッチミー。
Minion private RSA key in PEM format には pem ファイルの中身をまんまコピペする。
そして Reset ボタンクリック。
どこか 1 つでも Salt サーバーとライセンスの検証ができていれば OK 。
Step 7: Customize the VIRL Configuration (Optional)
特筆して変更するところはないが、 16GB より多くのメモリを搭載しているなら RAMdisk オプションが使えるようだ。
インメモリディスクを使用することで、シミュレーションのスタートアップタイムを減らせるらしい。
速いに越したことはないのでここでさらにメモリを 16GB -> 24GB にして RAMdisk をオンにした。
24 * 1024 = 24576 MB
まずメンテナンスモードを有効にしろとある。
メンテナンスモードを有効にする。
そして Apply 。
オールグリーンになったらシステムリブートしろやと出てくるので、おとなしく再起動する。
WebUI 上の Reboot ボタンを押すだけで VIRL 仮想マシンをリブートできるみたい。
素晴らしいな・・・。
リブート終わったら Disable maintenance mode にし、 OK ボタンをクリック
Step 8: Validate the VIRL Installation
VIRL が正しくインストール・設定できたことを以下のコマンドで検証せよとある。
OpenStack の Neutron ネットワーキングモジュールの動作確認ですね。
xterm をおもむろに立ち上げる。
alive のところが全部スマイリーマーク :-)
になっていれば OK 。
virl@virl:~$ neutron agent-list +--------------------------------------+--------------------+------+-------+----------------+---------------------------+ | id | agent_type | host | alive | admin_state_up | binary | +--------------------------------------+--------------------+------+-------+----------------+---------------------------+ | 73edf60e-2951-4dfb-8ce7-a2fa58f9199a | DHCP agent | virl | :-) | True | neutron-dhcp-agent | | be125ca6-3381-4e8a-95d1-6de54bd99788 | Linux bridge agent | virl | :-) | True | neutron-linuxbridge-agent | | c3195bd1-f054-4a0b-85ae-3935ecbe260f | Metadata agent | virl | :-) | True | neutron-metadata-agent | | defeaa84-8b4c-4c5c-b101-b1555520a710 | L3 agent | virl | :-) | True | neutron-l3-agent | +--------------------------------------+--------------------+------+-------+----------------+---------------------------+
そして VIRL STD と UWM サービスがすべて listening ステートになっていることを確認する。
インメモリ KVS である Redis も内部で動いていることが見て取れる。
virl@virl:~$ sudo virl_health_status | grep listening ... (snip) virl-vis-webserver listening on port 19402 ank-cisco-webserver listening on port 19401 STD server on url http://localhost:19399 is listening, server version 0.10.27.8 UWM server on url http://localhost:19400 is listening, server version 0.10.27.8 Webmux server on url http://localhost:19403 is listening Redis server on 127.0.0.1:6379 is listening
Display the VIRL license configuration
以下の点を確認する。
‘hostid’ が pem ファイルのファイル名部分と同じになっていること
‘product-capacity’ がライセンス上で許可されているノード数(私の場合は 30 )になっていること
‘product-expires’ ‘7’ となっていること。(7 日で切れるということ。切れたらまたソルトサーバーにバリデートしにいく)
virl@virl:~$ sudo virl_health_status | grep -A 4 -e hostid -e product ... (snip) hostid : ********.virl***.info product-license : [u'us-1.virl.info', u'us-2.virl.info', u'us-3.virl.info', u'us-4.virl.info'] product-capacity : 30 product-expires : 7 features : [u'Cariden.MATE.import', u'Cariden.MATE.export'] product-usage : 0 uwm-url : http://192.168.200.128:19400/admin/salt/
Step 8: Install and Configure VM Maestro
ネットワークのトポロジを作成、シミュレーションするツール、 VM Maestro をインストールする。
Maestro とは芸術家、専門家、音楽の指揮者等の意味があるようだ。
というか、 VM Maestro のスプラッシュに指揮者のシルエットが出るようになっている。 最近はスプラッシュが出なくなったようだ。
ブラウザで VIRL Server の WebUI にアクセスして、 VM Maestro クライアントをインストールするプラットフォームに応じたバイナリをダウンロードする。
ここでは Windows x64 アーキテクチャと仮定する(たぶんそんなに変わらない)。
ダウンロードしたやつを普通にインストール。
これもベースは Eclipse となっている。
オープンソース活用しまくりだな。
VM Maestro を立ち上げてライセンスアグリーメントに同意して、匿名のレポート送るか聞かれるので、チェックを入れてやめろとしておく。
文字化けしてるし。
こいつはクライアントなので、先程 VMware Workstation 上にインストールした VIRL サーバーなしには生きていけない。
接続先を VIRL サーバーに変えてやる必要がある。
ID, パスワードは以下でよい、 IP アドレスはさっき調べた VIRL サーバーの IP アドレスを入力。
ID: guest
PASS: guest
そしてサービスへの接続チェックがオールグリーンになれば OK 。
なんか Eclipse の Secure Storage にマスターパスワードが保存されたらしいので、リカバリ用の秘密の質問を入力するか聞かれるのでとりあえず Yes としておいた。
最後にやること
以下の手順で Node Subtype の一覧をデフォルトにリセットして、 VIRL ホストで利用可能な node sub-types をすべて再取得する必要がある。
File -> Preferences を開く。
まずは Restore Defaults でリセットする。
そして VIRL サーバーからサブタイプの一覧を取得する。
シミュレーションをちょっとやってみよう
RAMdisk を enable にした状態。
8 vCPU
24 GB
すべてのノードが起動するまでに要した時間はおよそ 1 分程度。
(INFO) [Sep/25/2016 13:43:37] simulation "topology-97p7fh": nodes can start (INFO) [Sep/25/2016 13:43:43] Starting node "~mgmt-lxc" (INFO) [Sep/25/2016 13:43:44] Starting node "iosv-1" (INFO) [Sep/25/2016 13:43:49] Starting node "iosv-2" (INFO) [Sep/25/2016 13:43:54] Starting node "iosv-3" (INFO) [Sep/25/2016 13:44:00] Starting node "iosvl2-1" (INFO) [Sep/25/2016 13:44:07] Starting node "server-1" (INFO) [Sep/25/2016 13:44:07] Node "iosv-1" state changed from ABSENT to ACTIVE (INFO) [Sep/25/2016 13:44:07] Node "iosv-2" state changed from ABSENT to ACTIVE (INFO) [Sep/25/2016 13:44:07] Node "iosv-3" state changed from ABSENT to ACTIVE (INFO) [Sep/25/2016 13:44:07] Node "iosvl2-1" state changed from ABSENT to BUILDING (INFO) [Sep/25/2016 13:44:07] Node "~mgmt-lxc" state changed from ABSENT to ACTIVE (INFO) [Sep/25/2016 13:44:12] Starting node "server-2" (INFO) [Sep/25/2016 13:44:17] Starting node "server-3" (INFO) [Sep/25/2016 13:44:36] Node "iosvl2-1" state changed from BUILDING to ACTIVE (INFO) [Sep/25/2016 13:44:36] Node "server-1" state changed from ABSENT to ACTIVE (INFO) [Sep/25/2016 13:44:36] Node "server-2" state changed from ABSENT to ACTIVE (INFO) [Sep/25/2016 13:44:36] Node "server-3" state changed from ABSENT to ACTIVE
ルーター右クリックでコンソールポートに接続できる。
10.1.0.0/24
のマルチアクセスネットワークを想定して IP アドレスをルーターに設定して ping を打ってみたところ。
お疲れ様でした。
Tips
あとの普段のシミュレーション自体は VIRL の仮想マシンが立ち上がっていればよいので、とくに Linux にログインする必要もなければ、 WebUI にログインする必要もない。