てくなべ (tekunabe)

ansible / network automation / 学習メモ

ネットワーク機器のコマンド結果をパースする parse_cli_textfsm フィルタープラグインを試す (Ansible 2.4新機能)

f:id:akira6592:20170923214714p:plain

Ansible 2.4 で Ansible でネットワーク機器のコマンド結果をパースするための parse_cli_textfsm というフィルタープラグインが搭載されました。

http://docs.ansible.com/ansible/latest/playbooks_filters.html#network-cli-filters

今回は簡単な例で試してみることのします。

■ 1. 仕組み

parse_cli_textfsm は、テンプレートに従ってコマンド結果をパースする TextFSM というライブラリを呼び出します。 そのため、別途テンプレートファイルを用意する必要があります。

ありがたいことに、networktocodeのリポジトリにisoの show ip ospf neighbor や、junos show interfaces 等に対応した計180近い(2017/09/23現在)テンプレートファイルがあります。 今回はこれらを利用させていただきます。

github.com

■ 2. 環境の準備

TextFSM のインストール

前述したように、 parse_cli_textfsm フィルタープラグインでは、内部で TextFSM を利用しているので、あらかじめインストールします。

sudo pip install textfsm

テンプレートファイルのダウンロード

Network to Code のリポジトリからテンプレートファイル一式をダウンロードします。 ひとまず、playbookを作成する予定のディレクトリで git clone します。

git clone https://github.com/networktocode/ntc-templates.git

もちろん、利用したいテンプレートファイルが決まっているなら個別にダウンロードしてもOKです。

■ 3. Playbook の準備

---
- hosts: ios
  gather_facts: no
  connection: local

  tasks:
    - name: show int status
      ios_command:
        commands:
          - show int status
        provider: "{{ cli }}"
      register: result

    - name: DEBUG
      debug:
        msg: "{{ result.stdout[0] | parse_cli_textfsm('./ntc-templates/templates/cisco_ios_show_interfaces_status.template') }}"

  vars:
    cli: 
      host: "{{ inventory_hostname }}" 
      username: "{{ ansible_user }}"
      password: "{{ ansible_password }}"
      authorize: true
      auth_pass: "{{ cisco_enable_secret }}"

■ 4. 実行

先ほど作成した playbook を実行します。

[vagrant@centos7 vagrant]$ ansible-playbook ios_parse.yml

PLAY [ios] ************************************************************************************************************************************************************************************

TASK [show int status] ****************************************************************************************************************************************************************************
ok: [192.168.1.254]

TASK [DEBUG] **********************************************************************************************************************************************************************************
ok: [192.168.1.254] => {
    "msg": [
        {
            "DUPLEX": "auto",
            "NAME": "",
            "PORT": "Gi1/0/1",
            "SPEED": "auto",
            "STATUS": "notconnect",
            "TYPE": "10/100/1000BaseTX",
            "VLAN": "1"
        },
        {
            "DUPLEX": "auto",
            "NAME": "",
            "PORT": "Gi1/0/2",
            "SPEED": "auto",
            "STATUS": "notconnect",
            "TYPE": "10/100/1000BaseTX",
            "VLAN": "1"
        },
        ~(略)~
        {
            "DUPLEX": "a-full",
            "NAME": "management",
            "PORT": "Gi1/0/24",
            "SPEED": "a-1000",
            "STATUS": "connected",
            "TYPE": "10/100/1000BaseTX",
            "VLAN": "192"
        }
    ]
}

PLAY RECAP ************************************************************************************************************************************************************************************
192.168.1.254               : ok=2    changed=0    unreachable=0    failed=0

無事に show int status の結果がパースされました。

■ 5. まとめ

ネットワーク機器のshowコマンドの結果は、人が目視する分には問題ないのですが、特定の値をプログラムに判断させるといったことが難しいです。 このようにパースする仕組みを利用すると、 assert モジュールなど併用して「Gi1/0/10 の VLAN が 99 であれば正常とする」といった簡単なテストもしやすくなるのではないでしょうか。

Ansible Meetup in Tokyo 2017.09 に参加とLTしてきました

2017/09/01 に Ansible Meetup in Tokyo 2017.09 が開催され、参加とLT登壇してきました。

ansible-users.connpass.com

テーマは「ネットワークをAnsibleで自動化せよ!」

簡単ですが、個人的な気付きやメモです。

