SlideShare a Scribd company logo
1 of 24
Download to read offline
© BIGLOBE Inc. 20161
JSNAPyとPyEZで作る
次世代ネットワークオペレーション
の可能性
BIGLOBE Inc.
Taiji Tsuchiya
© BIGLOBE Inc. 20162
自己紹介
l 土屋 太二(30)
l BIGLOBEバックボーンネットワーク担当
p ASネットワーク(AS2518)の
設計/開発/検証/運用/顧客サポート/営業支援
p ネットワーク運用の自動化システム開発
0% 20% 40% 60% 80% 100%
NW設計/検証
30%
NW運用
40%
サポート
15%
自動化
15%
仕事の割合
© BIGLOBE Inc. 20163
一般的なネットワーク作業フロー
1.  手順書/コンフィグ 作成
2.  手順書/コンフィグ 査閲/承認(2-3名が査閲)
3.  作業実施
1.  ルータログイン
2.  ルータ状態確認
3.  ルータ設定
4.  ルータ状態確認
5.  ネットワーク正常性確認
6.  コンフィグ保存
4.  作業完了報告
© BIGLOBE Inc. 20164
ネットワーク作業自動化のための要件
l 全工程において極力、自動化/省力化
できること
p ただしルータ設定投入可否は
作業者の判断に委ねるかは議論の余地あり
l ネットワーク技術者による
事前レビューが可能であること
l 作業時のログを残せること
© BIGLOBE Inc. 20165
Juniper公式ツールで実現
l PyEZ
p JUNOSルータを設定するPythonライブラリ
Ø ルータへ設定投入および状態取得が可能
Ø JUNOS version11.4以降の利用可能
l JSNAPy
p JUNOSルータの状態管理ツール
Ø 「あるべき状態」を定義し、合否 を判定
Ø スナップショットの取得 / 比較 / チェック を実施
Ø コマンドラインツールとPythonライブラリを保有
https://github.com/Juniper/jsnapy/wiki
https://github.com/Juniper/py-junos-eznc
※JSNAPy最新版v1.0.0は不具合があったので、未リリースのv1.0.1を利用。
pip install git+https://github.com/Juniper/jsnapy.git でダウンロード
※PyEZ最新版v2.0.1を利用。 pip install junos-eznc でダウンロード
© BIGLOBE Inc. 20166
PyEZ: ルータ設定ライブラリ
l 主な機能
l  ルータ設定の投入、読み込み
l  load / commit / commit check / diff / rollback / lock
など手動設定とほぼ同じ機能が利用可能
l  本体情報やARP/ルーティングテーブル情報などの取得
l  OSインストール/シャットダウン/再起動
Router
PyEZ
Server
NETCONF over SSH
open
load config_file
(overload | merge | replace )
diff / commit check
commit / rollback
© BIGLOBE Inc. 20167
set_firefly1_change_hostname.py
from jnpr.junos import Device
from jnpr.junos.utils.config import Config
# ルータとのSSH/NETCONFセッションを確立
dev1 = Device( host=’192.168.0.1’, user=’user1’, password=’password1')
dev1.open()
dev1.bind(cu=Config)
dev1.cu.lock()  # 他セッションから設定されないようにロックをかける
# ルータ設定ファイルを読み込み (この時点では未コミット)
conf_filename = "./change_hostname.conf”
dev1.cu.load(path=conf_filename, format="text", merge=True)
print dev1.cu.diff()         # 設定差分を確認(show | compare 相当)
print dev1.cu.commit_check()  # コミットチェックを実施
dev1.cu.commit() # コミットを実施
dev1.cu.unlock() # ロックを解除
dev1.close() # セッションを切断
PyEZ: サンプルコード(PyEZ関連部分を抜粋)
change_hostname.conf
system {
host-name firefly1_changed_by_PyEZ;
}
© BIGLOBE Inc. 20168
PyEZ: 実行結果
前ページのコードに加えて、
デモ用に進捗状況を表示実装
を追加しています。
© BIGLOBE Inc. 20169
JSNAPy: ルータ状態管理ツール/ライブラリ
p 主な機能
- スナップショットを取得
jsnapy --snap <スナップショット名> -f <定義ファイル>
- 2つのスナップショットの差分状態を比較してチェック
jsnapy --check <スナップショット名1> <スナップショット名2> -f <定義ファイル>
- 取得した時点のスナップショットが、定義した条件を満たすかチェック
jsnapy --snapcheck <スナップショット名> -f <定義ファイル>
Router2 Router1
Routr2 Router1
JSNAPy
Server
JSNAPy
Server
状態1
状態2
状態1のshow interface結果を保存
jsnapy --snap snap01
状態2のshow interface結果を保存
jsnapy --snap snap02
状態1と状態2の差分をチェック
jsnapy --check snap01 snap02
インタフェースがupになっているかチェック
jsnapy --shnapcheck snap01
© BIGLOBE Inc. 201610
JSNAPy: 定義ファイルの例
l ホスト名が「router1_changed_by_PyEZ」か否か確認
test_hostname:
- command: show version
- item:
xpath: /software-information
tests:
- is-equal: host-name, router1_changed_by_PyEZ
info: "Test : OK"
err: "Test : NG"
test_hostname.yml
hosts:
- device: 192.168.0.1
username : user1
passwd: password1
tests:
- ./tests/test_hostname.yml
config_router1.yml
© BIGLOBE Inc. 201611
JSNAPy: コマンドライン実行結果
1 9 2 . 1 6 8 . 0 . 1
1 9 2 . 1 6 8 . 0 . 1
© BIGLOBE Inc. 201612
PyEZ と JSNAPy を使って
ISPネットワーク設定作業を
自動化してみました。
(ご利用の注意)
現時点で、社内で正式に展開しているツールではありません。
社内で頻繁に発生する実作業を想定したシミュレーションです。
「うちで使ってみたけど障害出たぞ!」と申されましても
責任は一切負いかねますので、予めご承知ください。
© BIGLOBE Inc. 201613
ISPの設定作業例: Private Peering
l ASを所有する組織同士が同一DC内で
eBGPによる経路交換を実施する作業
l 手順
p 組織間での交渉/構内配線の手配
p ケーブル配線
p インタフェースの設定
p 疎通確認
p eBGP設定の投入
p 経路広報の確認
p トラフィック変移状態の確認
自動化対象
Router1
(AS65001)
Router2
(AS65000)
経路情報
経路情報
© BIGLOBE Inc. 201614
システム構成
Firefly1Firefly2
PyEZ
ライブラリ
インタフェース設定
eBGP設定
完了済
物理接続 完了済
JSNAPy
ライブラリ
シナリオファイル
シナリオ
実行プログラム
査閲/承認
ネットワーク技術者
(査閲者)
ネットワーク技術者
(作業者)
作成 実行
インタフェース設定 未設定
eBGP設定 未完了
システムとの疎通設定 完了済
•  シナリオファイルを作成
•  作業実施/中止を判断
•  ルータ設定のコミット可否を判断
•  作業手順を記述
•  対象ルータ情報を記述
•  ルータ設定、テストの手順を記述
ルータの設定投入
•  インタフェース設定
•  eBGP設定
ルータ状態の正常性テスト
•  インタフェース状態テスト
•  BGP 状態テスト
•  経路送信テスト
•  経路広告テスト
コミット可否は
作業者が判断
•  シナリオファイルから情報抽出
•  ルータコンフィグの生成
•  テストファイルの生成
•  ルータ設定投入(PyEZ)を実行
•  ルータ状態テスト(JSNAPy)を実行
© BIGLOBE Inc. 201615
シナリオファイル 記述例
purpus: |
本作業は、abc株式会社(AS65002)が
運用するルータと、拠点Xでプライベート
 ピアを構築することを目的としている。
operator: Taiji Tsuchiya
operation_date: 20161115
hosts:
management_ipaddress:192.168.34.16
hostname: firefly1
model: firefly-perimeter
username: user1
password: password1
scenario:
- test_hostname
- test_model
- test_interface:
interface_name: ge-0/0/2
interface_status: down
- set_add_interface:
interface_name: ge-0/0/2
interface_address_ipv4: 192.168.35.1
interface_subnet_ipv4: 30
interface_description: AS65002_peer
- test_interface:
interface_name: ge-0/0/2
interface_status: up
- set_add_bgp_neighbor:
interface_name: ge-0/0/2
neighbor_asnum: 65002
local_asnum: 65001
neighbor_address_ipv4: 192.168.35.2
neighbor_description: AS65002_peer
- test_bgp_neighbor:
neighbor_address_ipv4: 192.168.35.2
neighbor_status: Established
青文字: ルータ状態確認手順
赤文字: ルータ設定変更手順
© BIGLOBE Inc. 201616
コンフィグファイル一例
protocols {
bgp {
family inet {
unicast;
}
group {{ interface_name }} {
type external;
neighbor {{ neighbor_address_ipv4 }} {
description {{ neighbor_description }};
peer-as {{ neighbor_asnum }};
}
}
}
}
- set_add_bgp_neighbor:
interface_name: ge-0/0/2
neighbor_asnum: 65002
local_asnum: 65001
neighbor_address_ipv4: 192.168.35.2
neighbor_description: AS65002_peer
JUNOSルータ
設定変更を実施
テンプレートファイル
テンプレート用パラメータ
(前述のシナリオファイルより抽出)
© BIGLOBE Inc. 201617
実行結果 一部抜粋
緑文字: 正常が確認できている部分
赤文字: 異常が確認できている部分
黄文字: 作業者に判断を委ねている部分
© BIGLOBE Inc. 201618
デモ
https://goo.gl/vR8cEE
© BIGLOBE Inc. 201619
所感 自動化システムについて
l うまくいったポイント
p 2-3時間程度かかる作業が、10分で完了!
p 作業者の負担軽減、手順書作成/査閲を時間短縮
p (Juniperツール充実のおかげで)
実働二週間でここまでできましたJ
l 悩ましいポイント
p YAML形式の手順書を、運用現場に
受け入れてもらえるか。理解と協力が必要。
p マルチベンダー対応も見据えた設計開発が必要。
Juniperツールと同じことが他社APIで実現できるか。
© BIGLOBE Inc. 201620
所感 Juniperツールについて
l PyEZ : ルータ設定ライブラリ
p 手動設定と同様の機能が実現でき、非常に強力
p ドキュメントやサンプルコードも充実
p JUNOS 11.4以降で動作するので導入の敷居が低い
l JSNAPy : ルータ状態管理ツール
p テストを人が読める記述方法で定義できるのは優秀
p プログラムから実行する機能はやや物足りない
Ø 設定ファイルをテンプレート化できない(PyEZは可能)
Ø xpath指定や条件文の記述、テスト結果取得にやや苦労
p ドキュメントが少なく、ノウハウを貯める必要あり
© BIGLOBE Inc. 201621
(Juniperさんに限らず)メーカーさんにお願いしたいこと
l ネットワーク作業を自動化するための
API/便利ツールを提供してください!
p PyEZ、JSNAPyの存在、本当に助かります。
p ネットワーク装置の自動化のしやすさは、
将来的に機器選定基準の一つに十分なりえます。
l 自動化導入のハードルを下げてください!
p ドキュメントの充実
p ユースケースごとのサンプル、Tips公開
p 自動化の導入ケースの紹介
Ø 成功パターン、失敗パターンなど
© BIGLOBE Inc. 201622
コミュニティの皆さんにお願いしたいこと
l 業務自動化にぜひトライしてみてください!
p 小さいことでもOK! 下手くそでもOK!
p オープンソースソフトウェアに貢献できることは
ソフトウェアが書けなくても、たくさんあります。
Ø 使ってみる / バグを知らせる / 利用事例の共有 etc.
l ネットワーク運用自動化の要求/知見/利用事例を
メーカーさんやコミュニティにフィードバックしましょう
© BIGLOBE Inc. 201623
まとめ
l PyEZ: ルータ設定ライブラリ
l JSNAPy: ルータ状態管理ツール/ライブラリ
を使って
ISPネットワーク設定作業を自動化してみました。
本発表をきっかけに、みなさまの職場で
自動化への挑戦がたくさん出てくることを
心から楽しみにしています。
© BIGLOBE Inc. 201624
ご参考
l 本日の詳細内容をブログで紹介しています。
http://qiita.com/items/065eef08f7b673cb7bb6
l 発表で使ったすべてのプログラムを公開しています。
p PyEZ利用例:   https://github.com/taijiji/sample_pyez
p JSNAPy利用例: https://github.com/taijiji/sample_jsnapy
p ISP作業自動化デモ: https://github.com/taijiji/scenarioJUNOS
l ネットワーク運用自動化勉強会 NetOpsCoding
で紹介した自動化事例もご参照ください
p まとめページ https://github.com/netops-coding/netops-tips/wiki
p NetOpsCoding AdventCalendar2016
http://qiita.com/advent-calendar/2016/netopscoding

More Related Content

What's hot

What's hot (20)

Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
 
インターネットの舞台裏
インターネットの舞台裏インターネットの舞台裏
インターネットの舞台裏
 
IPv6マルチプレフィックスの話
IPv6マルチプレフィックスの話IPv6マルチプレフィックスの話
IPv6マルチプレフィックスの話
 
Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)
 
