SlideShare a Scribd company logo
スマホのセンサーで
ネットワークを操る
~ANSIBLE TOWERによるレガシーNW機器のAPI化~
2016/10/27 NetOpsCoding#4
株式会社 エーピーコミュニケーションズ
横地 晃
1
内容
1. はじめに・経緯
2. Ansible / Ansible Towerについて
3. 作ったもの・デモ
4. 仕組み
5. 感想・まとめ
2
本資料は Ansible 2.1、Ansible Tower 3.0.2 を前提としています。
@akira6592
3
1. はじめに・経緯
1.1. はじめに
APIに対応していない
あのルーター、あのスイッチが、
もしAPI対応したら、
どんなことをしたいですか?
4
ネットワーク機器
API
1.2. 今回の取り組みの経緯
新しいネットワーク機器の中にはAPI
に対応いるものがあって、自動化フ
レンドリーでよいなぁ。
Cisco1812JやCatalyst 3750 のような古
い機器でもAPI化できたらよいのに。
5
1.2. 今回の取り組みの経緯
そういえば、Ansibleにネットワーク
機器に対応したモジュールがあるな。
それに、Ansible TowerはREST APIに対
応している。
ということは、API化できるのでは?
6
7
2. Ansible / Ansible Towerについて
2.1. Ansible のネットワーク対応
◦ AnsibleはChefやPuppetとよく比較される構成管理
ツール
◦ サーバーだけでなく、ネットワーク機器に対応した
モジュールもある
◦ 対応モジュール例:IOS、NX-OS、JUNOS、VyOS、F5、NETCONFなど
8ネットワークモジュール一覧
http://docs.ansible.com/ansible/list_of_network_modules.html
〇 操作可能
Ansible ネットワーク機器
2.2. Ansible Towerとは
◦ Ansible の Web GUI、CLI(tower-cli)ツール
◦ Red Hat社のプロプライエタリ・ソフトウェア
◦ OSS化予定あり
◦ REST API対応
9
Software Design 2016年8月号から抜粋画面イメージ
2.3. REST APIでできること
◦ Job Template(Playbook + αの定義)の実行、確認、追加
◦ 例:Job Template ID 「12」を実行する
◦ POST https://{Tower_IP_ADDRESS}/api/v1/job_templates/12/launch/
◦ Job実行時の標準出力の確認
◦ インベントリやスケジュールの確認、追加
◦ など
エンドポイント一覧
◦ http://{Towe_IP_ADDRESS}/api/
をブラウザから見るのが便利
10公式ドキュメント Ansible Tower API Guide v3.0.2
https://docs.ansible.com/ansible-tower/latest/html/towerapi/
2.4. API認証方法
11
{
"token": "8f17825cf08a7efea124f2638f3896f6637f8745",
"expires": "2016-11-05T21:46:35.729Z"
}
公式ドキュメント Auth Token API Endpoint
http://docs.ansible.com/ansible-tower/latest/html/towerapi/auth_token.html
API
(1) トークン発行リクエスト
https://{Tower_IP_ADDRESS}/api/v1/authtoken/
Content-Type: application/json
{"username": "user", "password": "my pass"}
(2) トークン発行APIを叩きたいホスト
(3) トークン付きAPIリクエスト
https://{Tower_IP_ADDRESS}/api/v1/~~
Authorization: Token 8f17825cf08a7efea124f2638f3896f6637f8745
発行されたトークンを
以降のAPIリクエストヘッダの
「Authorization」に指定する
LT時スキップ
2.5. API認証(補足)
トークンの有効期限
◦ デフォルトは1800秒(30分)
◦ /etc/tower/conf.d/session.py の「AUTH_TOKEN_EXPIRATION」で変更
トークンの有効範囲
◦ 同一送信元IPアドレスのみ有効
◦ APIリクエスト元ごとにトークンの発行が必要
12公式ドキュメント Working with Session Limits
http://docs.ansible.com/ansible-tower/latest/html/administration/session_limits.html
トークンA発行
トークンB発行
期限は30分
個別にトークンを発行
ホストA
ユーザ1
ホストB
ユーザ1
LT時スキップ
13
3. 作ったもの・デモ
3. 作ったもの
(1) スマホを振ると
(2) 振った方向に
経路が変わる
(略)
後述 ネットワーク
14
3.1. デモ
15
実際に試しますのでご覧ください
(後日追加)デモ動画URL
https://www.youtube.com/watch?v=iK8gVdYjv0M
3.1. デモ(説明用1/3)
通常時は左経路
16
[vagrant@ansible-tower ~]$ traceroute 10.0.0.100
traceroute to 10.0.0.100 (10.0.0.100), 30 hops max, 60 byte packets
1 192.168.1.254 (192.168.1.254) 2.947 ms 2.874 ms 2.852 ms
2 10.0.101.1 (10.0.101.1) 2.998 ms 8.681 ms 8.671 ms
3 10.0.102.1 (10.0.102.1) 5.353 ms 5.346 ms 5.339 ms
4 10.0.0.100 (10.0.0.100) 8.623 ms * *
【事前コンフィグ抜粋】
interface FastEthernet0
ip address 10.0.101.254 255.255.255.0
ip ospf cost 10 ★通常時はコスト10
192.168.1.254
10.0.101.1
10.0.102.1
10.0.0.100
10.0.201.1
10.0.202.1
LT時スキップ
3.1. デモ(説明用2/3)
17
右に振る
Ansible Tower上で
右に経路変更するJOB(Playbook)が実行される
LT時スキップ
3.1. デモ(説明用3/3)
右の経路に変更される
18
[vagrant@ansible-tower ~]$ traceroute 10.0.0.100
traceroute to 10.0.0.100 (10.0.0.100), 30 hops max, 60 byte packets
1 192.168.1.254 (192.168.1.254) 1.850 ms 1.776 ms 3.553 ms
2 10.0.201.1 (10.0.201.1) 3.539 ms 3.525 ms 6.917 ms
3 10.0.202.1 (10.0.202.1) 6.886 ms 6.880 ms 6.812 ms
4 10.0.0.100 (10.0.0.100) 10.049 ms * *
【事後コンフィグ抜粋】
interface FastEthernet0
ip address 10.0.101.254 255.255.255.0
ip ospf cost 9999 ★コスト9999になった
192.168.1.254
10.0.0.100
10.0.101.1
10.0.102.1
10.0.201.1
10.0.202.1
LT時スキップ
3.2. 仕組み(全体)
①スマホを振る ②スマホの加速度センサー
が反応してサーバーに指示
③Ansible TowerのAPIが
呼ばれ、 Playbookが実
行される
⑥Tracerouteの変化が表示される
⑤Traceroute結果に変化
が起こると、結果をク
ライアントに送られる
④ルーターの
OSPFのコストが
変更され、経路が
変わる
【C】Traceroute表示部
【A】スマホ連携部
※Playbook: 機器への操作を記述するYAML形式のファイル。
今回はルーターのインターフェースのOSPFコスト変更コマンドを記述。
【B】Ansible実行部
API
19
LT時スキップ
3.3. 仕組み【A】スマホ連携部
①スマホを振る
②-1 加速度センサーが
反応してサーバーに指
示
【A】スマホ連携部
L or R
②-2 パラメータに応じて
Ansible REST APIを呼び出す
・スマホに搭載されている加速度センサーをブラウザか
らJavaScript経由で利用(DeviceMotionEvent)
・振った方向に応じたパラメータがサーバーに送られる
- 左に振ると「L」
- 右に振ると「R」
・サーバー側実装はNode.js上
【B】Ansible実行部へ
20
LT時スキップ
3.3. 仕組み【B】Ansible実行部1/2
【B】Ansible実行部
・呼ばれたAnsible Tower API のパラメーターに応じた
Playbookが実行される
- 左経路用Playbook
- 右経路用Playbook
・「★」のインターフェースのOSPFコストを
- 左経路用Playbookで10に変更する
- 右経路用Playbookで9999に変更する
③Ansible TowerのAPIが
呼ばれ、 Playbookが実
行される
API
【A】スマホ連携部から
ネットワーク
★
21
LT時スキップ
3.3. 仕組み【B】Ansible実行部2/2
22
【左経路用Playbook】
---
- name: chane route to left
hosts: 192.168.1.254
gather_facts: no
connection: local
tasks:
- name: change route to left
ios_config: # IOS設定用モジュール
parents:
- interface FastEthernet0
lines:
- ip ospf cost 10
provider: "{{ cli }}“
notify: save config
register: result
- name: DEBUG
debug: var=result
handlers: # コンフィグ変更されたら保存する
- name: save config
ios_command:
commands:
- write memory
provider: "{{ cli }}"
register: result
- name: DEBUG
debug: var=result
vars: # 説明用にPlaybook内に定義
cli: # 認証情報等
host: “192.168.1.254“ # 対象
username: “user“ # ユーザ名
password: “password“ # ログインパスワード
authorize: true # 特権モードへ移行する
auth_pass: “password“ # enableパスワード
ポイント
provider オプションについて参考情報
http://qiita.com/akira6592/items/f0fba66ee7743ceb0365
【右経路用Playbook】
---
- name: change route to right
hosts: 192.168.1.254
gather_facts: no
connection: local
tasks:
- name: change route to right
ios_config: # IOS設定用モジュール
parents:
- interface FastEthernet0
lines:
- ip ospf cost 9999
provider: "{{ cli }}"
notify: save config
register: result
- name: DEBUG
debug: var=result
handlers: # コンフィグ変更されたら保存する
- name: save config
ios_command:
commands:
- write memory
provider: "{{ cli }}"
register: result
- name: DEBUG
debug: var=result
vars: # 説明用にPlaybook内に定義
cli: # 認証情報等
host: “192.168.1.254“ # 対象
username: “user“ # ユーザ名
password: “password“ # ログインパスワード
authorize: true # 特権モードへ移行する
auth_pass: “password“ # enableパスワード
ポイント
3.3. 仕組み【C】Traceroute表示部
【C】Traceroute表示部
・traceroute実行サーバーから送られてきた結果を
グラフネットワークとして表示
・グラフネットワーク描画ライブラリはCytoscape.js
を使用
・クライアント側実装はJavaScript
・traceroute実行サーバーでは、定期的にtraceroute
を実行し、変化があった場合のみtraceroute結果を
プッシュでクライアントに送る
・プッシュ送信はWebSocketを使用
・サーバー側実装はNode.js上
ネットワーク
⑥tracerouteの変化が表示される
⑤Traceroute結果に変化
が起こると、結果をク
ライアントに送られる
23
LT時スキップ
3.4. 仕組み ネットワーク機器
24
ルーターA Cisco 1812J
<今回の設定変更機器>
ルーターB Catalyst3750
ルーターD Catalyst3750
ルーターC・E IX2015
純正のAPIは非対応の機器
LT時スキップ
25
4. 感想・まとめ
4. 感想・まとめ
ネットワーク方面
◦ APIがないネットワーク機器でもAnsible Towerを使っ
てAPI化すれば、活用場面が増えそう。
サーバー方面
◦ Ansible Tower をオンプレで試すにはVagrantで構築す
るのが便利。
◦ Ansible TowerのOSS化に期待。
プログラム方面
◦ スマホのセンサーはブラウザからも取得できるのは
便利。
26
参考URL
Ansible初心者が始めの1カ月でやったこと
◦ http://qiita.com/akira6592/items/e46463243d858ab6c880
Ansibleで複数のCatalystのパスワードを一括変更する
◦ http://qiita.com/akira6592/items/7695881f91dee1036e4a
Ansible Tower を Vagrant で構築する
◦ http://qiita.com/akira6592/items/c4110140d774beef97bd
【動画】EXPLORING AND USING THE ANSIBLE TOWER REST API
◦ https://www.ansible.com/exploring-and-using-the-ansible-tower-rest-api
Ansibrest (Ansible Towerとは別のAPI機能を持たせるツール)
◦ http://muddydixon.hatenablog.com/entry/2016/03/08/004951
スマートフォンはセンサーの塊! たった数行のHTML5とJSで扱えるセンサーまとめ(デ
モ・動画あり)
◦ https://ics.media/entry/4095/2
◦ https://github.com/ics-creative/141216_sp_device/tree/master/devicemotion
Traceroute表示部で参考にした Cytoscape.jsのサンプル
◦ https://gist.github.com/maxkfranz/7e2f4d29ff7ef1a1bba5
◦ http://js.cytoscape.org/demos/7e2f4d29ff7ef1a1bba5/
27