■「ここまでできるぞ F5! Powered by Ansible」 F5 Networks テレンスさん/岡本さん

  • Ansible 2.4 では F5 モジュールが結構な数に増えるようです。 github.com
  • いろいろ試すことができるsuper-netops-containerというDocker環境があるようです。 github.com

■「Ansibleで挑むInfrastructure as Codeへの道」 リアルグローブ 廣川さん (h-hirokawa)

  • オライリーの「Infrastructure as Code」の要約のような内容で分かりやすかったです。 www.oreilly.co.jp
  • テストについて、なるべく本番環境と同じテスト環境を用意することが大切という話がありました。ネットワークエンジニアとしては、サーバーなら仮想環境で比較的用意しやすそうで羨ましかったりもします。
  • これからのネタとして考えられているPlyaybookのアンチパターン集はとても気になります。

■ [LT]「大きなサイズの設定ファイルを効率よく管理するAnsibleモジュールを見つけました」 (tgotoさん)

speakerdeck.com

  • 長いコンフィグファイルは差分だけで管理したい。そんな時便利な「merge_configs」「merge_yamlgithub.com

■ [LT]「AnsibleとNAPALMでネットワークをテストする」 (私)

www.slideshare.net

  • NAPALMというネットワーク機器を制御するPythonライブラリに、ネットワークをテスト機能があります。
  • Ansibleでは napalm_validate というモジュールから利用できるので、組み合わせたデモ動画をご覧いただきました。

■ [LT]「Windows Update の中間ファイル(ゴミ)を Ansible Playbook で一発で掃除する」 (sogaohさん)

speakerdeck.com - 具体的な方法についてご説明がありました。 - きれいにできる反面、切り戻しができなくなる点に注意。

■ [LT]「OSS公開間近!Ansibleを採用した自動化フレームワークの話」 (倉持さん)

  • AnsibleやServerspecをベースとしたの自動化フレームワークSHIFT wareの紹介
  • Excelから各自動化ツール用のファイルを生成する
  • IaC活用コミュニティを立ち上げる予定

次回 2017年12月の予定

8/18 ネットワーク自動化の勉強会を開催しました(Ansible/Salt/Netmiko/NAPALM)

■ 1. 開催概要

2017/08/18 に 「ネットワークの自動化、何つかう?~自動化ツール紹介~(2回目)」という発表をしました。 取り扱ったツールは以下の通りです。

  • 1.構成管理ツール
    • その1:Ansible
    • その2:SaltStack
  • 2.Pythonライブラリ
    • その1:Netmiko
    • その2:NAPALM

8a1-apc.connpass.com

7/21に実施した勉強会の追加開催というかたちです。

■ 2. 資料

発表に使用した資料はこちらです。1回目の資料より少しだけ追記しています。

www.slideshare.net

■ 3. Q&A

当日頂いた質問とその回答です。

  • 【Q1】dry-run (check mode) や diff 表示などはどうなっていますか?変更点を事前に確認できることは重要だと思います
    • 【A1】dry-run についてはAnsibleやSaltは対応していますが、netmikoやNAPALMは自前で実装する必要があります。diffについてはAnsible、Salt、NAPALMは対応していますが、netmikoは自前で実装する必要があります。
  • 【Q2】webサーバなどに比べNW機器の設定変更頻度は普通、非常に低いものと思います。生configではなくツールを使い、ツールの定義ファイルで設定を変更/管理するメリットはどのような点にあるとお考えでしょうか。
    • 【A2】 定義ファイルであればフォーマットが決まっているので、プログラムからのエクスポートやインポートがしやすいメリットがあります。一方で、構文を覚える必要があるというデメリットもあります。
  • 【Q3】デバイスタイプやログイン先のコードの部分は外部参照(Excelから取得)できるものでしょうか。
    • 【A3】標準ではなさそうなので、自前で実装が必要になると思います。
  • 【Q4】JANOGでも思ったのですが、「作業」の自動化でもやはり「commit」を自動化するのは非常に恐ろしいと思ってます(BGP shutやVLAN ADD等)。その点についてどう思われますか?
    • 【A4】確かに恐ろしいと思います。そのため、事前や事後の確認でリスクを少なくする工夫をセットでしていく必要があると思います。
  • 【Q5】設定の抽象化は捨ててもいいが、showやget系等の表示コマンドに対しての抽象化は全ベンダーに対しては到底ムリに近いと思っているが、表示コマンドの抽象化は必要だと思いますか? (個人的にはせっかく間にAnsible等の豊富なAPI持ってるソフトを使っているのだから、取得した情報を共通フォーマットでjsonなりでパースしたほうが連携したほうがいいと思っています)
    • 【A5】表示コマンドの抽象化はできると便利だと思います。自力でパースするのは大変ですので。
  • 【Q6】NW機器単独であればTeratermマクロやVBAによる自動化は独自でやっている事が多いので、構成管理ツールでサーバとNWの一括管理がメリットなきがしました。
    • 【A6】 私もそう思います。「Ansibleは様々なエンジニアにとっての共通言語である」という言葉をどこかで聞いて印象的でした。
  • 【Q7】機器が対応していない場合のアプローチは?paramiko使って自作?Ansibleモジュール自作?
    • 【A7】はい。paramikoで自作か、Ansibleのモジュールを自作するなどの対応になります。
  • 【Q8】すでに使っている機器の管理に Ansible などを導入する場合はどんな感じでやっていますか?
    • 【A8】インベントリファイルをどう作るかが課題になると思います。スクリプトで生成するなど、導入時は少々泥臭い対応が必要になると思います。
  • 【Q9】失敗時のロールバックに対応したものはありますか
    • 【A9】JunosのようなOSであれば、OSの機能としてロールバックされます。