Wakamonog6 “ISPのネットワーク”って どんなネットワーク?
Wakamonog6 “ISPのネットワーク”って どんなネットワーク?Wakamonog6 “ISPのネットワーク”って どんなネットワーク?
Wakamonog6 “ISPのネットワーク”って どんなネットワーク?
 
ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編
ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編
ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編
 
ISPの向こう側、どうなってますか
ISPの向こう側、どうなってますかISPの向こう側、どうなってますか
ISPの向こう側、どうなってますか
 
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
 
閉域網接続の技術入門
閉域網接続の技術入門閉域網接続の技術入門
閉域網接続の技術入門
 
L2延伸を利用したクラウド移行とクラウド活用術
L2延伸を利用したクラウド移行とクラウド活用術L2延伸を利用したクラウド移行とクラウド活用術
L2延伸を利用したクラウド移行とクラウド活用術
 
ルーティングチュートリアル - AS間経路制御
ルーティングチュートリアル - AS間経路制御ルーティングチュートリアル - AS間経路制御
ルーティングチュートリアル - AS間経路制御
 
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
ネットワーク自動化ツール紹介(Ansible・NAPALM編)ネットワーク自動化ツール紹介(Ansible・NAPALM編)
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
 
自宅インフラの育て方 第2回
自宅インフラの育て方 第2回自宅インフラの育て方 第2回
自宅インフラの育て方 第2回
 
