© BIGLOBE Inc. 2017
1
ネットワークオペレーション
⾃動化への道のり
BIGLOBE Inc.
Toshiya Mabuchi
© BIGLOBE Inc. 2017
© BIGLOBE Inc. 20172
l⾺淵 俊弥(MABUCHI Toshiya)
pビッグローブ株式会社 システム基盤本部
l現在のお仕事
pASネットワーク(AS2518)の設計/運⽤全般
ØPeering
Øネットワーク設計
Ø各種回線の開通
Ø機器/機能検証
Ø⾃動化/可視化ツールの開発 など…
⾃⼰紹介
© BIGLOBE Inc. 20173
ShowNetも⾃動化!
© BIGLOBE Inc. 20174
ISPにおける
⾃動化の話をしていきます
今回は!
© BIGLOBE Inc. 20175
BIGLOBEがピアリングするまで
l Peering情報のやりとり
l ⼿順書/Script作成
l ⼿順書 Script査閲/承認
l 作業の実施
p ⼿順書印刷
p 各種確認ツールの起動
p ログイン
p 事前確認
p 設定
p 事後確認
p コンフィグ保存
l 作業完了報告/資料更新
© BIGLOBE Inc. 20176
現状の課題
l作成
p作成/置換ミスを誘発する可能性がある⼿製の⼿順書
l査閲/承認
p⼿順書/スクリプトが⻑く,
査閲に時間がかかってしまう
l作業
p確認ポイントが多く、コンフィグ投⼊/切り戻しにも
時間がかかる
© BIGLOBE Inc. 20177
何よりも…
ピアリングをしていく上で、
「作成/査閲/査閲をする時間」
に時間は割きたくない
極⼒、⾃動化/省⼒化をしたい
© BIGLOBE Inc. 20178
⾃動化の前提条件
l作業の全⼯程を極⼒省⼒化できる
l事前の作業レビューが可能
l作業時のログを必ず残せる
© BIGLOBE Inc. 20179
自動化できそうな所を考える
l ⼿順書/コンフィグ作成
p⼿順の抽象化で確認項⽬の差を吸収
p⼿順書⾃体の⾃動で作成
l査閲/承認
p⾃動化は難しいが,
査閲ポイントを絞ることで⾼速化
l設定作業
p既存のOSSツールを利⽤することで、
確認と設定を⾃動で実施
© BIGLOBE Inc. 201710
NAPALM使えば実現できそう!
© BIGLOBE Inc. 201711
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
© BIGLOBE Inc. 201712
NAPALMの抽象化例 -既存の機器出⼒結果-
IOS-XR JUNOS
• プログラムに認識させるための正規化がかなり厳しい
• 採⽤機器毎にNETCONFやexpectから欲しい情報を
それぞれ抜き出さないといけない
• プログラムに優しい出⼒結果ではない
© BIGLOBE Inc. 201713
NAPALMの抽象化例 -既存の機器出⼒結果-
Napalm
• 取得も設定もpythonプログラム上
• 値は全てJSON
• 抽象化された結果を返す
• JUNOSもIOSXRも共通
• プログラム上の関数も勿論共通
© BIGLOBE Inc. 201714
実際に使って⾃動化してみました
© BIGLOBE Inc. 201715
システムの概要
作業者
⼿順書
査閲者
Router1Router2
状態確認 設定変更
⼿順書解析
⼿順書作成/実⾏
Webから⼿順書の作成
確認結果から継続/中断の判断
設定反映の実⾏
対象機器
設定するパラメータ
状態確認する内容
⼿順書を解析
確認/設定はnapalm
結果を作業者に返す
© BIGLOBE Inc. 201716
⾃動設定の設定作業例
lISPのPeering作業を想定
p今回はPrivatePeerの場合
Ø事前状態確認
ØInterfaceの設定
ØBGP Policyの設定
ØBGP Neighborの設定
Ø事後状態確認
AS65002
(GoBGP)
AS65001
(JUNOS)
確認後、問題なければBGP設定
・Hostname
・Version
・CPU/Memory
・Interface
・Route
・BGP
BIGLOBE側
© BIGLOBE Inc. 201717
⼿順書(シナリオ)ファイルの設定例
Validatate
事前確認する項⽬を記述する
・ホスト名とバージョン
・BGP状態
・CPU/Memory 等…
© BIGLOBE Inc. 201718
⼿順書(シナリオ)ファイルの設定例
設定投⼊編
設定したパラメータと
Configのテンプレートから
Configを作成し、投⼊
© BIGLOBE Inc. 201719
⼿順書(シナリオ)ファイルの実⾏結果例
[状態の確認]
・設定したValidateと実機器の
状態が合っているか確認
・invalidな状態があれば、
詳細を表⽰して、指⽰を待つ
© BIGLOBE Inc. 201720
⼿順書(シナリオ)ファイルの実⾏結果例
[設定投⼊]
・設定したパラメータと
Configのテンプレートから
Configを作成し、投⼊
[既存コンフィグとの差分を表⽰]
・問題なければ投⼊
・戻す場合はコンフィグを
ロールバックして終了
© BIGLOBE Inc. 201721
https://goo.gl/aun4Cg
デモ
© BIGLOBE Inc. 201722
l設定作業は現実的な環境下(マルチベンダ)
においても、かなりの⾼速化ができた
p2時間 → 5分!
lコアの部分(抽象化)はNAPALMがある
p⾃社に適合する形に適合させるだけでOK
l勢いのあるOSSを使う
p要望も取り込んでくれるかも
Ø私もContributeしました! J
良かったこと
© BIGLOBE Inc. 201723
lNAPALMが使えない場合がある
pサポートするOSのバージョンが⽐較的新しめ
ØIOS-XR 5.1.0以上からサポートなど
– http://napalm.readthedocs.io/en/latest/support/index.html
pNETCONFやXML agentを有効にしないと
実施できない場合がある
Ø各ルータに追加の設定が必要になる
超えるべき壁もまだ沢⼭
© BIGLOBE Inc. 201724
lYAML形式の⼿順書⾃体は⼿書き
p作業者への学習コストが⾼め
l作業は⾃動化できても、承認依頼や⼿順
書管理は既存のまま
lNAPALMは発展途上中
pまだ微妙に⾜りない機能もあったりする
超えるべき壁もまだ沢⼭
© BIGLOBE Inc. 201725
ここで終われない!
Extra round.
© BIGLOBE Inc. 201726
lYAML形式の⼿順書⾃体は⼿書き
p作業者への学習コストが⾼め
l作業は⾃動化できても、承認依頼や⼿順
書管理は既存のまま
lNAPALMは発展途上中
pまだ微妙に⾜りない機能もあったりする
(再掲)超えるべき壁もまだ沢⼭
© BIGLOBE Inc. 201727
作業者
⼿順書
査閲者
Router1Router2
状態確認 設定変更
⼿順書解析
⼿順書作成/実⾏
⼿書きでなくWebから⽣成
Webでそのまま査閲/承認
さらにWrapするWebGUIを開発
WebGUI
(Django)
NAPALM
実行ツール
⾃動通知で
やりとりのロスを減らす
© BIGLOBE Inc. 201728
YML形式の手順書をWebから生成
© BIGLOBE Inc. 201729
手順書と作業状態の管理ツール
© BIGLOBE Inc. 201730
Chatops
作業が登録/承認されたらチャットで通知
© BIGLOBE Inc. 201731
手順書確認や承認もWeb上で
© BIGLOBE Inc. 201732
l運⽤者のみなさま
p⾊んなツール使って⾃動化してみませんか?
Øいろんなツールを使ってみた
情報共有だけでもすごく参考になります
Ø⼩さいことでもOK!
p⼀緒に⾊んな壁を乗り越えるためのフィード
バックをお互いにしませんか?
皆様にお願い
© BIGLOBE Inc. 201733
lメーカー/ベンダーのみなさま
p⾃動化のためのツール/APIを提供して下さい!
Ø⾃動化がしやすいのは、選定される基準になります
p⾃動化のハードルを下げて欲しい!
Ø⾊んな事例の紹介ももっと聞きたいです
Ø⾃動化にまつわるAPIのドキュメントも
充実させてほしいです!
pOSSに乗ってきて欲しいです
ØNapalmに搭載可能なモジュールの提供など
皆様にお願い
© BIGLOBE Inc. 201734
l SmartCS/SmartGSで抽象化してくれませんか?
pいつも⼤変お世話になっているSmartCS
Ø確実な接続性で信頼してます!
ありがとうございます!
p更に、各ベンダーの設定や状態取得の抽象化&中間APIが
できると最⾼にHappyです!
セイコーソリューションズさんへのお願い
シナリオ SmartCS
ベンダーA
ベンダーC
ベンダーB
差分吸収
REST API grpc
© BIGLOBE Inc. 201735
l マルチベンダ対応の⾃動化⽀援ライブラリ
「NAPALM」を使って⾃動化してみました
p 現実的な⾃社の環境に適⽤できるものができた
p 作業省⼒化が可能
l より省⼒化するためにWebGUIでの⼿順書作成⽀援ツールを
作りました
l 抽象化レイヤーとしてのSmartCSお願いします!
まとめ
一緒に自動化に向けて挑戦して、共有していきませんか?
皆様の共有が業界全体の自動化の歩みを早めます!
© BIGLOBE Inc. 201736
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
最後に

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

  • 1.
    © BIGLOBE Inc.2017 1 ネットワークオペレーション ⾃動化への道のり BIGLOBE Inc. Toshiya Mabuchi © BIGLOBE Inc. 2017
  • 2.
    © BIGLOBE Inc.20172 l⾺淵 俊弥(MABUCHI Toshiya) pビッグローブ株式会社 システム基盤本部 l現在のお仕事 pASネットワーク(AS2518)の設計/運⽤全般 ØPeering Øネットワーク設計 Ø各種回線の開通 Ø機器/機能検証 Ø⾃動化/可視化ツールの開発 など… ⾃⼰紹介
  • 3.
    © BIGLOBE Inc.20173 ShowNetも⾃動化!
  • 4.
    © BIGLOBE Inc.20174 ISPにおける ⾃動化の話をしていきます 今回は!
  • 5.
    © BIGLOBE Inc.20175 BIGLOBEがピアリングするまで l Peering情報のやりとり l ⼿順書/Script作成 l ⼿順書 Script査閲/承認 l 作業の実施 p ⼿順書印刷 p 各種確認ツールの起動 p ログイン p 事前確認 p 設定 p 事後確認 p コンフィグ保存 l 作業完了報告/資料更新
  • 6.
    © BIGLOBE Inc.20176 現状の課題 l作成 p作成/置換ミスを誘発する可能性がある⼿製の⼿順書 l査閲/承認 p⼿順書/スクリプトが⻑く, 査閲に時間がかかってしまう l作業 p確認ポイントが多く、コンフィグ投⼊/切り戻しにも 時間がかかる
  • 7.
    © BIGLOBE Inc.20177 何よりも… ピアリングをしていく上で、 「作成/査閲/査閲をする時間」 に時間は割きたくない 極⼒、⾃動化/省⼒化をしたい
  • 8.
    © BIGLOBE Inc.20178 ⾃動化の前提条件 l作業の全⼯程を極⼒省⼒化できる l事前の作業レビューが可能 l作業時のログを必ず残せる
  • 9.
    © BIGLOBE Inc.20179 自動化できそうな所を考える l ⼿順書/コンフィグ作成 p⼿順の抽象化で確認項⽬の差を吸収 p⼿順書⾃体の⾃動で作成 l査閲/承認 p⾃動化は難しいが, 査閲ポイントを絞ることで⾼速化 l設定作業 p既存のOSSツールを利⽤することで、 確認と設定を⾃動で実施
  • 10.
    © BIGLOBE Inc.201710 NAPALM使えば実現できそう!
  • 11.
    © BIGLOBE Inc.201711 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
  • 12.
    © BIGLOBE Inc.201712 NAPALMの抽象化例 -既存の機器出⼒結果- IOS-XR JUNOS • プログラムに認識させるための正規化がかなり厳しい • 採⽤機器毎にNETCONFやexpectから欲しい情報を それぞれ抜き出さないといけない • プログラムに優しい出⼒結果ではない
  • 13.
    © BIGLOBE Inc.201713 NAPALMの抽象化例 -既存の機器出⼒結果- Napalm • 取得も設定もpythonプログラム上 • 値は全てJSON • 抽象化された結果を返す • JUNOSもIOSXRも共通 • プログラム上の関数も勿論共通
  • 14.
    © BIGLOBE Inc.201714 実際に使って⾃動化してみました
  • 15.
    © BIGLOBE Inc.201715 システムの概要 作業者 ⼿順書 査閲者 Router1Router2 状態確認 設定変更 ⼿順書解析 ⼿順書作成/実⾏ Webから⼿順書の作成 確認結果から継続/中断の判断 設定反映の実⾏ 対象機器 設定するパラメータ 状態確認する内容 ⼿順書を解析 確認/設定はnapalm 結果を作業者に返す
  • 16.
    © BIGLOBE Inc.201716 ⾃動設定の設定作業例 lISPのPeering作業を想定 p今回はPrivatePeerの場合 Ø事前状態確認 ØInterfaceの設定 ØBGP Policyの設定 ØBGP Neighborの設定 Ø事後状態確認 AS65002 (GoBGP) AS65001 (JUNOS) 確認後、問題なければBGP設定 ・Hostname ・Version ・CPU/Memory ・Interface ・Route ・BGP BIGLOBE側
  • 17.
    © BIGLOBE Inc.201717 ⼿順書(シナリオ)ファイルの設定例 Validatate 事前確認する項⽬を記述する ・ホスト名とバージョン ・BGP状態 ・CPU/Memory 等…
  • 18.
    © BIGLOBE Inc.201718 ⼿順書(シナリオ)ファイルの設定例 設定投⼊編 設定したパラメータと Configのテンプレートから Configを作成し、投⼊
  • 19.
    © BIGLOBE Inc.201719 ⼿順書(シナリオ)ファイルの実⾏結果例 [状態の確認] ・設定したValidateと実機器の 状態が合っているか確認 ・invalidな状態があれば、 詳細を表⽰して、指⽰を待つ
  • 20.
    © BIGLOBE Inc.201720 ⼿順書(シナリオ)ファイルの実⾏結果例 [設定投⼊] ・設定したパラメータと Configのテンプレートから Configを作成し、投⼊ [既存コンフィグとの差分を表⽰] ・問題なければ投⼊ ・戻す場合はコンフィグを ロールバックして終了
  • 21.
    © BIGLOBE Inc.201721 https://goo.gl/aun4Cg デモ
  • 22.
    © BIGLOBE Inc.201722 l設定作業は現実的な環境下(マルチベンダ) においても、かなりの⾼速化ができた p2時間 → 5分! lコアの部分(抽象化)はNAPALMがある p⾃社に適合する形に適合させるだけでOK l勢いのあるOSSを使う p要望も取り込んでくれるかも Ø私もContributeしました! J 良かったこと
  • 23.
    © BIGLOBE Inc.201723 lNAPALMが使えない場合がある pサポートするOSのバージョンが⽐較的新しめ ØIOS-XR 5.1.0以上からサポートなど – http://napalm.readthedocs.io/en/latest/support/index.html pNETCONFやXML agentを有効にしないと 実施できない場合がある Ø各ルータに追加の設定が必要になる 超えるべき壁もまだ沢⼭
  • 24.
    © BIGLOBE Inc.201724 lYAML形式の⼿順書⾃体は⼿書き p作業者への学習コストが⾼め l作業は⾃動化できても、承認依頼や⼿順 書管理は既存のまま lNAPALMは発展途上中 pまだ微妙に⾜りない機能もあったりする 超えるべき壁もまだ沢⼭
  • 25.
    © BIGLOBE Inc.201725 ここで終われない! Extra round.
  • 26.
    © BIGLOBE Inc.201726 lYAML形式の⼿順書⾃体は⼿書き p作業者への学習コストが⾼め l作業は⾃動化できても、承認依頼や⼿順 書管理は既存のまま lNAPALMは発展途上中 pまだ微妙に⾜りない機能もあったりする (再掲)超えるべき壁もまだ沢⼭
  • 27.
    © BIGLOBE Inc.201727 作業者 ⼿順書 査閲者 Router1Router2 状態確認 設定変更 ⼿順書解析 ⼿順書作成/実⾏ ⼿書きでなくWebから⽣成 Webでそのまま査閲/承認 さらにWrapするWebGUIを開発 WebGUI (Django) NAPALM 実行ツール ⾃動通知で やりとりのロスを減らす
  • 28.
    © BIGLOBE Inc.201728 YML形式の手順書をWebから生成
  • 29.
    © BIGLOBE Inc.201729 手順書と作業状態の管理ツール
  • 30.
    © BIGLOBE Inc.201730 Chatops 作業が登録/承認されたらチャットで通知
  • 31.
    © BIGLOBE Inc.201731 手順書確認や承認もWeb上で
  • 32.
    © BIGLOBE Inc.201732 l運⽤者のみなさま p⾊んなツール使って⾃動化してみませんか? Øいろんなツールを使ってみた 情報共有だけでもすごく参考になります Ø⼩さいことでもOK! p⼀緒に⾊んな壁を乗り越えるためのフィード バックをお互いにしませんか? 皆様にお願い
  • 33.
    © BIGLOBE Inc.201733 lメーカー/ベンダーのみなさま p⾃動化のためのツール/APIを提供して下さい! Ø⾃動化がしやすいのは、選定される基準になります p⾃動化のハードルを下げて欲しい! Ø⾊んな事例の紹介ももっと聞きたいです Ø⾃動化にまつわるAPIのドキュメントも 充実させてほしいです! pOSSに乗ってきて欲しいです ØNapalmに搭載可能なモジュールの提供など 皆様にお願い
  • 34.
    © BIGLOBE Inc.201734 l SmartCS/SmartGSで抽象化してくれませんか? pいつも⼤変お世話になっているSmartCS Ø確実な接続性で信頼してます! ありがとうございます! p更に、各ベンダーの設定や状態取得の抽象化&中間APIが できると最⾼にHappyです! セイコーソリューションズさんへのお願い シナリオ SmartCS ベンダーA ベンダーC ベンダーB 差分吸収 REST API grpc
  • 35.
    © BIGLOBE Inc.201735 l マルチベンダ対応の⾃動化⽀援ライブラリ 「NAPALM」を使って⾃動化してみました p 現実的な⾃社の環境に適⽤できるものができた p 作業省⼒化が可能 l より省⼒化するためにWebGUIでの⼿順書作成⽀援ツールを 作りました l 抽象化レイヤーとしてのSmartCSお願いします! まとめ 一緒に自動化に向けて挑戦して、共有していきませんか? 皆様の共有が業界全体の自動化の歩みを早めます!
  • 36.
    © BIGLOBE Inc.201736 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 最後に