■ 4. 感じたこと

ネットワーク自動化について自分なりに考えて、利用できるツールを調べて試して、ということをおこなってきましたが、今までは設定の自動化に偏りがちでした。 様々な方の意見をお伺いして、「設定の自動化」と「安全性」はセットであるべきだという感がに至るようになりました。そのため、これからは状態確認やテスト、そもそもテストとは何か、のようなことも考えていきたいと思うようになりました。

お忙しい中お集りいただき、誠にありがとうございました。

仮想Junos4台とAnsibleホストをVagrantで構築するVagrantfile

■ 1. はじめに

Ansibleのネットワークモジュールを使いたいとき、試す環境がなくて困るケースはないでしょうか。 https://labs.networktocode.com/ といった有料のラボサービスもありますが、手元に無料で構築したいこともあるかと思います。 この記事では、仮想Junos4台とAnsibleホストをVagrantで気軽に構築する方法をご紹介します。

以前書いた以下の記事の応用編です。 tekunabe.hatenablog.jp

なお、私が試した環境は以下の通りです。

(大変参考にさせていただいた海外のエントリがあったのですが失念してしまいました・・)

■ 2. 構成図

以下の構成の環境を構築します。 f:id:akira6592:20170826213828p:plain

■ 3. Vagrantfile の用意

以下の内容のVagrantfileを用意します。