インフラ刷新プロジェクト「Neco」が目指す最高のクラウドとは
インフラ刷新プロジェクト「Neco」が目指す最高のクラウドとはインフラ刷新プロジェクト「Neco」が目指す最高のクラウドとは
インフラ刷新プロジェクト「Neco」が目指す最高のクラウドとは
 
545人のインフラを支えたNOCチーム!
545人のインフラを支えたNOCチーム!545人のインフラを支えたNOCチーム!
545人のインフラを支えたNOCチーム!
 
無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
 
IIJmio meeting 12 災害とMVNO (ETWS動作検証)
IIJmio meeting 12 災害とMVNO (ETWS動作検証)IIJmio meeting 12 災害とMVNO (ETWS動作検証)
IIJmio meeting 12 災害とMVNO (ETWS動作検証)
 
Webサイトの分析と改善の方法(後編)
Webサイトの分析と改善の方法(後編)Webサイトの分析と改善の方法(後編)
Webサイトの分析と改善の方法(後編)
 
自宅サーバーの世界へようこそ LT版
自宅サーバーの世界へようこそ LT版自宅サーバーの世界へようこそ LT版
自宅サーバーの世界へようこそ LT版
 

Viewers also liked

ネットワーク運用自動化の実際〜現場で使われているツールを調査してみた〜
ネットワーク運用自動化の実際〜現場で使われているツールを調査してみた〜ネットワーク運用自動化の実際〜現場で使われているツールを調査してみた〜
ネットワーク運用自動化の実際〜現場で使われているツールを調査してみた〜
Taiji Tsuchiya
 

