SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
株式会社 エーピーコミュニケーションズ
技術開発部 自動化グループ
横地 晃
2019/10/16
AP TECH FEST
NW自動化的に
2
はじめに
 ネットワーク機器の操作手段は CLI が主流
 RESTCONF は全く別のアプローチ
 自動化的に、何が嬉しくなるのか考えてみた
※ The CLI is dead とは思っていません
※ Cisco IOS XE 16.11.1 での検証です
※ 私自身はこの分野は調査中の段階です
自動化?
プログラマビリティ? 操作性?
自己紹介
3
名前 横地 晃
所属 株式会社エーピーコミュニケーションズ 自動化グループ
業務 ネットワーク自動化サービス関連
@akira6592
執筆など
 Ansible実践ガイド 第3版
 Software Design 2018年12月号 Ansible 特集
 技術ブログ(てくなべ)
2019年10月18日
第3版発売
ネットワーク対応も追加
4
RESTCONF とは
RESTCONF とは(概要)
5
 REST ベースでネットワーク機器を操作する
規格(RFC8040、2017年)
 データモデリング言語として YANG を利用
ネットワーク機器
HTTP(S)
REST
(GET/POST/PUT/PATCH/DELETE)
ライブラリ・ツールなど
{ }YANG YANG
他の規格との比較
6
規格 トランスポート データモデル
データ
フォーマット
CLI SSH/TELNET 独自 独自*1
NETCONF SSH YANG/独自 XML
RESTCONF HTTP(S) YANG JSON/XML
(*1) CLI で JSON や XML 出力できる機器もある
実行例:RESTCONF による情報取得
7
$ curl -k -X GET https://rt01/restconf/data/ietf-interfaces:interfaces-state/interface ¥
-H 'Content-Type: application/yang-data+json' ¥
-H 'Accept: application/yang-data+json' ¥
-u 'testuser:testpassword'
curl で、インターフェース状態を取得する例
GET したい情報のパスなどを指定
実行例:RESTCONF による情報取得
8
$ curl -k -X GET https://rt01/restconf/data/ietf-interfaces:interfaces-state/interface ¥
-H 'Content-Type: application/yang-data+json' ¥
-H 'Accept: application/yang-data+json' ¥
-u 'testuser:testpassword'
curl で、インターフェース状態を取得する例
{
"ietf-interfaces:interface": [
{
"name": "GigabitEthernet1",
"type": "iana-if-type:ethernetCsmacd",
"admin-status": "up",
"oper-status": "up",
"last-change": "2019-10-09T17:47:36.000747+00:00",
"if-index": 1,
"phys-address": "00:50:56:xx:xx:xx",
"speed": "1024000000",
"statistics": {
"discontinuity-time": "2019-10-09T17:46:12.000538+00:00",
"in-octets": "75804004962",
"in-unicast-pkts": "101030500",
"in-broadcast-pkts": "0",
"in-multicast-pkts": "0",
…(略)…
GET したい情報のパスなどを指定
JSON で返ってくる
9
RESTCONF は何が嬉しいのか
1. 対応ツールが多い
2. 構造化データでやりとりできる
3. モデル駆動で操作できる
以降、一つずつ説明します
{ }
10
対応ツールが多い
嬉しいことその 1
対応ツールが多い
11
 HTTP を扱う汎用的なものでOK
◦ 各プログラミング言語の HTTP クライアントライブラリ
(Python の requests など)
◦ curl コマンド
◦ Ansible の uri、restconf_* モジュール
◦ など
 CLI でつらいのは・・
◦ 専用ツールやライブラリのみで、やや限定的(Ansible、netmiko、NAPALM など)
HTTP を
しゃべれれば基本OK
etc.
12
構造化データ
{ }
嬉しいことその 2
構造化データでやりとりできる
13
 JSON、XML を利用する
◦ プログラマビリティが高く、自動化しやすい
 CLI でつらいのは・・
◦ 正規表現やテンプレートを駆使、またはパーサー(TextFSM、Genie Parser など)が必要
{
"Cisco-IOS-XE-ntp:server-list": [
{
"ip-address": "10.0.0.1"
},
{
"ip-address": "10.0.0.2"
}
]
}
参照 NTP サーバーの設定をJSONで取得した例
14
モデル駆動
嬉しいことその 3
モデル駆動
15
 YANG で定義されたモデルに基づいて操作
◦ CLI でやりずらかった操作ができる
z z
16
「モデル駆動」は色々な側面がありますが、一例をご紹介
どゆこと?
CLI の場合(参照 NTP サーバー変更の例)
17
ntp server 10.0.0.1
ntp server 10.0.0.8
ntp server 10.0.0.9
ntp server 10.0.0.1
ntp server 10.0.0.2
ntp server 10.0.0.3
Before After
CLI の場合
何をすればよい?
CLI の場合(参照 NTP サーバー変更の例)
18
ntp server 10.0.0.1
ntp server 10.0.0.8
ntp server 10.0.0.9
ntp server 10.0.0.1
ntp server 10.0.0.2
ntp server 10.0.0.3
Before After
sw1(config)# no ntp server 10.0.0.2
sw1(config)# no ntp server 10.0.0.3
sw1(config)# ntp server 10.0.0.8
sw1(config)# ntp server 10.0.0.9
操作する側が
追加、削除を
意識する必要がある
・操作とデータが混在
・自動化しにくい
・どうせなら他のことに頭を使いたい
コマンド実行内容
RESTCONF の場合(参照 NTP サーバー変更の例)
19
ntp server 10.0.0.1
ntp server 10.0.0.8
ntp server 10.0.0.9
ntp server 10.0.0.1
ntp server 10.0.0.2
ntp server 10.0.0.3
Before After
RESTCONF の場合
何をすればよい?
RESTCONF の場合(参照 NTP サーバー変更の例)
20
ntp server 10.0.0.1
ntp server 10.0.0.8
ntp server 10.0.0.9
ntp server 10.0.0.1
ntp server 10.0.0.2
ntp server 10.0.0.3
Before After
{
"Cisco-IOS-XE-ntp:server": {
"server-list": [
{"ip-address": "10.0.0.1"},
{"ip-address": "10.0.0.8"},
{"ip-address": "10.0.0.9"}
]
}
}
操作する側が
追加、削除を
意識する必要がない
・操作とデータが分離!
・あるべき状態を PUT するだけ!
・自動化しやすい!
※ あくまで一例。すべての設定がこのようにできるとは限らない
PUT する body
21
まとめ
まとめ
22
 RESTCONF は REST でネットワーク機器
を操作する規格、データモデリングはYANG
 対応ツールが多い (HTTPをしゃべれれば基本OK)
 構造化データでやりとりできる (JSON/XML)
 モデル駆動で操作できる
お使いの機器が RESTCONF に対応しているか確認してみてください。
そして、CLI がつらくなったら RESTCONF のことを思い出してください。
(まだ YANG ファイルの見方に慣れずに使いこなせません・・)
参考
23
 サイト
◦ Cisco IOS XE Everest 16.6.x プログラマビリティ コンフィギュレーション ガイド
◦ https://www.cisco.com/c/ja_jp/td/docs/ios-
xml/ios/prog/configuration/166/b_166_programmability_cg/b_166_programmability_cg_chapter_01011.html
◦ Cisco DevNet Learning Labs - Exploring IOS XE YANG Data Models with RESTCONF
◦ https://developer.cisco.com/learning/lab/intro-restconf/step/1
◦ Automating Your Network Operations, Part 3 – Data-Driven Ansible
◦ https://blogs.cisco.com/developer/automating-network-operations-3
◦ JANOG36 NETCONF/YANG
◦ https://www.janog.gr.jp/meeting/janog36/program/netconf
◦ データモデリング言語 YANG を活用した マルチベンダネットワーク制御
◦ http://onic.jp/archive/2017/_cms/wp-content/uploads/2017/11/cisco.pdf
◦ restconf_config モジュールで Cisco IOS XE のSyslogサーバー設定追加・削除してみる
◦ https://tekunabe.hatenablog.jp/entry/2019/09/09/ansible_restconf_config_ios
 書籍
◦ Network Programmability with YANG
◦ https://www.amazon.co.jp/dp/0135180392
 試してみたい方へ
◦ Cisco DevNet SandBox (オンラインのラボ環境)
◦ https://devnetsandbox.cisco.com/RM/Topology
◦ ちょっとした情報取得なら予約なしの「IOS XE on CSR Latest Code Always On」がおすすめ

Más contenido relacionado

La actualidad más candente

ネットワークエンジニアはどこでウデマエをみがくのか?
ネットワークエンジニアはどこでウデマエをみがくのか?ネットワークエンジニアはどこでウデマエをみがくのか?
ネットワークエンジニアはどこでウデマエをみがくのか?
Yuya Rin
 

La actualidad más candente (20)

閉域網接続の技術入門
閉域網接続の技術入門閉域網接続の技術入門
閉域網接続の技術入門
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
 
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
エンジニアのためのOSSライセンス管理~OSS管理ツールの池の水全部抜く~
 
インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造
 
大規模DCのネットワークデザイン
大規模DCのネットワークデザイン大規模DCのネットワークデザイン
大規模DCのネットワークデザイン
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
ネットワークエンジニアはどこでウデマエをみがくのか?
ネットワークエンジニアはどこでウデマエをみがくのか?ネットワークエンジニアはどこでウデマエをみがくのか?
ネットワークエンジニアはどこでウデマエをみがくのか?
 
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
 
BGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたBGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみた
 
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌
 
Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...
Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...
Spanner から GKE、Spinnaker、そして SRE まで、コロプラが今挑戦していること[Google Cloud INSIDE Games ...
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
NW入門
NW入門NW入門
NW入門
 
地理分散DBについて
地理分散DBについて地理分散DBについて
地理分散DBについて
 
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
Onieで遊んでみようとした話
Onieで遊んでみようとした話Onieで遊んでみようとした話
Onieで遊んでみようとした話
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 

Similar a 私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた

hbstudy#6LTyuzorock
hbstudy#6LTyuzorockhbstudy#6LTyuzorock
hbstudy#6LTyuzorock
yuzorock
 
Nifty cloud automationでクラウド構築・運用の自動化
Nifty cloud automationでクラウド構築・運用の自動化Nifty cloud automationでクラウド構築・運用の自動化
Nifty cloud automationでクラウド構築・運用の自動化
NIFTY Cloud
 

Similar a 私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた (20)

シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
 
IL2CPPに関する軽い話
IL2CPPに関する軽い話IL2CPPに関する軽い話
IL2CPPに関する軽い話
 
仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践 仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践
 
hbstudy#6LTyuzorock
hbstudy#6LTyuzorockhbstudy#6LTyuzorock
hbstudy#6LTyuzorock
 
Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話 Machine configoperatorのちょっとイイかもしれない話
Machine configoperatorのちょっとイイかもしれない話
 
【HinemosWorld2014】B2-2_ビジネス競争力に勝てるネットワーク基盤構築~Hinemos仮想ネットワーク管理オプション~ONIE・ZTP・...
【HinemosWorld2014】B2-2_ビジネス競争力に勝てるネットワーク基盤構築~Hinemos仮想ネットワーク管理オプション~ONIE・ZTP・...【HinemosWorld2014】B2-2_ビジネス競争力に勝てるネットワーク基盤構築~Hinemos仮想ネットワーク管理オプション~ONIE・ZTP・...
【HinemosWorld2014】B2-2_ビジネス競争力に勝てるネットワーク基盤構築~Hinemos仮想ネットワーク管理オプション~ONIE・ZTP・...
 
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
スマホのセンサーでネットワークを操る  ~Ansible TowerによるレガシーNW機器のAPI化~スマホのセンサーでネットワークを操る  ~Ansible TowerによるレガシーNW機器のAPI化~
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
 
Ansible2とOpenStackの関係
Ansible2とOpenStackの関係Ansible2とOpenStackの関係
Ansible2とOpenStackの関係
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
AWS IoTを使った双方向通信システムの実装と注意点
AWS IoTを使った双方向通信システムの実装と注意点AWS IoTを使った双方向通信システムの実装と注意点
AWS IoTを使った双方向通信システムの実装と注意点
 
20201127 .NET 5
20201127 .NET 520201127 .NET 5
20201127 .NET 5
 
次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて
 
ロードバランサのリソース問題を解決する ~NetScaler Clustering~
ロードバランサのリソース問題を解決する ~NetScaler Clustering~ ロードバランサのリソース問題を解決する ~NetScaler Clustering~
ロードバランサのリソース問題を解決する ~NetScaler Clustering~
 
Nifty cloud automationでクラウド構築・運用の自動化
Nifty cloud automationでクラウド構築・運用の自動化Nifty cloud automationでクラウド構築・運用の自動化
Nifty cloud automationでクラウド構築・運用の自動化
 
OSC2018Tokyo/Fall 自律的運用に向けた第一歩(OpsBear取り組み紹介)
OSC2018Tokyo/Fall 自律的運用に向けた第一歩(OpsBear取り組み紹介)OSC2018Tokyo/Fall 自律的運用に向けた第一歩(OpsBear取り組み紹介)
OSC2018Tokyo/Fall 自律的運用に向けた第一歩(OpsBear取り組み紹介)
 
20210515 cae linux_install_vb
20210515 cae linux_install_vb20210515 cae linux_install_vb
20210515 cae linux_install_vb
 
OpenStack Vancouver Summit Report presented at nttgroup meeting in Japanese
OpenStack Vancouver Summit Report presented at nttgroup meeting in JapaneseOpenStack Vancouver Summit Report presented at nttgroup meeting in Japanese
OpenStack Vancouver Summit Report presented at nttgroup meeting in Japanese
 
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
 
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
 
Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?
 

Más de akira6592

Más de akira6592 (20)

新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア
 
Ansible とネットワーク自動化の概要(SmartCS と Ansible の連携による自動化の可能性を体験!)
Ansible とネットワーク自動化の概要(SmartCS と Ansible の連携による自動化の可能性を体験!)Ansible とネットワーク自動化の概要(SmartCS と Ansible の連携による自動化の可能性を体験!)
Ansible とネットワーク自動化の概要(SmartCS と Ansible の連携による自動化の可能性を体験!)
 
Ansible 実践ガイド第3版 ネットワーク担当としてのふりかえり #インフラエンジニアBooks
Ansible 実践ガイド第3版 ネットワーク担当としてのふりかえり #インフラエンジニアBooksAnsible 実践ガイド第3版 ネットワーク担当としてのふりかえり #インフラエンジニアBooks
Ansible 実践ガイド第3版 ネットワーク担当としてのふりかえり #インフラエンジニアBooks
 
Ansible でお世話になっている機能と拡張
Ansible でお世話になっている機能と拡張Ansible でお世話になっている機能と拡張
Ansible でお世話になっている機能と拡張
 
Ansible 2.10 と Collection
Ansible 2.10 と CollectionAnsible 2.10 と Collection
Ansible 2.10 と Collection
 
自動化の下ごしらえ
自動化の下ごしらえ自動化の下ごしらえ
自動化の下ごしらえ
 
向き合うエンジニア 2020年度版
向き合うエンジニア 2020年度版向き合うエンジニア 2020年度版
向き合うエンジニア 2020年度版
 
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
 
はじめてAnsibleのバグ修正に協力してみた
はじめてAnsibleのバグ修正に協力してみたはじめてAnsibleのバグ修正に協力してみた
はじめてAnsibleのバグ修正に協力してみた
 
CML-Personal (VIRL2)のインストールと基本機能
CML-Personal (VIRL2)のインストールと基本機能CML-Personal (VIRL2)のインストールと基本機能
CML-Personal (VIRL2)のインストールと基本機能
 
自動化ツール Ansible に触れてみよう(技術インターン)
 自動化ツール Ansible に触れてみよう(技術インターン) 自動化ツール Ansible に触れてみよう(技術インターン)
自動化ツール Ansible に触れてみよう(技術インターン)
 
技術ブログを書こう
技術ブログを書こう技術ブログを書こう
技術ブログを書こう
 
Ansible2.9 ネットワーク対応のアップデート #ansiblejp
Ansible2.9 ネットワーク対応のアップデート #ansiblejpAnsible2.9 ネットワーク対応のアップデート #ansiblejp
Ansible2.9 ネットワーク対応のアップデート #ansiblejp
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudy
 
はじめた自動化をどう広めるか 書籍「Fearless Change」からのヒント
はじめた自動化をどう広めるか 書籍「Fearless Change」からのヒントはじめた自動化をどう広めるか 書籍「Fearless Change」からのヒント
はじめた自動化をどう広めるか 書籍「Fearless Change」からのヒント
 
はじめどころを探る自動化アセスメント(JANOG44 ここからはじめよう、運用自動化)
はじめどころを探る自動化アセスメント(JANOG44 ここからはじめよう、運用自動化)はじめどころを探る自動化アセスメント(JANOG44 ここからはじめよう、運用自動化)
はじめどころを探る自動化アセスメント(JANOG44 ここからはじめよう、運用自動化)
 
向き合うエンジニア
向き合うエンジニア向き合うエンジニア
向き合うエンジニア
 
Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-
 
ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方
 
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)
 

私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた

  • 2. 2 はじめに  ネットワーク機器の操作手段は CLI が主流  RESTCONF は全く別のアプローチ  自動化的に、何が嬉しくなるのか考えてみた ※ The CLI is dead とは思っていません ※ Cisco IOS XE 16.11.1 での検証です ※ 私自身はこの分野は調査中の段階です 自動化? プログラマビリティ? 操作性?
  • 3. 自己紹介 3 名前 横地 晃 所属 株式会社エーピーコミュニケーションズ 自動化グループ 業務 ネットワーク自動化サービス関連 @akira6592 執筆など  Ansible実践ガイド 第3版  Software Design 2018年12月号 Ansible 特集  技術ブログ(てくなべ) 2019年10月18日 第3版発売 ネットワーク対応も追加
  • 5. RESTCONF とは(概要) 5  REST ベースでネットワーク機器を操作する 規格(RFC8040、2017年)  データモデリング言語として YANG を利用 ネットワーク機器 HTTP(S) REST (GET/POST/PUT/PATCH/DELETE) ライブラリ・ツールなど { }YANG YANG
  • 6. 他の規格との比較 6 規格 トランスポート データモデル データ フォーマット CLI SSH/TELNET 独自 独自*1 NETCONF SSH YANG/独自 XML RESTCONF HTTP(S) YANG JSON/XML (*1) CLI で JSON や XML 出力できる機器もある
  • 7. 実行例:RESTCONF による情報取得 7 $ curl -k -X GET https://rt01/restconf/data/ietf-interfaces:interfaces-state/interface ¥ -H 'Content-Type: application/yang-data+json' ¥ -H 'Accept: application/yang-data+json' ¥ -u 'testuser:testpassword' curl で、インターフェース状態を取得する例 GET したい情報のパスなどを指定
  • 8. 実行例:RESTCONF による情報取得 8 $ curl -k -X GET https://rt01/restconf/data/ietf-interfaces:interfaces-state/interface ¥ -H 'Content-Type: application/yang-data+json' ¥ -H 'Accept: application/yang-data+json' ¥ -u 'testuser:testpassword' curl で、インターフェース状態を取得する例 { "ietf-interfaces:interface": [ { "name": "GigabitEthernet1", "type": "iana-if-type:ethernetCsmacd", "admin-status": "up", "oper-status": "up", "last-change": "2019-10-09T17:47:36.000747+00:00", "if-index": 1, "phys-address": "00:50:56:xx:xx:xx", "speed": "1024000000", "statistics": { "discontinuity-time": "2019-10-09T17:46:12.000538+00:00", "in-octets": "75804004962", "in-unicast-pkts": "101030500", "in-broadcast-pkts": "0", "in-multicast-pkts": "0", …(略)… GET したい情報のパスなどを指定 JSON で返ってくる
  • 9. 9 RESTCONF は何が嬉しいのか 1. 対応ツールが多い 2. 構造化データでやりとりできる 3. モデル駆動で操作できる 以降、一つずつ説明します { }
  • 11. 対応ツールが多い 11  HTTP を扱う汎用的なものでOK ◦ 各プログラミング言語の HTTP クライアントライブラリ (Python の requests など) ◦ curl コマンド ◦ Ansible の uri、restconf_* モジュール ◦ など  CLI でつらいのは・・ ◦ 専用ツールやライブラリのみで、やや限定的(Ansible、netmiko、NAPALM など) HTTP を しゃべれれば基本OK etc.
  • 13. 構造化データでやりとりできる 13  JSON、XML を利用する ◦ プログラマビリティが高く、自動化しやすい  CLI でつらいのは・・ ◦ 正規表現やテンプレートを駆使、またはパーサー(TextFSM、Genie Parser など)が必要 { "Cisco-IOS-XE-ntp:server-list": [ { "ip-address": "10.0.0.1" }, { "ip-address": "10.0.0.2" } ] } 参照 NTP サーバーの設定をJSONで取得した例
  • 15. モデル駆動 15  YANG で定義されたモデルに基づいて操作 ◦ CLI でやりずらかった操作ができる z z
  • 17. CLI の場合(参照 NTP サーバー変更の例) 17 ntp server 10.0.0.1 ntp server 10.0.0.8 ntp server 10.0.0.9 ntp server 10.0.0.1 ntp server 10.0.0.2 ntp server 10.0.0.3 Before After CLI の場合 何をすればよい?
  • 18. CLI の場合(参照 NTP サーバー変更の例) 18 ntp server 10.0.0.1 ntp server 10.0.0.8 ntp server 10.0.0.9 ntp server 10.0.0.1 ntp server 10.0.0.2 ntp server 10.0.0.3 Before After sw1(config)# no ntp server 10.0.0.2 sw1(config)# no ntp server 10.0.0.3 sw1(config)# ntp server 10.0.0.8 sw1(config)# ntp server 10.0.0.9 操作する側が 追加、削除を 意識する必要がある ・操作とデータが混在 ・自動化しにくい ・どうせなら他のことに頭を使いたい コマンド実行内容
  • 19. RESTCONF の場合(参照 NTP サーバー変更の例) 19 ntp server 10.0.0.1 ntp server 10.0.0.8 ntp server 10.0.0.9 ntp server 10.0.0.1 ntp server 10.0.0.2 ntp server 10.0.0.3 Before After RESTCONF の場合 何をすればよい?
  • 20. RESTCONF の場合(参照 NTP サーバー変更の例) 20 ntp server 10.0.0.1 ntp server 10.0.0.8 ntp server 10.0.0.9 ntp server 10.0.0.1 ntp server 10.0.0.2 ntp server 10.0.0.3 Before After { "Cisco-IOS-XE-ntp:server": { "server-list": [ {"ip-address": "10.0.0.1"}, {"ip-address": "10.0.0.8"}, {"ip-address": "10.0.0.9"} ] } } 操作する側が 追加、削除を 意識する必要がない ・操作とデータが分離! ・あるべき状態を PUT するだけ! ・自動化しやすい! ※ あくまで一例。すべての設定がこのようにできるとは限らない PUT する body
  • 22. まとめ 22  RESTCONF は REST でネットワーク機器 を操作する規格、データモデリングはYANG  対応ツールが多い (HTTPをしゃべれれば基本OK)  構造化データでやりとりできる (JSON/XML)  モデル駆動で操作できる お使いの機器が RESTCONF に対応しているか確認してみてください。 そして、CLI がつらくなったら RESTCONF のことを思い出してください。 (まだ YANG ファイルの見方に慣れずに使いこなせません・・)
  • 23. 参考 23  サイト ◦ Cisco IOS XE Everest 16.6.x プログラマビリティ コンフィギュレーション ガイド ◦ https://www.cisco.com/c/ja_jp/td/docs/ios- xml/ios/prog/configuration/166/b_166_programmability_cg/b_166_programmability_cg_chapter_01011.html ◦ Cisco DevNet Learning Labs - Exploring IOS XE YANG Data Models with RESTCONF ◦ https://developer.cisco.com/learning/lab/intro-restconf/step/1 ◦ Automating Your Network Operations, Part 3 – Data-Driven Ansible ◦ https://blogs.cisco.com/developer/automating-network-operations-3 ◦ JANOG36 NETCONF/YANG ◦ https://www.janog.gr.jp/meeting/janog36/program/netconf ◦ データモデリング言語 YANG を活用した マルチベンダネットワーク制御 ◦ http://onic.jp/archive/2017/_cms/wp-content/uploads/2017/11/cisco.pdf ◦ restconf_config モジュールで Cisco IOS XE のSyslogサーバー設定追加・削除してみる ◦ https://tekunabe.hatenablog.jp/entry/2019/09/09/ansible_restconf_config_ios  書籍 ◦ Network Programmability with YANG ◦ https://www.amazon.co.jp/dp/0135180392  試してみたい方へ ◦ Cisco DevNet SandBox (オンラインのラボ環境) ◦ https://devnetsandbox.cisco.com/RM/Topology ◦ ちょっとした情報取得なら予約なしの「IOS XE on CSR Latest Code Always On」がおすすめ