Vagrant.configure(2) do |config|
  config.vm.box = "juniper/ffp-12.1X47-D15.4-packetmode"

  config.vm.provider "virtualbox" do |vb|
    vb.memory = 512
    vb.cpus = 2
    vb.gui = false
  end

  # vsrx1
  config.vm.define "vsrx1" do |vsrx|
    vsrx.vm.host_name = "vsrx1"
    vsrx.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2201
    # ge-0/0/1
    vsrx.vm.network "private_network",
                     ip: "172.16.0.1",
                     virtualbox__intnet: "management"
    # ge-0/0/2
    vsrx.vm.network "private_network",
                     ip: "10.0.12.1",
                     virtualbox__intnet: "1-2"
    # ge-0/0/3
    vsrx.vm.network "private_network",
                     ip: "10.0.13.1",
                     virtualbox__intnet: "1-3"
    
    config.vm.provider "virtualbox" do |vb|
      vb.customize ["modifyvm", :id, "--nicpromisc2", "deny"]
    end
  end
  
  # vsrx2
  config.vm.define "vsrx2" do |vsrx|
    vsrx.vm.host_name = "vsrx2"
    vsrx.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2202
    # ge-0/0/1
    vsrx.vm.network "private_network",
                     ip: "172.16.0.2",
                     virtualbox__intnet: "management"
    # ge-0/0/2
    vsrx.vm.network "private_network",
                     ip: "10.0.12.2",
                     virtualbox__intnet: "1-2"
    # ge-0/0/3
    vsrx.vm.network "private_network",
                     ip: "10.0.24.2",
                     virtualbox__intnet: "2-4"
    config.vm.provider "virtualbox" do |vb|
      vb.customize ["modifyvm", :id, "--nicpromisc2", "deny"]
    end
  end
  
  # vsrx3
  config.vm.define "vsrx3" do |vsrx|
    vsrx.vm.host_name = "vsrx3"
    vsrx.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2203
    # ge-0/0/1
    vsrx.vm.network "private_network",
                     ip: "172.16.0.3",
                     virtualbox__intnet: "management"
    # ge-0/0/2
    vsrx.vm.network "private_network",
                     ip: "10.0.13.3",
                     virtualbox__intnet: "1-3"
    # ge-0/0/3
    vsrx.vm.network "private_network",
                     ip: "10.0.34.3",
                     virtualbox__intnet: "3-4"
    config.vm.provider "virtualbox" do |vb|
      vb.customize ["modifyvm", :id, "--nicpromisc2", "deny"]   # プロミスキャスモードを拒否(詳細はその他を参照)
    end
  end
  
  # vsrx4
  config.vm.define "vsrx4" do |vsrx|
    vsrx.vm.host_name = "vsrx4"
    vsrx.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2204
    # ge-0/0/1
    vsrx.vm.network "private_network",
                     ip: "172.16.0.4",
                     virtualbox__intnet: "management"
    # ge-0/0/2
    vsrx.vm.network "private_network",
                     ip: "10.0.24.4",
                     virtualbox__intnet: "2-4"
    # ge-0/0/3
    vsrx.vm.network "private_network",
                     ip: "10.0.34.4",
                     virtualbox__intnet: "3-4"
    config.vm.provider "virtualbox" do |vb|
      vb.customize ["modifyvm", :id, "--nicpromisc2", "deny"]
    end
  end

  # centos7 (ansible)
  config.vm.define "centos7" do |node|
    node.vm.box = "centos/7"
    node.vm.hostname = "centos7"
    node.vm.network "private_network",
                     ip: "172.16.0.9",
                     virtualbox__intnet: "management"
    node.vm.network :forwarded_port, id: "ssh", host_ip:"127.0.0.1", guest: 22, host: 2209
    
    node.vm.synced_folder ".", "/vagrant", disabled: true
    # node.vm.synced_folder ".", "/vagrant", type:"virtualbox"  # お好み
    
    # provision (install ansible by pip)
    node.vm.provision "shell", inline: "yum -y groupinstall 'Development Tools'"
    node.vm.provision "shell", inline: "yum -y install python-devel"
    node.vm.provision "shell", inline: "curl -kL https://bootstrap.pypa.io/get-pip.py | python"
    node.vm.provision "shell", inline: "pip install ansible"
    node.vm.provision "shell", inline: "pip install ncclient"  # junosモジュールで利用
  end

end

お好みに応じて書き換えてください。

■ 4. Vagrantプラグインのインストール

今回利用する仮想JUONSのBoxでは vagrant-junosvagrant-host-shell というVagrantプラグインが必要のためあらかじめインストールしておきます。

vagrant plugin install vagrant-junos
vagrant plugin install vagrant-host-shell

■ 5. vagrant up

用意したVagrantfileのあるディレクトリで、vagrant up してしばらく待ちます。

■ 6. 確認

6.1. Ansibleホスト

ホストOSから localhost:2209SSHにアクセスできます。 vagrantユーザと対応する秘密鍵でログインできます。 ログイン後、以下のようにansbleがインストールされたことが確認できます。

[vagrant@centos7 ~]$ ansible --version
ansible 2.3.2.0
  config file =
  configured module search path = Default w/o overrides
  python version = 2.7.5 (default, Nov  6 2016, 00:28:07) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]

※2017/08/26現在の pipでインストールされるバージョンは2.3.2

6.2. vsrx1

ホストOSから localhost:2201SSHにアクセスできます。 vagrantユーザと対応する秘密鍵か、rootユーザーとパスワードJuniperでログインできます。 ここでは show version コマンドを実行して確認します。

root@vsrx1> show version
Hostname: vsrx1
Model: firefly-perimeter
JUNOS Software Release [12.1X47-D15.4]

同じように

  • localhost:2202vsrx2
  • localhost:2203vsrx3
  • localhost:2204vsrx4

にアクセスできます。

これで、仮想Junos4台とAnsibleホストをVagrantを構築できました。

■ その他