Viewers also liked (20)

ネットワーク運用自動化の実際〜現場で使われているツールを調査してみた〜
ネットワーク運用自動化の実際〜現場で使われているツールを調査してみた〜ネットワーク運用自動化の実際〜現場で使われているツールを調査してみた〜
ネットワーク運用自動化の実際〜現場で使われているツールを調査してみた〜
 
Introduction to NetOpsCoding#3
Introduction to NetOpsCoding#3Introduction to NetOpsCoding#3
Introduction to NetOpsCoding#3
 
Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2
 
クラウド型データセンタにおけるSDNの適用事例
クラウド型データセンタにおけるSDNの適用事例クラウド型データセンタにおけるSDNの適用事例
クラウド型データセンタにおけるSDNの適用事例
 
教えて前村先生
教えて前村先生教えて前村先生
教えて前村先生
 
ネットワーク運用自動化のためのサービス・運用設計
ネットワーク運用自動化のためのサービス・運用設計ネットワーク運用自動化のためのサービス・運用設計
ネットワーク運用自動化のためのサービス・運用設計
 
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱構成情報データベースをGitで管理したいネットワーク運用者の憂鬱
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱
 
Introduction to NetOpsCoding
Introduction to NetOpsCodingIntroduction to NetOpsCoding
Introduction to NetOpsCoding
 
NetOps Coding#1 のお知らせ
NetOps Coding#1 のお知らせNetOps Coding#1 のお知らせ
NetOps Coding#1 のお知らせ
 
BMP Test Results
BMP Test ResultsBMP Test Results
BMP Test Results
 
そろそろSSH/Telnetを離れて自動化したい
そろそろSSH/Telnetを離れて自動化したいそろそろSSH/Telnetを離れて自動化したい
そろそろSSH/Telnetを離れて自動化したい
 
wakamonog update 2015
wakamonog update 2015wakamonog update 2015
wakamonog update 2015
 
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
スマホのセンサーでネットワークを操る  ~Ansible TowerによるレガシーNW機器のAPI化~スマホのセンサーでネットワークを操る  ~Ansible TowerによるレガシーNW機器のAPI化~
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
 
なぜネットワーク運用自動化が進まないのか Whitebox switch編
なぜネットワーク運用自動化が進まないのか Whitebox switch編なぜネットワーク運用自動化が進まないのか Whitebox switch編
なぜネットワーク運用自動化が進まないのか Whitebox switch編
 
第1回 ネットワーク図について語る会 2015-08-27
第1回 ネットワーク図について語る会  2015-08-27第1回 ネットワーク図について語る会  2015-08-27
第1回 ネットワーク図について語る会 2015-08-27
 
Net opscoding#4発表資料
Net opscoding#4発表資料Net opscoding#4発表資料
Net opscoding#4発表資料
 
20161129_npstudy_JunosAutomation
20161129_npstudy_JunosAutomation20161129_npstudy_JunosAutomation
20161129_npstudy_JunosAutomation
 
誰にでも分かる「IPネットワーク」の図の描き方がない!?
誰にでも分かる「IPネットワーク」の図の描き方がない!?誰にでも分かる「IPネットワーク」の図の描き方がない!?
誰にでも分かる「IPネットワーク」の図の描き方がない!?
 
ITエンジニアのための英語勉強法
ITエンジニアのための英語勉強法ITエンジニアのための英語勉強法
ITエンジニアのための英語勉強法
 
ISPネットワーク運用で覗いてるもの
ISPネットワーク運用で覗いてるものISPネットワーク運用で覗いてるもの
ISPネットワーク運用で覗いてるもの
 

Similar to JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性

#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
Abe Junichiro
 
事例でわかるBIGLOBEクラウドホスティング
事例でわかるBIGLOBEクラウドホスティング事例でわかるBIGLOBEクラウドホスティング
事例でわかるBIGLOBEクラウドホスティング
ビジネスBIGLOBE
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
 

Similar to JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性 (20)

2014-01-28 Operation in the future
2014-01-28 Operation in the future2014-01-28 Operation in the future
2014-01-28 Operation in the future
 
