Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

AnsibleとNAPALMでネットワークをテストする

3,579 views

Published on

NAPALMというネットワーク機器を制御するPythonライブラリに、ネットワークをテスト機能があり、Ansibleでは napalm_validate というモジュールから利用できます。

これらを利用したデモをご紹介します。

Ansible Meetup in Tokyo 2017.09 の資料です
https://ansible-users.connpass.com/event/62508/

Published in: Technology
  • Be the first to comment

AnsibleとNAPALMでネットワークをテストする

  1. 1. 2017/09/01 Ansible Meetup in Tokyo 2017.09 LT 株式会社 エーピーコミュニケーションズ 横地 晃(@akira6592)
  2. 2. NW作業を自動化したいけれど 2 自動化 したい 自動化 怖い テストの自動化で 安心と安全をプラスして 「怖い」を消したい
  3. 3. ネットワークにおけるテスト 3 (1) 設計 (2) 投入コンフィグ (3) 投入後コンフィグ (4) 作業後の状態 人の領域 機器の領域 コンフィグ作成 投入 状態変化 今回はここの 整合性をテスト 【設計と状態の比較 】
  4. 4. NAPALMのテストへの活用 4 コマンド実行 NAPALM 結果取得 NW機器 NAPALMはNW機器を制御するpythonライブラリ 設計通りの状態かテストする機能がある テスト IOS、Junos・・等 Ansibleからは napalm_validate モジュールでテスト
  5. 5. 5 デモ BGPネットワークにおけるLPによる経路変更
  6. 6. eBGP iBGP デモ環境 (構成・流れ 1/2) 6 LP: 200 LP: 100 vsrx1 vsrx3vsrx2 vsrx4 変更前経路 ※仮想Junos4台とAnsibleホストをVagrantで構築するVagrantfile http://tekunabe.hatenablog.jp/entry/2017/08/26/junos-ansible-vagrant LP: 大きい値の経路を優先 左から右への経路変更 vsrx1-4: Junos
  7. 7. eBGP iBGP デモ環境 (構成・流れ 2/2) 7 LP: 200 LP: 100 vsrx1 vsrx3vsrx2 vsrx4 変更前経路 変更後経路 (1) LPを300に変更 (2) vsrx3経由の経路のLPが 300になることを確認 (3) tracerouteがR3経由 になることを確認 ※仮想Junos4台とAnsibleホストをVagrantで構築するVagrantfile http://tekunabe.hatenablog.jp/entry/2017/08/26/junos-ansible-vagrant LP: 大きい値の経路を優先 左から右への経路変更 vsrx1-4: Junos
  8. 8. デモ環境(LP変更playbook) 8 --- - hosts: 172.16.0.3 gather_facts: no connection: local tasks: - name: change lp junos_config: lines: - set protocols bgp group INT local-preference 300 provider: "{{ cli }}" vars: cli: host: "{{ inventory_hostname }}" username: "{{ ansible_user }}" password: "{{ ansible_password }}" LPを 300 に変更
  9. 9. デモ環境(状態テストPlaybook) 9 - hosts: 172.16.0.1 gather_facts: no connection: local tasks: - name: validate LP napalm_validate: validation_file: "/etc/ansible/def_lp_after.yml" provider: "{{ cli }}" tags: lp - name: validation trace napalm_validate: validation_file: "/etc/ansible/def_trace_after.yml" provider: "{{ cli }}" tags: trace vars: cli: username: "{{ ansible_user }}" password: "{{ ansible_password }}" hostname: "{{ inventory_hostname }}" dev_os: "junos" LPテスト用状態定義ファイルの指定 Tracerouteテスト用状態定義ファイルの指定
  10. 10. デモ環境(LP用状態定義ファイル ) 10 --- - get_route_to: _kwargs: destination: 4.4.4.4 4.4.4.4/32: list: - next_hop: 10.0.13.3 protocol_attributes: local_preference: 300 ※対象が他の機種でも 同じフォーマットが使える テストする宛先を指定 想定のLPを指定
  11. 11. デモ環境(trace用状態定義ファイル) 11 --- - traceroute: _kwargs: destination: 4.4.4.4 success: 1: probes: 1: ip_address: 10.0.13.3 2: ip_address: 10.0.13.3 3: ip_address: 10.0.13.3 2: probes: 1: ip_address: 4.4.4.4 2: ip_address: 4.4.4.4 3: ip_address: 4.4.4.4 ※対象が他の機種でも 同じフォーマットが使える Tracerouteの宛先を指定 想定の1ホップ目の アドレスを指定 ※vsrx3(右) 経由 であること 想定の2ホップ目の アドレスを指定
  12. 12. デモ 12 デモ動画をご覧ください (Ansible + NAPALM で設定とテストの自動化)
  13. 13. 13 ▼Ansible ▲ルータ(手動確認用) ▼ Traceroute可視化画面
  14. 14. まとめ 14 napalm_validate モジュールで NWのテストができる。 NW機器の「設定」に加えて「テスト」の 自動化を実現する選択肢になる。+設定 テスト テストの自動化で安心と安全をプラスし、 自動化の推進ができる。

×