172.16.0.0/24 のネットワークですが、VirtualBoxのネットワーク設定に起因するのか、以下のようにpingの応答がduplicateしたりします。

[2017/12/16 更新] Vagrantfle 内で、仮想NICのプロミスキャスモードを拒否にすることで解決。(上記 Vagrantfle の内容は修正済み)

以上です。

検証機にちょっと貼りたいマスキングテープ等貼ってはがせるテープレビュー

f:id:akira6592:20170729225656p:plain

■ はじめに

ネットワーク機器やケーブルなどを識別したしときに
「ラベルテープを作るほどでもないけど普通の付箋はひらひらしてしまうし・・」と思ってマスキングテープを利用される方は結構いらっしゃるのでしょうか。
今回はいくつか使い勝手を比較してみたいと思います。すべて主観です。

■ 比較した製品

今回比較したテープは、以下の3タイプになります。

  • マスキングテープ系:おなじみアイテム
  • 付箋系:全面にノリがついていて好きな長さに切れるもの
  • その他:養生テープなど

具体的には以下7の七つの製品です。
(使用感のある写真でスミマセン)

【マスキングテープ系】

(1) カモ井加工紙 mt マスキングテープ

よく見かけるマスキングテープです。
www.amazon.co.jp

(2) ニトムズ 和紙テープ

カッターがついているのが特徴です。
https://www.nitomsonlinestore.com/show?product_code=S1209

(3) スコッチ ドラフティングテープ

こちらもカッターがついています。低粘着です。
product.rakuten.co.jp

【付箋系】

(4) ポストイット 強粘着ロール 12mm×10m 2巻 ディスペンサー

強粘着全面のり付箋のロールタイプです。
www.amazon.co.jp

(5) ヤマト メモックロールテープ NORK-25CH-6A

こちらも全面のり付箋のロールタイプです。
www.amazon.co.jp

【その他】

(6) TERAOKA P-カットテープ

いわゆる養生テープです。
www.teraokatape.co.jp

(7) 堀内カラー HCL パーマセルテープ

撮影で利用されるテープです。電気屋さんのカメラコーナーに売っていることがあります。
www.amazon.co.jp

■ 比較

各種ペンの書きやすさ、切り口のきれいさ、携帯性、コストで比較しました。

名前 油性マジック 油性ボールペン シャーペン 切り口 携帯性 コスト
(1)mtマスキングテープ × ×
(2)和紙テープ ×
(3)ドラフティングテープ ×
(4)強粘着ロール
(5)メモックロールテープ
(6)P-カットテープ ×
(7)パーマセルテープ × × ×

各種ペンの書きやすさの詳細

f:id:akira6592:20170729225345p:plain

■ 注意点

  • いずれも一時的な貼り付けを目的としているため、長時間の貼り付けはおすすめしません。
  • 今回は金属に貼り付けています。ものによっては紙に貼り付けるとはがすときに紙を破損することがあるのでご注意ください。

f:id:akira6592:20170729232221p:plain


■ まとめ

個人的には、油性のペンで書き込むのであればマスキングテープ系がお手頃で扱いやすいと思います。

7/21 ネットワーク自動化の勉強会を開催しました(Ansible/SaltStack/Netmiko/NAPALM)

2017/07/21 に 「ネットワークの自動化、何つかう?~自動化ツール紹介~」という発表をしました。 8a1-apc.connpass.com

発表に使用した資料はこちらです。

www.slideshare.net

質疑応答ではsaltに関する質問が多かったように思います。まだ日本ではマイナーだからでしょうか。

なお、同じ内容を8/18にも開催する予定です。

8a1-apc.connpass.com

Juniperの仮想ファイアウォール(firefly perimeter/vSRX)を検証用にローカルに構築する

f:id:akira6592:20170715115057p:plain

■ はじめに

Juniper社は、検証用に仮想ファイアウォール(firefly perimeter/vSRX)のイメージファイルを提供しています。 イメージファイルはVagrant Cloud上(旧Atlas)にあります。 app.vagrantup.com

この記事では、ちょっとした操作感を簡単に試したり、ネットワーク自動化ツールとの連携を試したりする目的でローカルに環境を構築してCLI、Web GUIでログインできるところまでの手順を説明します。

環境

■ Virtual Box のインストー

今回は仮想化ソフトウェアとして Virtualboxを利用します。インストールしていない場合は以下のページからダウンロードしてインストールしておきます。 https://www.virtualbox.org/wiki/Downloads