Hueによる分析業務の改善事例
Hueによる分析業務の改善事例Hueによる分析業務の改善事例
Hueによる分析業務の改善事例
 
SIプロジェクトでのインフラ自動化の事例 (第1回 Puppetユーザ会 発表資料)
SIプロジェクトでのインフラ自動化の事例 (第1回 Puppetユーザ会 発表資料)SIプロジェクトでのインフラ自動化の事例 (第1回 Puppetユーザ会 発表資料)
SIプロジェクトでのインフラ自動化の事例 (第1回 Puppetユーザ会 発表資料)
 
OpManager導入事例 日テレITプロデュース様
OpManager導入事例 日テレITプロデュース様OpManager導入事例 日テレITプロデュース様
OpManager導入事例 日テレITプロデュース様
 
Juniper+ansible ネットワーク自動化の今と今後
Juniper+ansible ネットワーク自動化の今と今後Juniper+ansible ネットワーク自動化の今と今後
Juniper+ansible ネットワーク自動化の今と今後
 
運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用
 
巨大ポータルを支えるプライベート・クラウド構築事例から学べ!~攻める情シスのためのインフラ構築、その極意とは?~
巨大ポータルを支えるプライベート・クラウド構築事例から学べ!~攻める情シスのためのインフラ構築、その極意とは?~巨大ポータルを支えるプライベート・クラウド構築事例から学べ!~攻める情シスのためのインフラ構築、その極意とは?~
巨大ポータルを支えるプライベート・クラウド構築事例から学べ!~攻める情シスのためのインフラ構築、その極意とは?~
 
100GbE NICを使ったデータセンター・ネットワーク実証実験 -メモ-
100GbE NICを使ったデータセンター・ネットワーク実証実験 -メモ- 100GbE NICを使ったデータセンター・ネットワーク実証実験 -メモ-
100GbE NICを使ったデータセンター・ネットワーク実証実験 -メモ-
 
ニフティクラウドアップデート in クラウドごった煮@青森
ニフティクラウドアップデート in クラウドごった煮@青森ニフティクラウドアップデート in クラウドごった煮@青森
ニフティクラウドアップデート in クラウドごった煮@青森
 
Zabbixをもっと便利に!安全に!
Zabbixをもっと便利に!安全に!Zabbixをもっと便利に!安全に!
Zabbixをもっと便利に!安全に!
 
【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパー
【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパー【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパー
【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパー
 
IoTのビジネスをデバイス・ゲートウェイから見てみる / Develpers.IO 2016
IoTのビジネスをデバイス・ゲートウェイから見てみる / Develpers.IO 2016IoTのビジネスをデバイス・ゲートウェイから見てみる / Develpers.IO 2016
IoTのビジネスをデバイス・ゲートウェイから見てみる / Develpers.IO 2016
 
クラウド時代を生き残る経営戦略策定のススメ「クラウドは敵か?味方か?」(山口・岡山)
クラウド時代を生き残る経営戦略策定のススメ「クラウドは敵か?味方か?」(山口・岡山)クラウド時代を生き残る経営戦略策定のススメ「クラウドは敵か?味方か?」(山口・岡山)
クラウド時代を生き残る経営戦略策定のススメ「クラウドは敵か?味方か?」(山口・岡山)
 
オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介
オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介
オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介
 
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
#cross2012 クラウドCROSS ニフティの中の人によるニフティクラウド活用
 
事例でわかるBIGLOBEクラウドホスティング
事例でわかるBIGLOBEクラウドホスティング事例でわかるBIGLOBEクラウドホスティング
事例でわかるBIGLOBEクラウドホスティング
 
IIJmio meeting 10 端末の動作確認(後編)
IIJmio meeting 10 端末の動作確認(後編)IIJmio meeting 10 端末の動作確認(後編)
IIJmio meeting 10 端末の動作確認(後編)
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
第1回 cybozu.com カンファレンス 基調講演
第1回 cybozu.com カンファレンス 基調講演第1回 cybozu.com カンファレンス 基調講演
第1回 cybozu.com カンファレンス 基調講演
 
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
 

More from Taiji Tsuchiya

ネットワークエンジニア x YouTuberへの挑戦 〜エンジニアスキルを副業ビジネス化するための選択肢〜
ネットワークエンジニア x YouTuberへの挑戦 〜エンジニアスキルを副業ビジネス化するための選択肢〜ネットワークエンジニア x YouTuberへの挑戦 〜エンジニアスキルを副業ビジネス化するための選択肢〜
ネットワークエンジニア x YouTuberへの挑戦 〜エンジニアスキルを副業ビジネス化するための選択肢〜
Taiji Tsuchiya
 
Changing Infrastructure operation by DevOps And Agile Development
Changing Infrastructure operation by DevOps And Agile DevelopmentChanging Infrastructure operation by DevOps And Agile Development
Changing Infrastructure operation by DevOps And Agile Development
Taiji Tsuchiya
 
Janog33説明会20130820
Janog33説明会20130820Janog33説明会20130820
Janog33説明会20130820
Taiji Tsuchiya
 

More from Taiji Tsuchiya (9)