More Related Content

PDF
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
PDF
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
PDF
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
PDF
AnsibleとNAPALMでネットワークをテストする
PDF
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
PPTX
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
PDF
161027 net opscoding-junos-automation
PPT
Webサーバの基礎知識【編集済み】
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
ネットワーク自動化ツール紹介(Ansible・NAPALM編)
AnsibleとNAPALMでネットワークをテストする
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
161027 net opscoding-junos-automation
Webサーバの基礎知識【編集済み】

What's hot (20)

PDF
ネットワークコンフィグ分析ツール Batfish との付き合い方
PDF
Ansible npstudy-shtsuchi
PDF
Lagopus & NFV with Vhost (Tremaday#9)
PDF
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
PDF
show コマンド結果をパースする方法あれこれ #npstudy
PPTX
ネットワークエンジニアのための Puppet / Chef
PPTX
Webアプリケーションによる電源管理システムのご紹介
PDF
Ansible とネットワーク自動化の概要(SmartCS と Ansible の連携による自動化の可能性を体験!)
PDF
LagopusとAzureとIPsecとDPDK
PPTX
Open wrtでwired likeなwifinwを作ってみた。
PDF
Lagopusで試すFW
PPTX
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
PPTX
plotnetcfg入門 | Introduction to plotnetcfg
PDF
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
PDF
自動でできるかな?
PDF
Ansibleではじめるサーバー・ネットワークの自動化(2018/07/05)
PDF
Enjoy the Ansible
PPTX
ネットワークプログラマビリティ勉強会
PDF
Ansibleを使ってみよう ~Windowsターゲット編~
PDF
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
ネットワークコンフィグ分析ツール Batfish との付き合い方
Ansible npstudy-shtsuchi
Lagopus & NFV with Vhost (Tremaday#9)
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
show コマンド結果をパースする方法あれこれ #npstudy
ネットワークエンジニアのための Puppet / Chef
Webアプリケーションによる電源管理システムのご紹介
Ansible とネットワーク自動化の概要(SmartCS と Ansible の連携による自動化の可能性を体験!)
LagopusとAzureとIPsecとDPDK
Open wrtでwired likeなwifinwを作ってみた。
Lagopusで試すFW
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
plotnetcfg入門 | Introduction to plotnetcfg
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
自動でできるかな?
Ansibleではじめるサーバー・ネットワークの自動化(2018/07/05)
Enjoy the Ansible
ネットワークプログラマビリティ勉強会
Ansibleを使ってみよう ~Windowsターゲット編~
オーバーレイネットワークで実現するプライベートクラウド -OpenStack/OpenContrailを用いたプライベートクラウドの構築及び評価計画のご紹介-
Ad

Similar to スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~ (20)

PDF
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
PDF
【HinemosWorld2014】B2-2_ビジネス競争力に勝てるネットワーク基盤構築~Hinemos仮想ネットワーク管理オプション~ONIE・ZTP・...
PPTX
ブラウザでWebRTC - iOSゲートウェイ作ってみた
PDF
Real World Android Akka - 日本語版
PPT
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
PDF
Lagopus Switch Usecases
PDF
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
PDF
Juniper Festa @ Interop Tokyo 2015
PDF
RasPiからSEILにL2TP/IPSec接続
PDF
クラウド時代のネットワーク再入門
PDF
Cumulus Linux 導入事例 -ネットワークをDevOpsに統合した、エンジニアが幸せになるインフラ運用手法のご紹介-
PDF
【Interop Tokyo 2016】 東京大学におけるジュニパーネットワークス機器の導入
PPTX
2016-ShowNetステージ-モニタリング
PPTX
A2 SORACOM API使いこなしレシピ集 | SORACOM Technology Camp 2020
PDF
20150715 xflow kikuta_final
PPTX
JAWS目黒 EC2チューニングTips #jawsmeguro #jawsug
PDF
法政大学情報科学部 2012年度コンピュータネットワーク-第11回授業-Web公開用
PDF
Ansible Tower on OpenShift
PDF
Juniper Festa @ Interop Tokyo 2021
PDF
Lagopus Project (Open Source Conference)
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
【HinemosWorld2014】B2-2_ビジネス競争力に勝てるネットワーク基盤構築~Hinemos仮想ネットワーク管理オプション~ONIE・ZTP・...
ブラウザでWebRTC - iOSゲートウェイ作ってみた
Real World Android Akka - 日本語版
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Lagopus Switch Usecases
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
Juniper Festa @ Interop Tokyo 2015
RasPiからSEILにL2TP/IPSec接続
クラウド時代のネットワーク再入門
Cumulus Linux 導入事例 -ネットワークをDevOpsに統合した、エンジニアが幸せになるインフラ運用手法のご紹介-
【Interop Tokyo 2016】 東京大学におけるジュニパーネットワークス機器の導入
2016-ShowNetステージ-モニタリング
A2 SORACOM API使いこなしレシピ集 | SORACOM Technology Camp 2020
20150715 xflow kikuta_final
JAWS目黒 EC2チューニングTips #jawsmeguro #jawsug
法政大学情報科学部 2012年度コンピュータネットワーク-第11回授業-Web公開用
Ansible Tower on OpenShift
Juniper Festa @ Interop Tokyo 2021
Lagopus Project (Open Source Conference)
Ad

More from akira6592 (20)

PDF
新人研修資料 向き合うエンジニア
PDF
Ansible 実践ガイド第3版 ネットワーク担当としてのふりかえり #インフラエンジニアBooks
PDF
Ansible でお世話になっている機能と拡張
PDF
Ansible 2.10 と Collection
PDF
自動化の下ごしらえ
PDF
向き合うエンジニア 2020年度版
PDF
はじめてAnsibleのバグ修正に協力してみた
PDF
CML-Personal (VIRL2)のインストールと基本機能
PDF
BGP Unnumbered で遊んでみた
PDF
自動化ツール Ansible に触れてみよう(技術インターン)
PDF
技術ブログを書こう
PDF
Ansible2.9 ネットワーク対応のアップデート #ansiblejp
PDF
はじめた自動化をどう広めるか 書籍「Fearless Change」からのヒント
PPTX
はじめどころを探る自動化アセスメント(JANOG44 ここからはじめよう、運用自動化)
PPTX
向き合うエンジニア
PDF
Ansible 2.8 アップデート情報 -機能追加と注意点-
PDF
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)
PDF
Ansibleではじめるサーバー・ネットワークの自動化(2019/02版)
PDF
「自動化の行き着く先は?」をうけて
PDF
Ansibleでネットワーク機器の状態確認を自動化してみよう
新人研修資料 向き合うエンジニア
Ansible 実践ガイド第3版 ネットワーク担当としてのふりかえり #インフラエンジニアBooks
Ansible でお世話になっている機能と拡張
Ansible 2.10 と Collection
自動化の下ごしらえ
向き合うエンジニア 2020年度版
はじめてAnsibleのバグ修正に協力してみた
CML-Personal (VIRL2)のインストールと基本機能
BGP Unnumbered で遊んでみた
自動化ツール Ansible に触れてみよう(技術インターン)
技術ブログを書こう
Ansible2.9 ネットワーク対応のアップデート #ansiblejp
はじめた自動化をどう広めるか 書籍「Fearless Change」からのヒント
はじめどころを探る自動化アセスメント(JANOG44 ここからはじめよう、運用自動化)
向き合うエンジニア
Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)
Ansibleではじめるサーバー・ネットワークの自動化(2019/02版)
「自動化の行き着く先は?」をうけて
Ansibleでネットワーク機器の状態確認を自動化してみよう

スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~