Vagrant のインストー

仮想環境構築ソフトウェアとして Vagrant を利用します。インストールしていない場合は以下のページからダウンロードしてインストールしておきます。 https://www.vagrantup.com/downloads.html

仮想マシンの準備と起動

JUNOS用 vagrant プラグインのインストー

以下のコマンドで2つのプラグインをインストールします。

・コマンド

vagrant plugin install vagrant-junos
vagrant plugin install vagrant-host-shell

・ログ

D:\users\user\Documents\VirtualBox VMs\srx>vagrant plugin install vagrant-junos
Installing the 'vagrant-junos' plugin. This can take a few minutes...
Installed the plugin 'vagrant-junos (0.2.1)'!

D:\users\user\Documents\VirtualBox VMs\srx>vagrant plugin install vagrant-host-shell
Installing the 'vagrant-host-shell' plugin. This can take a few minutes...
Installed the plugin 'vagrant-host-shell (0.0.4)'!

Vagrantfileの作成(vagrant init)

以下のコマンドで Vagrantfile を作成します。

・コマンド

vagrant init juniper/ffp-12.1X47-D15.4

・ログ

D:\users\user\Documents\VirtualBox VMs\srx>vagrant init juniper/ffp-12.1X47-D15.4
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

仮想マシンの起動(vagrant up)

以下のコマンドで仮想マシンを起動します。

・コマンド

vagrant up

・ログ

D:\users\user\Documents\VirtualBox VMs\srx>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'juniper/ffp-12.1X47-D15.4'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'juniper/ffp-12.1X47-D15.4' is up to date...
==> default: Setting the name of the VM: srx_default_1500081122453_26114
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: root
    default: SSH auth method: private key
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
Sorry, don't know how to check guest version of Virtualbox Guest Additions on this platform. Stopping installation.
==> default: Checking for guest additions in VM...
    default: No guest additions were detected on the base box for this VM! Guest
    default: additions are required for forwarded ports, shared folders, host only
    default: networking, and more. If SSH fails on this machine, please install
    default: the guest additions and repackage the box to continue.
    default:
    default: This is not an error message; everything may continue to work properly,
    default: in which case you may ignore this message.

なお、 イメージファイルが見つからない旨のエラーメッセージが表示された場合は、ffp-12.1X47-D15.4 の箇所があっているか、Vagrant Cloud上で確認してください。

https://app.vagrantup.com/juniper/

しばらくすると、Virtualbox マネージャーでも仮想環境が起動したことが確認できます

f:id:akira6592:20170715115356p:plain

■ Web GUIアクセスログインのための設定

ユーザ作成とパスワード設定

SSHlocalhost:2222 に接続します。(デフォルトで「2222→22」にポートフォワーディングが設定されています) なお、ログインのためのrootの秘密鍵は、vagrant up したフォルダの .vagrant\machines\default\virtualbox\private_key にあります。

ログインできたら、ユーザーの作成とパスワードの設定を行います。設定を反映するための commit も忘れずに行います。

root@vsrx% cli

root@vsrx> configure
Entering configuration mode

[edit]
root@vsrx# set system login user [ユーザー名] class super-user

[edit]
root@vsrx# set system login user [ユーザー名] authentication plain-text-password
New password: [パスワードを入力]
Retype new password: [パスワードを入力]

[edit]
root@vsrx# commit
commit complete

ポートフォワーディング設定

デフォルトだど仮想インターフェースがNATモードなので、WEB GUIアクセスするためにはポートフォワーディングの設定が必要になります。ここではVirtual Box側の設定として以下のように「8888→80」に設定します。

f:id:akira6592:20170715114549p:plain

■ Web GUIログイン確認

Webブラウザで http://localhost:8888 にアクセスして、先ほど作成したユーザーでログインでします。

f:id:akira6592:20170715114610p:plain

無事ログインできました。

仮想マシンのシャットダウン

vagrant halt

するか、通常のSRXと同じように

root@vsrx> request system power-off

のようにしてシャットダウンします。

■ さいごに

今回はなるべく少ない手順で構築したため、インターフェースが1つだったりとファイアウォールとしては体をなしていない状態ですが、とにかく「JUNOSのコマンド体系に慣れたい」「SRXのWeb GUI画面に慣れたい」といった用途には利用できるのではないでしょうか。 必要に応じてカスタマイズしていただければと思います。