未経験者から世界と渡り合うネットワークエンジニアになるためのキャリア設計術
未経験者から世界と渡り合うネットワークエンジニアになるためのキャリア設計術未経験者から世界と渡り合うネットワークエンジニアになるためのキャリア設計術
未経験者から世界と渡り合うネットワークエンジニアになるためのキャリア設計術
 
ネットワークエンジニアがyou tuberやってみた結果
ネットワークエンジニアがyou tuberやってみた結果ネットワークエンジニアがyou tuberやってみた結果
ネットワークエンジニアがyou tuberやってみた結果
 
ネットワークエンジニア x YouTuberへの挑戦 〜エンジニアスキルを副業ビジネス化するための選択肢〜
ネットワークエンジニア x YouTuberへの挑戦 〜エンジニアスキルを副業ビジネス化するための選択肢〜ネットワークエンジニア x YouTuberへの挑戦 〜エンジニアスキルを副業ビジネス化するための選択肢〜
ネットワークエンジニア x YouTuberへの挑戦 〜エンジニアスキルを副業ビジネス化するための選択肢〜
 
NetOpsCoding#5 introduction
NetOpsCoding#5 introductionNetOpsCoding#5 introduction
NetOpsCoding#5 introduction
 
Changing Infrastructure operation by DevOps And Agile Development
Changing Infrastructure operation by DevOps And Agile DevelopmentChanging Infrastructure operation by DevOps And Agile Development
Changing Infrastructure operation by DevOps And Agile Development
 
クラウド型データセンタにおけるSDNの適用事例(Paper)  Case Studies of SDN in Cloud Datacenter
クラウド型データセンタにおけるSDNの適用事例(Paper)  Case Studies of SDN in Cloud Datacenterクラウド型データセンタにおけるSDNの適用事例(Paper)  Case Studies of SDN in Cloud Datacenter
クラウド型データセンタにおけるSDNの適用事例(Paper)  Case Studies of SDN in Cloud Datacenter
 
"運用"におけるイノベーションを考える
"運用"におけるイノベーションを考える"運用"におけるイノベーションを考える
"運用"におけるイノベーションを考える
 
BMP共同検証
BMP共同検証BMP共同検証
BMP共同検証
 
Janog33説明会20130820
Janog33説明会20130820Janog33説明会20130820
Janog33説明会20130820
 

Recently uploaded

