Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NAPALMで作るネットワークオペレーション ⾃動化への道のり

NAPALMで作るネットワークオペレーション ⾃動化への道のり

Interop2017で話した内容です

Mabuchin

June 21, 2017
Tweet

More Decks by Mabuchin

Other Decks in Technology

Transcript

  1. © BIGLOBE Inc. 2017 2 l⾺淵 俊弥(MABUCHI Toshiya) pビッグローブ株式会社 システム基盤本部

    l現在のお仕事 pASネットワーク(AS2518)の設計/運⽤全般 ØPeering Øネットワーク設計 Ø各種回線の開通 Ø機器/機能検証 Ø⾃動化/可視化ツールの開発 など… ⾃⼰紹介
  2. © BIGLOBE Inc. 2017 5 BIGLOBEがピアリングするまで l Peering情報のやりとり l ⼿順書/Script作成

    l ⼿順書 Script査閲/承認 l 作業の実施 p ⼿順書印刷 p 各種確認ツールの起動 p ログイン p 事前確認 p 設定 p 事後確認 p コンフィグ保存 l 作業完了報告/資料更新
  3. © BIGLOBE Inc. 2017 6 現状の課題 l作成 p作成/置換ミスを誘発する可能性がある⼿製の⼿順書 l査閲/承認 p⼿順書/スクリプトが⻑く,

    査閲に時間がかかってしまう l作業 p確認ポイントが多く、コンフィグ投⼊/切り戻しにも 時間がかかる
  4. © BIGLOBE Inc. 2017 9 自動化できそうな所を考える l ⼿順書/コンフィグ作成 p⼿順の抽象化で確認項⽬の差を吸収 p⼿順書⾃体の⾃動で作成

    l査閲/承認 p⾃動化は難しいが, 査閲ポイントを絞ることで⾼速化 l設定作業 p既存のOSSツールを利⽤することで、 確認と設定を⾃動で実施
  5. © BIGLOBE Inc. 2017 11 l Pythonのネットワーク設定⽀援ライブラリ pマルチベンダー環境下においての⾃動化に対応 ØEOS/JUNOS/IOS-XR/NXOS/IOS/ FortiOS/Pluribus/PANOS/MikroTik/VyOS

    に対応(2017/06/05現在) p確認/設定が抽象化されているので全機種共通の 記述で使える NAPALM? Network Automation and Programmability Abstraction Layer with Multivendor support
  6. © BIGLOBE Inc. 2017 12 NAPALMの抽象化例 -既存の機器出⼒結果- IOS-XR JUNOS •

    プログラムに認識させるための正規化がかなり厳しい • 採⽤機器毎にNETCONFやexpectから欲しい情報を それぞれ抜き出さないといけない • プログラムに優しい出⼒結果ではない
  7. © BIGLOBE Inc. 2017 13 NAPALMの抽象化例 -既存の機器出⼒結果- Napalm • 取得も設定もpythonプログラム上

    • 値は全てJSON • 抽象化された結果を返す • JUNOSもIOSXRも共通 • プログラム上の関数も勿論共通
  8. © BIGLOBE Inc. 2017 15 システムの概要 作業者 ⼿順書 査閲者 Router1

    Router2 状態確認 設定変更 ⼿順書解析 ⼿順書作成/実⾏ Webから⼿順書の作成 確認結果から継続/中断の判断 設定反映の実⾏ 対象機器 設定するパラメータ 状態確認する内容 ⼿順書を解析 確認/設定はnapalm 結果を作業者に返す
  9. © BIGLOBE Inc. 2017 16 ⾃動設定の設定作業例 lISPのPeering作業を想定 p今回はPrivatePeerの場合 Ø事前状態確認 ØInterfaceの設定

    ØBGP Policyの設定 ØBGP Neighborの設定 Ø事後状態確認 AS65002 (GoBGP) AS65001 (JUNOS) 確認後、問題なければBGP設定 ・Hostname ・Version ・CPU/Memory ・Interface ・Route ・BGP BIGLOBE側
  10. © BIGLOBE Inc. 2017 20 ⼿順書(シナリオ)ファイルの実⾏結果例 [設定投⼊] ・設定したパラメータと Configのテンプレートから Configを作成し、投⼊

    [既存コンフィグとの差分を表⽰] ・問題なければ投⼊ ・戻す場合はコンフィグを ロールバックして終了
  11. © BIGLOBE Inc. 2017 22 l設定作業は現実的な環境下(マルチベンダ) においても、かなりの⾼速化ができた p2時間 → 5分!

    lコアの部分(抽象化)はNAPALMがある p⾃社に適合する形に適合させるだけでOK l勢いのあるOSSを使う p要望も取り込んでくれるかも Ø私もContributeしました! J 良かったこと
  12. © BIGLOBE Inc. 2017 23 lNAPALMが使えない場合がある pサポートするOSのバージョンが⽐較的新しめ ØIOS-XR 5.1.0以上からサポートなど –

    http://napalm.readthedocs.io/en/latest/support/index.html pNETCONFやXML agentを有効にしないと 実施できない場合がある Ø各ルータに追加の設定が必要になる 超えるべき壁もまだ沢⼭
  13. © BIGLOBE Inc. 2017 27 作業者 ⼿順書 査閲者 Router1 Router2

    状態確認 設定変更 ⼿順書解析 ⼿順書作成/実⾏ ⼿書きでなくWebから⽣成 Webでそのまま査閲/承認 さらにWrapするWebGUIを開発 WebGUI (Django) NAPALM 実行ツール ⾃動通知で やりとりのロスを減らす
  14. © BIGLOBE Inc. 2017 34 l SmartCS/SmartGSで抽象化してくれませんか? pいつも⼤変お世話になっているSmartCS Ø確実な接続性で信頼してます! ありがとうございます!

    p更に、各ベンダーの設定や状態取得の抽象化&中間APIが できると最⾼にHappyです! セイコーソリューションズさんへのお願い シナリオ SmartCS ベンダーA ベンダーC ベンダーB 差分吸収 REST API grpc
  15. © BIGLOBE Inc. 2017 35 l マルチベンダ対応の⾃動化⽀援ライブラリ 「NAPALM」を使って⾃動化してみました p 現実的な⾃社の環境に適⽤できるものができた

    p 作業省⼒化が可能 l より省⼒化するためにWebGUIでの⼿順書作成⽀援ツールを 作りました l 抽象化レイヤーとしてのSmartCSお願いします! まとめ 一緒に自動化に向けて挑戦して、共有していきませんか? 皆様の共有が業界全体の自動化の歩みを早めます!
  16. © BIGLOBE Inc. 2017 36 l 発表で使ったツールは全て公開してます p Napalm-scenario(YML⼿順書⾃動実⾏ツール) Ø

    https://github.com/as2518/napalm-scenario p OperationHQ(YML⼿順書作成/管理WebGUI) Ø https://github.com/as2518/ops-hq l NAPALM p https://github.com/napalm-automation/napalm l 参考リンク p JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性 Ø Napalm-scenarioの原型はこちら Ø https://www.slideshare.net/taijitsuchiya5/jsnapypyez Ø https://github.com/as2518/scenarioJUNOS 最後に