Recently uploaded (12)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性

  • 1. © BIGLOBE Inc. 20161 JSNAPyとPyEZで作る 次世代ネットワークオペレーション の可能性 BIGLOBE Inc. Taiji Tsuchiya
  • 2. © BIGLOBE Inc. 20162 自己紹介 l 土屋 太二(30) l BIGLOBEバックボーンネットワーク担当 p ASネットワーク(AS2518)の 設計/開発/検証/運用/顧客サポート/営業支援 p ネットワーク運用の自動化システム開発 0% 20% 40% 60% 80% 100% NW設計/検証 30% NW運用 40% サポート 15% 自動化 15% 仕事の割合
  • 3. © BIGLOBE Inc. 20163 一般的なネットワーク作業フロー 1.  手順書/コンフィグ 作成 2.  手順書/コンフィグ 査閲/承認(2-3名が査閲) 3.  作業実施 1.  ルータログイン 2.  ルータ状態確認 3.  ルータ設定 4.  ルータ状態確認 5.  ネットワーク正常性確認 6.  コンフィグ保存 4.  作業完了報告
  • 4. © BIGLOBE Inc. 20164 ネットワーク作業自動化のための要件 l 全工程において極力、自動化/省力化 できること p ただしルータ設定投入可否は 作業者の判断に委ねるかは議論の余地あり l ネットワーク技術者による 事前レビューが可能であること l 作業時のログを残せること
  • 5. © BIGLOBE Inc. 20165 Juniper公式ツールで実現 l PyEZ p JUNOSルータを設定するPythonライブラリ Ø ルータへ設定投入および状態取得が可能 Ø JUNOS version11.4以降の利用可能 l JSNAPy p JUNOSルータの状態管理ツール Ø 「あるべき状態」を定義し、合否 を判定 Ø スナップショットの取得 / 比較 / チェック を実施 Ø コマンドラインツールとPythonライブラリを保有 https://github.com/Juniper/jsnapy/wiki https://github.com/Juniper/py-junos-eznc ※JSNAPy最新版v1.0.0は不具合があったので、未リリースのv1.0.1を利用。 pip install git+https://github.com/Juniper/jsnapy.git でダウンロード ※PyEZ最新版v2.0.1を利用。 pip install junos-eznc でダウンロード
  • 6. © BIGLOBE Inc. 20166 PyEZ: ルータ設定ライブラリ l 主な機能 l  ルータ設定の投入、読み込み l  load / commit / commit check / diff / rollback / lock など手動設定とほぼ同じ機能が利用可能 l  本体情報やARP/ルーティングテーブル情報などの取得 l  OSインストール/シャットダウン/再起動 Router PyEZ Server NETCONF over SSH open load config_file (overload | merge | replace ) diff / commit check commit / rollback
  • 7. © BIGLOBE Inc. 20167 set_firefly1_change_hostname.py from jnpr.junos import Device from jnpr.junos.utils.config import Config # ルータとのSSH/NETCONFセッションを確立 dev1 = Device( host=’192.168.0.1’, user=’user1’, password=’password1') dev1.open() dev1.bind(cu=Config) dev1.cu.lock()  # 他セッションから設定されないようにロックをかける # ルータ設定ファイルを読み込み (この時点では未コミット) conf_filename = "./change_hostname.conf” dev1.cu.load(path=conf_filename, format="text", merge=True) print dev1.cu.diff()         # 設定差分を確認(show | compare 相当) print dev1.cu.commit_check()  # コミットチェックを実施 dev1.cu.commit() # コミットを実施 dev1.cu.unlock() # ロックを解除 dev1.close() # セッションを切断 PyEZ: サンプルコード(PyEZ関連部分を抜粋) change_hostname.conf system { host-name firefly1_changed_by_PyEZ; }
  • 8. © BIGLOBE Inc. 20168 PyEZ: 実行結果 前ページのコードに加えて、 デモ用に進捗状況を表示実装 を追加しています。
  • 9. © BIGLOBE Inc. 20169 JSNAPy: ルータ状態管理ツール/ライブラリ p 主な機能 - スナップショットを取得 jsnapy --snap <スナップショット名> -f <定義ファイル> - 2つのスナップショットの差分状態を比較してチェック jsnapy --check <スナップショット名1> <スナップショット名2> -f <定義ファイル> - 取得した時点のスナップショットが、定義した条件を満たすかチェック jsnapy --snapcheck <スナップショット名> -f <定義ファイル> Router2 Router1 Routr2 Router1 JSNAPy Server JSNAPy Server 状態1 状態2 状態1のshow interface結果を保存 jsnapy --snap snap01 状態2のshow interface結果を保存 jsnapy --snap snap02 状態1と状態2の差分をチェック jsnapy --check snap01 snap02 インタフェースがupになっているかチェック jsnapy --shnapcheck snap01
  • 10. © BIGLOBE Inc. 201610 JSNAPy: 定義ファイルの例 l ホスト名が「router1_changed_by_PyEZ」か否か確認 test_hostname: - command: show version - item: xpath: /software-information tests: - is-equal: host-name, router1_changed_by_PyEZ info: "Test : OK" err: "Test : NG" test_hostname.yml hosts: - device: 192.168.0.1 username : user1 passwd: password1 tests: - ./tests/test_hostname.yml config_router1.yml
  • 11. © BIGLOBE Inc. 201611 JSNAPy: コマンドライン実行結果 1 9 2 . 1 6 8 . 0 . 1 1 9 2 . 1 6 8 . 0 . 1
  • 12. © BIGLOBE Inc. 201612 PyEZ と JSNAPy を使って ISPネットワーク設定作業を 自動化してみました。 (ご利用の注意) 現時点で、社内で正式に展開しているツールではありません。 社内で頻繁に発生する実作業を想定したシミュレーションです。 「うちで使ってみたけど障害出たぞ!」と申されましても 責任は一切負いかねますので、予めご承知ください。
  • 13. © BIGLOBE Inc. 201613 ISPの設定作業例: Private Peering l ASを所有する組織同士が同一DC内で eBGPによる経路交換を実施する作業 l 手順 p 組織間での交渉/構内配線の手配 p ケーブル配線 p インタフェースの設定 p 疎通確認 p eBGP設定の投入 p 経路広報の確認 p トラフィック変移状態の確認 自動化対象 Router1 (AS65001) Router2 (AS65000) 経路情報 経路情報
  • 14. © BIGLOBE Inc. 201614 システム構成 Firefly1Firefly2 PyEZ ライブラリ インタフェース設定 eBGP設定 完了済 物理接続 完了済 JSNAPy ライブラリ シナリオファイル シナリオ 実行プログラム 査閲/承認 ネットワーク技術者 (査閲者) ネットワーク技術者 (作業者) 作成 実行 インタフェース設定 未設定 eBGP設定 未完了 システムとの疎通設定 完了済 •  シナリオファイルを作成 •  作業実施/中止を判断 •  ルータ設定のコミット可否を判断 •  作業手順を記述 •  対象ルータ情報を記述 •  ルータ設定、テストの手順を記述 ルータの設定投入 •  インタフェース設定 •  eBGP設定 ルータ状態の正常性テスト •  インタフェース状態テスト •  BGP 状態テスト •  経路送信テスト •  経路広告テスト コミット可否は 作業者が判断 •  シナリオファイルから情報抽出 •  ルータコンフィグの生成 •  テストファイルの生成 •  ルータ設定投入(PyEZ)を実行 •  ルータ状態テスト(JSNAPy)を実行
  • 15. © BIGLOBE Inc. 201615 シナリオファイル 記述例 purpus: | 本作業は、abc株式会社(AS65002)が 運用するルータと、拠点Xでプライベート  ピアを構築することを目的としている。 operator: Taiji Tsuchiya operation_date: 20161115 hosts: management_ipaddress:192.168.34.16 hostname: firefly1 model: firefly-perimeter username: user1 password: password1 scenario: - test_hostname - test_model - test_interface: interface_name: ge-0/0/2 interface_status: down - set_add_interface: interface_name: ge-0/0/2 interface_address_ipv4: 192.168.35.1 interface_subnet_ipv4: 30 interface_description: AS65002_peer - test_interface: interface_name: ge-0/0/2 interface_status: up - set_add_bgp_neighbor: interface_name: ge-0/0/2 neighbor_asnum: 65002 local_asnum: 65001 neighbor_address_ipv4: 192.168.35.2 neighbor_description: AS65002_peer - test_bgp_neighbor: neighbor_address_ipv4: 192.168.35.2 neighbor_status: Established 青文字: ルータ状態確認手順 赤文字: ルータ設定変更手順
  • 16. © BIGLOBE Inc. 201616 コンフィグファイル一例 protocols { bgp { family inet { unicast; } group {{ interface_name }} { type external; neighbor {{ neighbor_address_ipv4 }} { description {{ neighbor_description }}; peer-as {{ neighbor_asnum }}; } } } } - set_add_bgp_neighbor: interface_name: ge-0/0/2 neighbor_asnum: 65002 local_asnum: 65001 neighbor_address_ipv4: 192.168.35.2 neighbor_description: AS65002_peer JUNOSルータ 設定変更を実施 テンプレートファイル テンプレート用パラメータ (前述のシナリオファイルより抽出)
  • 17. © BIGLOBE Inc. 201617 実行結果 一部抜粋 緑文字: 正常が確認できている部分 赤文字: 異常が確認できている部分 黄文字: 作業者に判断を委ねている部分
  • 18. © BIGLOBE Inc. 201618 デモ https://goo.gl/vR8cEE
  • 19. © BIGLOBE Inc. 201619 所感 自動化システムについて l うまくいったポイント p 2-3時間程度かかる作業が、10分で完了! p 作業者の負担軽減、手順書作成/査閲を時間短縮 p (Juniperツール充実のおかげで) 実働二週間でここまでできましたJ l 悩ましいポイント p YAML形式の手順書を、運用現場に 受け入れてもらえるか。理解と協力が必要。 p マルチベンダー対応も見据えた設計開発が必要。 Juniperツールと同じことが他社APIで実現できるか。
  • 20. © BIGLOBE Inc. 201620 所感 Juniperツールについて l PyEZ : ルータ設定ライブラリ p 手動設定と同様の機能が実現でき、非常に強力 p ドキュメントやサンプルコードも充実 p JUNOS 11.4以降で動作するので導入の敷居が低い l JSNAPy : ルータ状態管理ツール p テストを人が読める記述方法で定義できるのは優秀 p プログラムから実行する機能はやや物足りない Ø 設定ファイルをテンプレート化できない(PyEZは可能) Ø xpath指定や条件文の記述、テスト結果取得にやや苦労 p ドキュメントが少なく、ノウハウを貯める必要あり
  • 21. © BIGLOBE Inc. 201621 (Juniperさんに限らず)メーカーさんにお願いしたいこと l ネットワーク作業を自動化するための API/便利ツールを提供してください! p PyEZ、JSNAPyの存在、本当に助かります。 p ネットワーク装置の自動化のしやすさは、 将来的に機器選定基準の一つに十分なりえます。 l 自動化導入のハードルを下げてください! p ドキュメントの充実 p ユースケースごとのサンプル、Tips公開 p 自動化の導入ケースの紹介 Ø 成功パターン、失敗パターンなど
  • 22. © BIGLOBE Inc. 201622 コミュニティの皆さんにお願いしたいこと l 業務自動化にぜひトライしてみてください! p 小さいことでもOK! 下手くそでもOK! p オープンソースソフトウェアに貢献できることは ソフトウェアが書けなくても、たくさんあります。 Ø 使ってみる / バグを知らせる / 利用事例の共有 etc. l ネットワーク運用自動化の要求/知見/利用事例を メーカーさんやコミュニティにフィードバックしましょう
  • 23. © BIGLOBE Inc. 201623 まとめ l PyEZ: ルータ設定ライブラリ l JSNAPy: ルータ状態管理ツール/ライブラリ を使って ISPネットワーク設定作業を自動化してみました。 本発表をきっかけに、みなさまの職場で 自動化への挑戦がたくさん出てくることを 心から楽しみにしています。
  • 24. © BIGLOBE Inc. 201624 ご参考 l 本日の詳細内容をブログで紹介しています。 http://qiita.com/items/065eef08f7b673cb7bb6 l 発表で使ったすべてのプログラムを公開しています。 p PyEZ利用例:   https://github.com/taijiji/sample_pyez p JSNAPy利用例: https://github.com/taijiji/sample_jsnapy p ISP作業自動化デモ: https://github.com/taijiji/scenarioJUNOS l ネットワーク運用自動化勉強会 NetOpsCoding で紹介した自動化事例もご参照ください p まとめページ https://github.com/netops-coding/netops-tips/wiki p NetOpsCoding AdventCalendar2016 http://qiita.com/advent-calendar/2016/netopscoding