SlideShare a Scribd company logo
1 of 36
Download to read offline
株式会社 エーピーコミュニケーションズ
横地 晃(@akira6592)
2017/10/10
NetOpsCoding#5 × ネットワークプログラマビリティ勉強会#13
はじめに
2
 近年、APIに対応していないネットワーク機器で
も自動化できるツールが増えてきました。
 本資料ではAnsibleとNAPALMについてご紹介し
ます。
Ansible NAPALM
【扱うツール・ライブラリ】
本資料は 2017/8/18 開催の勉強会「ネットワークの自動化、何つかう?~自動化ツール紹介~」で利用した資料を編集、再構成したものです。
今回ご紹介しきれないnetmiko、saltを含めた資料は https://www.slideshare.net/akira6592/20170818-78977651 をご参照ください。
本日の内容
3
 概要
 全体像
 Ansible(概要・利用例)
 NAPALM(概要・利用例)
 比較
 まとめ
4
1. 全体像
全体像 Ansible NAPALM 比較 まとめ
全体像 (ツール依存イメージ)
5
Netmiko
Ansible
【紹介】
NAPALM
【紹介】
paramiko pan-python pan-device
Cisco
IOS
PaloAlto
PAN-OS
他・・・
対応機種は抜粋
構
成
管
理
ツ
ー
ル
Python
ラ
イ
ブ
ラ
リ
Salt
NW
機
器
上記は標準構成の場合。
たとえば、サードパーティモジュールではAnsibleからNAPALMを呼び出すモジュールもあり。
skip
全体像 (機能概要)
6
機能 \ ツール
Netmiko NAPALM Ansible Salt
種別 Pythonライブラリ Pythonライブラリ 構成管理ツール 構成管理ツール
利用方法 Python のコード
にて自動化
Python のコード
にて自動化
定義ファイル
等にて自動化
定義ファイル
等にて自動化
コーディング不要
× △
一部CLIあり
● ●
マルチ
ベンダー
抽象化
設定
コマンド
×
コマンド直接指定
△
ごく一部
×
ベンダー別
モジュールを利用
(抽象化アプローチが
異なるため *1)
△
ごく一部
表示
コマンド
×
コマンド直接指定
△
一部
×
ベンダー別
モジュールを利用
(抽象化アプローチが
異なるため)
△
一部
基本操作 ● ● ● ●
*1 Ansible2.4 で 共通モジュールが登場
参考参考
7
2. Ansible
全体像 Ansible NAPALM 比較 まとめ
Ansible 概要
8
ベンダーA ベンダーB ベンダーC
各ベンダー(OS)の
機能ごとにモジュールが
用意されている
A用モジュール群
シンプルな構成管理ツール
B用モジュール群 C用モジュール群
表示コマンド
設定コマンド
ログイン
モード移行
コミット
ログイン
モード移行
表示コマンド
設定コマンド
ログイン
モード移行
コミット
ログイン
モード移行
表示コマンド
設定コマンド
ログイン
モード移行
コミット
ログイン
モード移行
Ansible2.4 で 共通モジュール(net_* 後述)が登場
Ansible 概要
 エージェントレスな構成管理ツール
 YAMLで構成定義する(Playbook)
 ネットワーク機器にも対応
 対応の程度は様々
 直接コマンドを指定する必要があるものもあれば、パラメータを指定するだけでよいも
のもある。
9
---
- hosts: cisco
gather_facts: no
connection: local
tasks:
- name: change password
ios_config:
lines:
- username ope password opepass
provider: "{{ cli }}"
Playbook(YAML)
SSH等
Ansible 対応機種(NW機器)
10
A10
Aci *
Aireos *
Aos
Aruba *
Asa
Avi
Bigswitch
Citrix
Cloudengine
Cloudvision *
Cumulus
※version 2.4 現在 (*は2.4での追加機種)
一覧: http://docs.ansible.com/ansible/latest/list_of_network_modules.html
Dellos10
Dellos6
Dellos9
Eos
F5
Fortios
Illumos
Ios
Iosxr
Junos
Lenovo
Netconf
Netscaler *
Netvisor
Nuage *
Nxos
Ordnance
Ovs
Panos
Radware *
Sros
Vyos
Network Moduleの数は465
Ansibleによる状態表示例(Playbook)
11
---
- hosts: cisco
gather_facts: no
connection: local
tasks:
- name: show command
ios_command:
commands: # 実行したいコマンドの指定
- show ip interface brief
provider: "{{ cli }}"
register: result # 結果を変数へ保存
- name: DEBUG
debug: var=result. stdout_lines # 結果を表示
vars:
cli: # 対象ホストと認証情報の指定
host: "{{ inventory_hostname }}"
username: "{{ ansible_user }}"
password: "{{ ansible_password }}"
authorize: true
auth_pass: "{{ cisco_enable_secret }}"
[cisco]
10.0.0.254
[cisco:vars]
ansible_user=testuser
ansible_password=testpass
cisco_enable_secret=testenable
[Playbook] [インベントリファイル]
表示コマンドを直接指定
Ansibleによる状態表示例(結果)
12
> ansible-playbook ansible_show.yml
PLAY [cisco]
***********************************************************************************************************
TASK [show command]
***********************************************************************************************************
ok: [10.0.0.254]
TASK [DEBUG]
***********************************************************************************************************
ok: [] => {
"result.stdout_lines": [
[
"Interface IP-Address OK? Method Status Protocol",
"GigabitEthernet1 10.0.0.51 YES NVRAM up up ",
"GigabitEthernet2 unassigned YES NVRAM up up ",
"GigabitEthernet3 unassigned YES NVRAM up up ",
"GigabitEthernet4 unassigned YES NVRAM up up"
]
]
}
PLAY RECAP
***********************************************************************************************************
10.0.0.254 : ok=2 changed=0 unreachable=0 failed=0
playbook実行
コマンド実行結果が
表示される
Ansibleによる設定変更例(Playbook)
13
---
- hosts: cisco
gather_facts: no
connection: local
tasks:
- name: config test
ios_config:
parents: # 実行したいコマンドの指定
- interface GigabitEthernet1
lines:
- description ***test from ansible***
provider: "{{ cli }}"
vars:
cli:
host: "{{ inventory_hostname }}"
username: "{{ ansible_user }}"
password: "{{ ansible_password }}"
authorize: true
auth_pass: "{{ cisco_enable_secret }}"
[cisco]
10.0.0.254
[cisco:vars]
ansible_user=testuser
ansible_password=testpass
cisco_enable_secret=testenable
[Playbook] [インベントリファイル]
設定コマンドを直接指定
Ansibleによる設定変更例(結果)
14
router1#sh run int gi1
Building configuration...
Current configuration : 152 bytes
!
interface GigabitEthernet1
description ***test from ansible***
vrf forwarding MANAGEMENT
ip address 10.0.0.51 255.255.255.0
negotiation auto
end
設定が入る
NW機器側で確認
Playbook実行
> ansible-playbook ansible_config.yml
PLAY [cisco] ********************************************************************************************
TASK [config test] **************************************************************************************
changed: [10.0.0.254]
PLAY RECAP **********************************************************************************************
10.0.0.254 : ok=1 changed=1 unreachable=0 failed=0
設定変更されたこを示す
Playbook上は
共通モジュールを使用
内部ではansible_network_os 変数が
Ansible 2.4 新モジュールピックアップ
15
net_* 系モジュール
- name: static route
net_static_route:
prefix: 0.0.0.0
mask: 0.0.0.0
next_hop: 10.0.0.1
state: present
provider: "{{ cli }}"
- name: static route
net_static_route:
address: 0.0.0.0/0
next_hop: 10.0.0.1
state: present
provider: "{{ cli }}"
junos の場合
ios の場合
ios_static_route
モジュールを使用
junos_static_route
モジュールを使用
【例】
Version 2.4 現在、net_* モジュールは 14個
Ansible まとめ
16
シンプルな構成管理ツール
17
3. NAPALM
全体像 Ansible NAPALM 比較 まとめ
NAPALM 概要
18
ベンダーA ベンダーB ベンダーC
表示コマンド 表示コマンド 表示コマンド
設定コマンド 設定コマンド 設定コマンド
ログイン ログイン ログイン
モード移行 モード移行 モード移行
コミット コミット
共通メソッド
として抽象化コミット
設定コマンドはごく一部
表示コマンドは一部
多機能で厚い抽象化Pythonライブラリ
NAPALM 概要
 表示コマンドの抽象化
 各ベンダーのshowコマンドを意識せずに情報取得できる
 出力結果は共通フォーマットにパースされる
 設定コマンドの抽象化
 組み込みの各ベンダー用テンプレートで実現
 set_hostname、set_ntp_peers、delete_ntp_peers
 set_probes、schedule_probes、delete_probes
 その他
 CLIでNAPALMの機能を利用するコマンドもある
 AnsibleからNAPALMの機能を利用するサードパーティモ
ジュールもある
19※v1.2時点。詳細: https://napalm.readthedocs.io/en/latest/support/index.html#available-configuration-templates
set host-name RT1
hostname RT1
NAPALM
各ベンダー向けの設定
ホスト名を
RT1にする
A | B
1 | 2
A 1
B 2
NAPALM
各ベンダーのshow結果(バラバラ) 共通フォーマット
{
"A": 1,
"B": 2
}
skip
NAPALM 対応機種
20
 EOS
 JunOS
 IOS-XR
 FortiOS
 NXOS
※v1.2 2017/10/02時点時点。
一覧: https://napalm.readthedocs.io/en/latest/support/index.html
 IOS
 Pluribus
 PANOS
 MikroTik
 VyOS
NAPALM 情報取得メソッド対応表1/2
21
※v1.2 2017/10/02時点。詳細・引用元:
https://napalm.readthedocs.io/en/latest/support/index.html
EOS FORTIOS IOS IOSXR JUNOS NXOS PANOS PLURIBUS ROS VYOS
get_arp_table ✅ ❌ ✅ ✅ ✅ ✅ ✅ ❌ ❌ ✅
get_bgp_config ✅ ❌ ❌ ✅ ✅ ❌ ❌ ❌ ❌ ❌
get_bgp_neighbors ✅ ✅ ✅ ✅ ✅ ✅ ✅ ❌ ❌ ❌
get_bgp_neighbors_detail ✅ ❌ ❌ ✅ ✅ ❌ ❌ ❌ ❌ ❌
get_config ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ❌
get_environment ✅ ✅ ✅ ✅ ✅ ❌ ❌ ❌ ❌ ✅
get_facts ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅
get_firewall_policies ❌ ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌
get_interfaces ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅
get_interfaces_counters ✅ ✅ ✅ ✅ ✅ ❌ ❌ ❌ ❌ ❌
get_interfaces_ip ✅ ❌ ✅ ✅ ✅ ✅ ✅ ❌ ❌ ✅
get_lldp_neighbors ✅ ❌ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ❌
get_lldp_neighbors_detail ✅ ❌ ✅ ✅ ☠ ✅ ✅ ❌ ✅ ❌
ベンダーによって対応の差がある
NAPALM 情報取得メソッド対応表2/2
22
※v1.2 2017/10/02時点
詳細・引用元: https://napalm.readthedocs.io/en/latest/support/index.html
EOS FORTIOS IOS IOSXR JUNOS NXOS PANOS PLURIBUS ROS VYOS
get_mac_address_table ✅ ❌ ✅ ✅ ☠ ✅ ✅ ❌ ✅ ❌
get_network_instances ✅ ❌ ❌ ❌ ✅ ❌ ❌ ❌ ❌ ❌
get_ntp_peers ❌ ❌ ❌ ✅ ✅ ✅ ✅ ❌ ❌ ✅
get_ntp_servers ✅ ❌ ✅ ✅ ✅ ✅ ✅ ❌ ✅ ❌
get_ntp_stats ✅ ❌ ✅ ✅ ✅ ✅ ✅ ❌ ✅ ❌
get_optics ✅ ❌ ✅ ❌ ✅ ❌ ❌ ❌ ❌ ❌
get_probes_config ❌ ❌ ❌ ✅ ✅ ❌ ❌ ❌ ❌ ❌
get_probes_results ❌ ❌ ❌ ✅ ✅ ❌ ❌ ❌ ❌ ❌
get_route_to ✅ ❌ ❌ ✅ ✅ ❌ ❌ ✅ ❌ ❌
get_snmp_information ✅ ❌ ✅ ✅ ✅ ✅ ✅ ❌ ✅ ✅
get_users ✅ ❌ ❌ ✅ ✅ ✅ ✅ ❌ ✅ ✅
is_alive ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅
ping ✅ ❌ ✅ ❌ ✅ ❌ ❌ ❌ ❌ ✅
traceroute ✅ ❌ ✅ ✅ ✅ ✅ ✅ ❌ ❌ ❌
NAPALMによる状態表示例(コード)
23
import napalm
from pprint import pprint
# ドライバ名を指定してドライバを取得
driver = napalm.get_network_driver("ios")
device = driver(hostname="10.0.0.254", # ログイン先
username="test", # ログインユーザー名
password="test", # ログインパスワード
optional_args={"secret": "test"} # enableパスワード
)
# 接続・ログイン
device.open()
# メソッド経由でインターフェース情報を取得
output = device.get_interfaces()
# 実行結果の表示
pprint(output)
# 切断
device.close()
junos
panos
など
「show interfaces」を抽象化
(IOSの場合)
NAPALMによる状態表示例(結果)
24
> python napalm_show.py
{'BRI0': {'description': 'N/A',
'is_enabled': False,
'is_up': False,
'last_flapped': -1.0,
'mac_address': 'N/A',
'speed': 0},
(略)
'GigabitEthernet0': {'description': 'N/A',
'is_enabled': True,
'is_up': True,
'last_flapped': -1.0,
'mac_address': '60:73:5C:XX:XX:XX',
'speed': 1000},
'Vlan1': {'description': 'N/A',
'is_enabled': True,
'is_up': False,
'last_flapped': -1.0,
'mac_address': '60:73:5C:XX:XX:XX',
'speed': 100}}
コマンド実行結果が各ベンダー
共通フォーマットにパース
されて表示される
スクリプト実行
NAPALMによる設定変更例(コード)
25
import napalm
from pprint import pprint
# ドライバ名を指定してドライバを取得
driver = napalm.get_network_driver("ios")
device = driver(hostname="10.0.0.254", # ログインntc123先
username="test", # ログインユーザー名
password="test", # ログインパスワード
optional_args={"secret": "test", "inline_transfer": True} # enableパスワード
)
# 接続・ログイン
device.open()
# NAPALM 組み込みのNTPピア設定テンプレートを利用し、パラメータを割り当てる
device.load_template("set_ntp_peers", peers=["10.0.0.1 ", "10.0.0.2"])
# 現状コンフィグと候補コンフィグの差分表示
print(device.compare_config())
# コンフィグの反映
device.commit_config()
# 切断
device.close()
■ios用のNTPピア設定組み込みテンプレート
{% for peer in peers %}
ntp peer {{peer}}
{% endfor %}
NAPALMによる設定変更例(結果)
26
> python napalm_config.py
+ntp peer 10.0.0.1
+ntp peer 10.0.0.2
差分が表示される
router1# sh run | inc ntp
ntp peer 10.0.0.1
ntp peer 10.0.0.2
設定が入る
NW機器側で確認
スクリプト実行
NAPALM のお気に入りポイント
27
Validate機能がある
参考:https://napalm.readthedocs.io/en/latest/validate/index.html
 例えば、想定のtraceroute結果をYAMLで定義して、その通りか
どうかを確認できる。
 Ansibleからは「napalm_validate」モジュールでvalidate機能を呼び出せる
(1) コマンド実行
NAPALM
(2) 結果取得
NW機器
(3) validate
IOS、Junos・・等
NAPALM まとめ
28
多機能で厚い抽象化Pythonライブラリ
29
4. 比較
全体像 Ansible NAPALM 比較 まとめ
比較 1/2
30
機能 \ ツール
Netmiko NAPALM Ansible Salt
種別 Pythonライブラリ Pythonライブラリ 構成管理ツール 構成管理ツール
利用方法 Python のコード
にて自動化
Python のコード
にて自動化
定義ファイル
等にて自動化
定義ファイル
等にて自動化
コーディング不要
× △
一部CLIあり
● ●
マルチ
ベンダー
抽象化
設定
コマンド
×
コマンド直接指定
△
ごく一部
×
ベンダー別
モジュールを利用
(抽象化アプローチが
異なるため *1)
△
ごく一部
表示
コマンド
×
コマンド直接指定
△
一部
×
ベンダー別
モジュールを利用
(抽象化アプローチが
異なるため)
△
一部
基本操作 ● ● ● ●
参考参考
(機能概要からの再掲分)
*1 Ansible2.4 で 共通モジュールが登場
比較 2/2
31
Netmiko NAPALM Ansible Salt
メリット 対応機種が多い マルチベン
ダー環境の情
報取得に強い
シンプルな構
成でスタート
できる
イベントドリ
ブン仕組みや
WebAPI等もあ
り高機能
(NAPALMの特徴も持つ)
デメリット 自分で書くコー
ド量が多い
設定系メソッ
ドが少ない
機種ごとにモ
ジュールを使
い分ける必要
がある
(抽象化アプローチが
異なるため *1)
情報が少ない
Googleヒット件数(*2) 13,800
(+1,400)
174,000
(-12,000)
4,040,000
(+490,000)
523,000
(+34,000)
フォーク数 292
(+27)
427
(+80)
9,021
(+673)
3,795
(+147)
Slackメンバー数
(Network to Code Slack 内)
560
(+69)
842
(+114)
1,112
(+126)
333
(+48)
2017/10/02現在の数値。 ( ) 内は直近2か月半の変動。
*1 Ansible2.4 で 共通モジュールが登場 *2 NAPALM は「NAPALM python」として検索
参考参考
ツールの選定ポイント
32
 (1) 管理対象機器に対応しているか
 どの程度対応しているかも確認する
 (2) コードを書くことを良しとするか、しないか
 良しとしない場合はAnsibleやSaltのような構成管理ツール
 (3) シンプル or 高機能
 高機能なものは学習コストが高い。
 (4) どの程度抽象化したいか
 例えば、TeraTermマクロより少し楽になればよい程度であればNetmiko
 (5) 管理対象機器のベンダー数はどの程度か
 Ansibleはベンダーごとにモジュールを使い分ける必要がある
 (6) 既存で導入している構成管理ツールはあるか
 ある場合は統一する方が良いのでは
33
7. まとめ
全体像 Ansible NAPALM 比較 まとめ
まとめ
34
Ansible
 シンプルな構成管理ツール
 NAPALM
 多機能で厚い抽象化Pythonライブラリ
様々なNW機器や仕様があるため、
それぞれツールが対応している機器や特徴を理解して
適材適所で活用していきましょう。
参考情報(書籍)
35
2. 「Network Programmability and Automation」
Chapter 1 Software Defined Networking
Chapter 2 Network Automation
Chapter 3 Linux
Chapter 4 Python
Chapter 5 Data Formats
Chapter 6 Network Configuration Templating
Chapter 7 APIs
Chapter 7 APIs
Chapter 8 Source Control
Chapter 9 DevOps
Chapter 10 Continuous Integration
Appendix A Text Editors
Appendix B Docker Networking
Appendix C Open vSwitch
2017年12月発売予定(10月調査時点)
1. 「Ansible: Up and Running, 2nd Edition」
1. http://shop.oreilly.com/product/0636920065500.do
2. https://www.amazon.co.jp/dp/1491931256/
・2nd Edition にてネットワーク機器向けの章が追加
・「ios_config」「ios_facts」の使用例等
参考情報(Web)
36
NAPALM
 続・マルチベンダルータ制御APIライブラリ NAPALMを触って
みた
 http://qiita.com/taijijiji/items/9dfcaa6d868958985095
 NAPALMで作るネットワークオペレーション自動化への道のり
 https://www.slideshare.net/ssuser6a8d29/napalm
 Ansible
 Ansible でネットワーク機器を操作したい時に参考になりそう
な日本語情報
 http://tekunabe.hatenablog.jp/entry/2017/04/06/231243
 全体
 ネットワーク自動化アンケート結果(NetDevOps Survey - Fall
2016)
 https://docs.google.com/forms/d/e/1FAIpQLSdiBNMK0ZUmgBSNEaOWa-
YHGQ4AlZo7EhB52_dXzvMqic3eHA/viewanalytics

More Related Content

What's hot

PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜Preferred Networks
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコシステムズ合同会社
 
インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造Taiji Tsuchiya
 
Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~Masahito Zembutsu
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化dcubeio
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門Kohei Tokunaga
 
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春VerMasahito Zembutsu
 
検証環境をGoBGPで極力仮想化してみた
検証環境をGoBGPで極力仮想化してみた検証環境をGoBGPで極力仮想化してみた
検証環境をGoBGPで極力仮想化してみたToshiya Mabuchi
 
ネットワークエンジニア的Ansibleの始め方
ネットワークエンジニア的Ansibleの始め方ネットワークエンジニア的Ansibleの始め方
ネットワークエンジニア的Ansibleの始め方akira6592
 
Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)akira6592
 
無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろうakira6592
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本kazuki kumagai
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyakira6592
 
Glue DataBrewでデータをクリーニング、加工してみよう
Glue DataBrewでデータをクリーニング、加工してみようGlue DataBrewでデータをクリーニング、加工してみよう
Glue DataBrewでデータをクリーニング、加工してみようtakeshi suto
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Sho A
 
AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門kk_Ataka
 
異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j昌桓 李
 
【EX/QFX】JUNOS ハンズオントレーニング資料 EX/QFX シリーズ サービス ゲートウェイ コース
【EX/QFX】JUNOS ハンズオントレーニング資料 EX/QFX シリーズ サービス ゲートウェイ コース 【EX/QFX】JUNOS ハンズオントレーニング資料 EX/QFX シリーズ サービス ゲートウェイ コース
【EX/QFX】JUNOS ハンズオントレーニング資料 EX/QFX シリーズ サービス ゲートウェイ コース Juniper Networks (日本)
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 

What's hot (20)

PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
 
インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造
 
Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~
 
Nmapの真実(続)
Nmapの真実(続)Nmapの真実(続)
Nmapの真実(続)
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
 
検証環境をGoBGPで極力仮想化してみた
検証環境をGoBGPで極力仮想化してみた検証環境をGoBGPで極力仮想化してみた
検証環境をGoBGPで極力仮想化してみた
 
ネットワークエンジニア的Ansibleの始め方
ネットワークエンジニア的Ansibleの始め方ネットワークエンジニア的Ansibleの始め方
ネットワークエンジニア的Ansibleの始め方
 
Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)
 
無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudy
 
Glue DataBrewでデータをクリーニング、加工してみよう
Glue DataBrewでデータをクリーニング、加工してみようGlue DataBrewでデータをクリーニング、加工してみよう
Glue DataBrewでデータをクリーニング、加工してみよう
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門AnsibleによるInfrastructure as code入門
AnsibleによるInfrastructure as code入門
 
異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j
 
【EX/QFX】JUNOS ハンズオントレーニング資料 EX/QFX シリーズ サービス ゲートウェイ コース
【EX/QFX】JUNOS ハンズオントレーニング資料 EX/QFX シリーズ サービス ゲートウェイ コース 【EX/QFX】JUNOS ハンズオントレーニング資料 EX/QFX シリーズ サービス ゲートウェイ コース
【EX/QFX】JUNOS ハンズオントレーニング資料 EX/QFX シリーズ サービス ゲートウェイ コース
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 

Viewers also liked

NetOpsCoding#5 introduction
NetOpsCoding#5 introductionNetOpsCoding#5 introduction
NetOpsCoding#5 introductionTaiji Tsuchiya
 
Telemetry事始め
Telemetry事始めTelemetry事始め
Telemetry事始めnpsg
 
Ansible x napalm x nso 解説・比較パネルディスカッション nso
Ansible x napalm x nso 解説・比較パネルディスカッション nsoAnsible x napalm x nso 解説・比較パネルディスカッション nso
Ansible x napalm x nso 解説・比較パネルディスカッション nsoAkira Iwamoto
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyYahoo!デベロッパーネットワーク
 
パケットキャプチャでインフラ主導のデバッグ環境を作る
パケットキャプチャでインフラ主導のデバッグ環境を作るパケットキャプチャでインフラ主導のデバッグ環境を作る
パケットキャプチャでインフラ主導のデバッグ環境を作るcloretsblack
 
Apache sparkとapache cassandraで行うテキスト解析
Apache sparkとapache cassandraで行うテキスト解析Apache sparkとapache cassandraで行うテキスト解析
Apache sparkとapache cassandraで行うテキスト解析Kazutaka Tomita
 
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリde:code 2017
 
モバイルするハニーポット無線LANアクセスポイント
モバイルするハニーポット無線LANアクセスポイントモバイルするハニーポット無線LANアクセスポイント
モバイルするハニーポット無線LANアクセスポイントNaoya Kaneko
 
PHP Version Up と AWS への移行
PHP Version Up と AWS への移行PHP Version Up と AWS への移行
PHP Version Up と AWS への移行gree_tech
 
いんふらフレンズ
いんふらフレンズいんふらフレンズ
いんふらフレンズMiho Yamamoto
 
Apache Spark+Zeppelinでアドホックなネットワーク解析
Apache Spark+Zeppelinでアドホックなネットワーク解析Apache Spark+Zeppelinでアドホックなネットワーク解析
Apache Spark+Zeppelinでアドホックなネットワーク解析npsg
 
物理ネットワーク受け入れテストの自動化を考える
物理ネットワーク受け入れテストの自動化を考える物理ネットワーク受け入れテストの自動化を考える
物理ネットワーク受け入れテストの自動化を考えるskipping classes
 
CDP Indicator
CDP IndicatorCDP Indicator
CDP Indicatornpsg
 
ネットワークプログラマビリティ勉強会 これまでのおさらい
ネットワークプログラマビリティ勉強会 これまでのおさらいネットワークプログラマビリティ勉強会 これまでのおさらい
ネットワークプログラマビリティ勉強会 これまでのおさらいnpsg
 
自動化と画面を考えてみました
自動化と画面を考えてみました自動化と画面を考えてみました
自動化と画面を考えてみましたskipping classes
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよnpsg
 
ラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaSラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaSnpsg
 
VPP事始め
VPP事始めVPP事始め
VPP事始めnpsg
 
API イントロダクション APIC-EM, Prime Infrastructure & CMX
API イントロダクション APIC-EM, Prime Infrastructure & CMXAPI イントロダクション APIC-EM, Prime Infrastructure & CMX
API イントロダクション APIC-EM, Prime Infrastructure & CMXnpsg
 

Viewers also liked (20)

NetOpsCoding#5 introduction
NetOpsCoding#5 introductionNetOpsCoding#5 introduction
NetOpsCoding#5 introduction
 
Telemetry事始め
Telemetry事始めTelemetry事始め
Telemetry事始め
 
Ansible x napalm x nso 解説・比較パネルディスカッション nso
Ansible x napalm x nso 解説・比較パネルディスカッション nsoAnsible x napalm x nso 解説・比較パネルディスカッション nso
Ansible x napalm x nso 解説・比較パネルディスカッション nso
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
 
パケットキャプチャでインフラ主導のデバッグ環境を作る
パケットキャプチャでインフラ主導のデバッグ環境を作るパケットキャプチャでインフラ主導のデバッグ環境を作る
パケットキャプチャでインフラ主導のデバッグ環境を作る
 
Apache sparkとapache cassandraで行うテキスト解析
Apache sparkとapache cassandraで行うテキスト解析Apache sparkとapache cassandraで行うテキスト解析
Apache sparkとapache cassandraで行うテキスト解析
 
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
 
モバイルするハニーポット無線LANアクセスポイント
モバイルするハニーポット無線LANアクセスポイントモバイルするハニーポット無線LANアクセスポイント
モバイルするハニーポット無線LANアクセスポイント
 
PHP Version Up と AWS への移行
PHP Version Up と AWS への移行PHP Version Up と AWS への移行
PHP Version Up と AWS への移行
 
いんふらフレンズ
いんふらフレンズいんふらフレンズ
いんふらフレンズ
 
Apache Spark+Zeppelinでアドホックなネットワーク解析
Apache Spark+Zeppelinでアドホックなネットワーク解析Apache Spark+Zeppelinでアドホックなネットワーク解析
Apache Spark+Zeppelinでアドホックなネットワーク解析
 
物理ネットワーク受け入れテストの自動化を考える
物理ネットワーク受け入れテストの自動化を考える物理ネットワーク受け入れテストの自動化を考える
物理ネットワーク受け入れテストの自動化を考える
 
CDP Indicator
CDP IndicatorCDP Indicator
CDP Indicator
 
ネットワークプログラマビリティ勉強会 これまでのおさらい
ネットワークプログラマビリティ勉強会 これまでのおさらいネットワークプログラマビリティ勉強会 これまでのおさらい
ネットワークプログラマビリティ勉強会 これまでのおさらい
 
Contiv
ContivContiv
Contiv
 
自動化と画面を考えてみました
自動化と画面を考えてみました自動化と画面を考えてみました
自動化と画面を考えてみました
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
 
ラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaSラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaS
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
 
API イントロダクション APIC-EM, Prime Infrastructure & CMX
API イントロダクション APIC-EM, Prime Infrastructure & CMXAPI イントロダクション APIC-EM, Prime Infrastructure & CMX
API イントロダクション APIC-EM, Prime Infrastructure & CMX
 

Similar to ネットワーク自動化ツール紹介(Ansible・NAPALM編)

161027 net opscoding-junos-automation
161027 net opscoding-junos-automation161027 net opscoding-junos-automation
161027 net opscoding-junos-automationHiromi Tsukamoto
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Taro Hirose
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
Pythonによる並列プログラミング -GPGPUも-
Pythonによる並列プログラミング   -GPGPUも- Pythonによる並列プログラミング   -GPGPUも-
Pythonによる並列プログラミング -GPGPUも- Yusaku Watanabe
 
GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!leverages_event
 
JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性
JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性
JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性Taiji Tsuchiya
 
Telemetryについて
TelemetryについてTelemetryについて
Telemetryについてtetsusat
 
Capistranoで自動デプロイ
Capistranoで自動デプロイCapistranoで自動デプロイ
Capistranoで自動デプロイtoyoshi
 
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016Takayuki Shimizukawa
 
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8Satoshi Ohkubo
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例fumoto kazuhiro
 
Net opscoding#4発表資料
Net opscoding#4発表資料Net opscoding#4発表資料
Net opscoding#4発表資料Kenta Hattori
 
ZabbixによるOpenStack/OpenContrailの監視
ZabbixによるOpenStack/OpenContrailの監視ZabbixによるOpenStack/OpenContrailの監視
ZabbixによるOpenStack/OpenContrailの監視Kodai Terashima
 
AnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeAnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeSatoru Yoshida
 
Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-recotech
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理junichi anno
 
NetAppのデータ管理をPuppetで。〜APIとコミュニティのオープン性〜 - 渡邊 誠 、ネットアップ株式会社
NetAppのデータ管理をPuppetで。〜APIとコミュニティのオープン性〜 - 渡邊 誠 、ネットアップ株式会社NetAppのデータ管理をPuppetで。〜APIとコミュニティのオープン性〜 - 渡邊 誠 、ネットアップ株式会社
NetAppのデータ管理をPuppetで。〜APIとコミュニティのオープン性〜 - 渡邊 誠 、ネットアップ株式会社Puppet
 
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-靖 小田島
 

Similar to ネットワーク自動化ツール紹介(Ansible・NAPALM編) (20)

161027 net opscoding-junos-automation
161027 net opscoding-junos-automation161027 net opscoding-junos-automation
161027 net opscoding-junos-automation
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
Pythonによる並列プログラミング -GPGPUも-
Pythonによる並列プログラミング   -GPGPUも- Pythonによる並列プログラミング   -GPGPUも-
Pythonによる並列プログラミング -GPGPUも-
 
GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!
 
Ad stirの裏側
Ad stirの裏側Ad stirの裏側
Ad stirの裏側
 
JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性
JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性
JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性
 
Telemetryについて
TelemetryについてTelemetryについて
Telemetryについて
 
Capistranoで自動デプロイ
Capistranoで自動デプロイCapistranoで自動デプロイ
Capistranoで自動デプロイ
 
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016
 
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
OrePAN と cpanm を使ったCPAN モジュールの部分ミラーの運用管理 :Yokohama.pm #8
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例
 
What is an Ansible?
What is an Ansible?What is an Ansible?
What is an Ansible?
 
Net opscoding#4発表資料
Net opscoding#4発表資料Net opscoding#4発表資料
Net opscoding#4発表資料
 
ZabbixによるOpenStack/OpenContrailの監視
ZabbixによるOpenStack/OpenContrailの監視ZabbixによるOpenStack/OpenContrailの監視
ZabbixによるOpenStack/OpenContrailの監視
 
AnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeAnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a Code
 
Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
 
NetAppのデータ管理をPuppetで。〜APIとコミュニティのオープン性〜 - 渡邊 誠 、ネットアップ株式会社
NetAppのデータ管理をPuppetで。〜APIとコミュニティのオープン性〜 - 渡邊 誠 、ネットアップ株式会社NetAppのデータ管理をPuppetで。〜APIとコミュニティのオープン性〜 - 渡邊 誠 、ネットアップ株式会社
NetAppのデータ管理をPuppetで。〜APIとコミュニティのオープン性〜 - 渡邊 誠 、ネットアップ株式会社
 
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
 

More from akira6592

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

More from 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)のインストールと基本機能
 
BGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたBGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみた
 
自動化ツール Ansible に触れてみよう(技術インターン)
 自動化ツール Ansible に触れてみよう(技術インターン) 自動化ツール Ansible に触れてみよう(技術インターン)
自動化ツール Ansible に触れてみよう(技術インターン)
 
技術ブログを書こう
技術ブログを書こう技術ブログを書こう
技術ブログを書こう
 
Ansible2.9 ネットワーク対応のアップデート #ansiblejp
Ansible2.9 ネットワーク対応のアップデート #ansiblejpAnsible2.9 ネットワーク対応のアップデート #ansiblejp
Ansible2.9 ネットワーク対応のアップデート #ansiblejp
 
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
 
はじめた自動化をどう広めるか 書籍「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 との付き合い方
 

Recently uploaded

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 

Recently uploaded (8)

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 

ネットワーク自動化ツール紹介(Ansible・NAPALM編)

  • 2. はじめに 2  近年、APIに対応していないネットワーク機器で も自動化できるツールが増えてきました。  本資料ではAnsibleとNAPALMについてご紹介し ます。 Ansible NAPALM 【扱うツール・ライブラリ】 本資料は 2017/8/18 開催の勉強会「ネットワークの自動化、何つかう?~自動化ツール紹介~」で利用した資料を編集、再構成したものです。 今回ご紹介しきれないnetmiko、saltを含めた資料は https://www.slideshare.net/akira6592/20170818-78977651 をご参照ください。
  • 3. 本日の内容 3  概要  全体像  Ansible(概要・利用例)  NAPALM(概要・利用例)  比較  まとめ
  • 4. 4 1. 全体像 全体像 Ansible NAPALM 比較 まとめ
  • 5. 全体像 (ツール依存イメージ) 5 Netmiko Ansible 【紹介】 NAPALM 【紹介】 paramiko pan-python pan-device Cisco IOS PaloAlto PAN-OS 他・・・ 対応機種は抜粋 構 成 管 理 ツ ー ル Python ラ イ ブ ラ リ Salt NW 機 器 上記は標準構成の場合。 たとえば、サードパーティモジュールではAnsibleからNAPALMを呼び出すモジュールもあり。 skip
  • 6. 全体像 (機能概要) 6 機能 \ ツール Netmiko NAPALM Ansible Salt 種別 Pythonライブラリ Pythonライブラリ 構成管理ツール 構成管理ツール 利用方法 Python のコード にて自動化 Python のコード にて自動化 定義ファイル 等にて自動化 定義ファイル 等にて自動化 コーディング不要 × △ 一部CLIあり ● ● マルチ ベンダー 抽象化 設定 コマンド × コマンド直接指定 △ ごく一部 × ベンダー別 モジュールを利用 (抽象化アプローチが 異なるため *1) △ ごく一部 表示 コマンド × コマンド直接指定 △ 一部 × ベンダー別 モジュールを利用 (抽象化アプローチが 異なるため) △ 一部 基本操作 ● ● ● ● *1 Ansible2.4 で 共通モジュールが登場 参考参考
  • 7. 7 2. Ansible 全体像 Ansible NAPALM 比較 まとめ
  • 8. Ansible 概要 8 ベンダーA ベンダーB ベンダーC 各ベンダー(OS)の 機能ごとにモジュールが 用意されている A用モジュール群 シンプルな構成管理ツール B用モジュール群 C用モジュール群 表示コマンド 設定コマンド ログイン モード移行 コミット ログイン モード移行 表示コマンド 設定コマンド ログイン モード移行 コミット ログイン モード移行 表示コマンド 設定コマンド ログイン モード移行 コミット ログイン モード移行 Ansible2.4 で 共通モジュール(net_* 後述)が登場
  • 9. Ansible 概要  エージェントレスな構成管理ツール  YAMLで構成定義する(Playbook)  ネットワーク機器にも対応  対応の程度は様々  直接コマンドを指定する必要があるものもあれば、パラメータを指定するだけでよいも のもある。 9 --- - hosts: cisco gather_facts: no connection: local tasks: - name: change password ios_config: lines: - username ope password opepass provider: "{{ cli }}" Playbook(YAML) SSH等
  • 10. Ansible 対応機種(NW機器) 10 A10 Aci * Aireos * Aos Aruba * Asa Avi Bigswitch Citrix Cloudengine Cloudvision * Cumulus ※version 2.4 現在 (*は2.4での追加機種) 一覧: http://docs.ansible.com/ansible/latest/list_of_network_modules.html Dellos10 Dellos6 Dellos9 Eos F5 Fortios Illumos Ios Iosxr Junos Lenovo Netconf Netscaler * Netvisor Nuage * Nxos Ordnance Ovs Panos Radware * Sros Vyos Network Moduleの数は465
  • 11. Ansibleによる状態表示例(Playbook) 11 --- - hosts: cisco gather_facts: no connection: local tasks: - name: show command ios_command: commands: # 実行したいコマンドの指定 - show ip interface brief provider: "{{ cli }}" register: result # 結果を変数へ保存 - name: DEBUG debug: var=result. stdout_lines # 結果を表示 vars: cli: # 対象ホストと認証情報の指定 host: "{{ inventory_hostname }}" username: "{{ ansible_user }}" password: "{{ ansible_password }}" authorize: true auth_pass: "{{ cisco_enable_secret }}" [cisco] 10.0.0.254 [cisco:vars] ansible_user=testuser ansible_password=testpass cisco_enable_secret=testenable [Playbook] [インベントリファイル] 表示コマンドを直接指定
  • 12. Ansibleによる状態表示例(結果) 12 > ansible-playbook ansible_show.yml PLAY [cisco] *********************************************************************************************************** TASK [show command] *********************************************************************************************************** ok: [10.0.0.254] TASK [DEBUG] *********************************************************************************************************** ok: [] => { "result.stdout_lines": [ [ "Interface IP-Address OK? Method Status Protocol", "GigabitEthernet1 10.0.0.51 YES NVRAM up up ", "GigabitEthernet2 unassigned YES NVRAM up up ", "GigabitEthernet3 unassigned YES NVRAM up up ", "GigabitEthernet4 unassigned YES NVRAM up up" ] ] } PLAY RECAP *********************************************************************************************************** 10.0.0.254 : ok=2 changed=0 unreachable=0 failed=0 playbook実行 コマンド実行結果が 表示される
  • 13. Ansibleによる設定変更例(Playbook) 13 --- - hosts: cisco gather_facts: no connection: local tasks: - name: config test ios_config: parents: # 実行したいコマンドの指定 - interface GigabitEthernet1 lines: - description ***test from ansible*** provider: "{{ cli }}" vars: cli: host: "{{ inventory_hostname }}" username: "{{ ansible_user }}" password: "{{ ansible_password }}" authorize: true auth_pass: "{{ cisco_enable_secret }}" [cisco] 10.0.0.254 [cisco:vars] ansible_user=testuser ansible_password=testpass cisco_enable_secret=testenable [Playbook] [インベントリファイル] 設定コマンドを直接指定
  • 14. Ansibleによる設定変更例(結果) 14 router1#sh run int gi1 Building configuration... Current configuration : 152 bytes ! interface GigabitEthernet1 description ***test from ansible*** vrf forwarding MANAGEMENT ip address 10.0.0.51 255.255.255.0 negotiation auto end 設定が入る NW機器側で確認 Playbook実行 > ansible-playbook ansible_config.yml PLAY [cisco] ******************************************************************************************** TASK [config test] ************************************************************************************** changed: [10.0.0.254] PLAY RECAP ********************************************************************************************** 10.0.0.254 : ok=1 changed=1 unreachable=0 failed=0 設定変更されたこを示す
  • 15. Playbook上は 共通モジュールを使用 内部ではansible_network_os 変数が Ansible 2.4 新モジュールピックアップ 15 net_* 系モジュール - name: static route net_static_route: prefix: 0.0.0.0 mask: 0.0.0.0 next_hop: 10.0.0.1 state: present provider: "{{ cli }}" - name: static route net_static_route: address: 0.0.0.0/0 next_hop: 10.0.0.1 state: present provider: "{{ cli }}" junos の場合 ios の場合 ios_static_route モジュールを使用 junos_static_route モジュールを使用 【例】 Version 2.4 現在、net_* モジュールは 14個
  • 17. 17 3. NAPALM 全体像 Ansible NAPALM 比較 まとめ
  • 18. NAPALM 概要 18 ベンダーA ベンダーB ベンダーC 表示コマンド 表示コマンド 表示コマンド 設定コマンド 設定コマンド 設定コマンド ログイン ログイン ログイン モード移行 モード移行 モード移行 コミット コミット 共通メソッド として抽象化コミット 設定コマンドはごく一部 表示コマンドは一部 多機能で厚い抽象化Pythonライブラリ
  • 19. NAPALM 概要  表示コマンドの抽象化  各ベンダーのshowコマンドを意識せずに情報取得できる  出力結果は共通フォーマットにパースされる  設定コマンドの抽象化  組み込みの各ベンダー用テンプレートで実現  set_hostname、set_ntp_peers、delete_ntp_peers  set_probes、schedule_probes、delete_probes  その他  CLIでNAPALMの機能を利用するコマンドもある  AnsibleからNAPALMの機能を利用するサードパーティモ ジュールもある 19※v1.2時点。詳細: https://napalm.readthedocs.io/en/latest/support/index.html#available-configuration-templates set host-name RT1 hostname RT1 NAPALM 各ベンダー向けの設定 ホスト名を RT1にする A | B 1 | 2 A 1 B 2 NAPALM 各ベンダーのshow結果(バラバラ) 共通フォーマット { "A": 1, "B": 2 } skip
  • 20. NAPALM 対応機種 20  EOS  JunOS  IOS-XR  FortiOS  NXOS ※v1.2 2017/10/02時点時点。 一覧: https://napalm.readthedocs.io/en/latest/support/index.html  IOS  Pluribus  PANOS  MikroTik  VyOS
  • 21. NAPALM 情報取得メソッド対応表1/2 21 ※v1.2 2017/10/02時点。詳細・引用元: https://napalm.readthedocs.io/en/latest/support/index.html EOS FORTIOS IOS IOSXR JUNOS NXOS PANOS PLURIBUS ROS VYOS get_arp_table ✅ ❌ ✅ ✅ ✅ ✅ ✅ ❌ ❌ ✅ get_bgp_config ✅ ❌ ❌ ✅ ✅ ❌ ❌ ❌ ❌ ❌ get_bgp_neighbors ✅ ✅ ✅ ✅ ✅ ✅ ✅ ❌ ❌ ❌ get_bgp_neighbors_detail ✅ ❌ ❌ ✅ ✅ ❌ ❌ ❌ ❌ ❌ get_config ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ❌ get_environment ✅ ✅ ✅ ✅ ✅ ❌ ❌ ❌ ❌ ✅ get_facts ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ get_firewall_policies ❌ ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ get_interfaces ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ get_interfaces_counters ✅ ✅ ✅ ✅ ✅ ❌ ❌ ❌ ❌ ❌ get_interfaces_ip ✅ ❌ ✅ ✅ ✅ ✅ ✅ ❌ ❌ ✅ get_lldp_neighbors ✅ ❌ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ❌ get_lldp_neighbors_detail ✅ ❌ ✅ ✅ ☠ ✅ ✅ ❌ ✅ ❌ ベンダーによって対応の差がある
  • 22. NAPALM 情報取得メソッド対応表2/2 22 ※v1.2 2017/10/02時点 詳細・引用元: https://napalm.readthedocs.io/en/latest/support/index.html EOS FORTIOS IOS IOSXR JUNOS NXOS PANOS PLURIBUS ROS VYOS get_mac_address_table ✅ ❌ ✅ ✅ ☠ ✅ ✅ ❌ ✅ ❌ get_network_instances ✅ ❌ ❌ ❌ ✅ ❌ ❌ ❌ ❌ ❌ get_ntp_peers ❌ ❌ ❌ ✅ ✅ ✅ ✅ ❌ ❌ ✅ get_ntp_servers ✅ ❌ ✅ ✅ ✅ ✅ ✅ ❌ ✅ ❌ get_ntp_stats ✅ ❌ ✅ ✅ ✅ ✅ ✅ ❌ ✅ ❌ get_optics ✅ ❌ ✅ ❌ ✅ ❌ ❌ ❌ ❌ ❌ get_probes_config ❌ ❌ ❌ ✅ ✅ ❌ ❌ ❌ ❌ ❌ get_probes_results ❌ ❌ ❌ ✅ ✅ ❌ ❌ ❌ ❌ ❌ get_route_to ✅ ❌ ❌ ✅ ✅ ❌ ❌ ✅ ❌ ❌ get_snmp_information ✅ ❌ ✅ ✅ ✅ ✅ ✅ ❌ ✅ ✅ get_users ✅ ❌ ❌ ✅ ✅ ✅ ✅ ❌ ✅ ✅ is_alive ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ✅ ping ✅ ❌ ✅ ❌ ✅ ❌ ❌ ❌ ❌ ✅ traceroute ✅ ❌ ✅ ✅ ✅ ✅ ✅ ❌ ❌ ❌
  • 23. NAPALMによる状態表示例(コード) 23 import napalm from pprint import pprint # ドライバ名を指定してドライバを取得 driver = napalm.get_network_driver("ios") device = driver(hostname="10.0.0.254", # ログイン先 username="test", # ログインユーザー名 password="test", # ログインパスワード optional_args={"secret": "test"} # enableパスワード ) # 接続・ログイン device.open() # メソッド経由でインターフェース情報を取得 output = device.get_interfaces() # 実行結果の表示 pprint(output) # 切断 device.close() junos panos など 「show interfaces」を抽象化 (IOSの場合)
  • 24. NAPALMによる状態表示例(結果) 24 > python napalm_show.py {'BRI0': {'description': 'N/A', 'is_enabled': False, 'is_up': False, 'last_flapped': -1.0, 'mac_address': 'N/A', 'speed': 0}, (略) 'GigabitEthernet0': {'description': 'N/A', 'is_enabled': True, 'is_up': True, 'last_flapped': -1.0, 'mac_address': '60:73:5C:XX:XX:XX', 'speed': 1000}, 'Vlan1': {'description': 'N/A', 'is_enabled': True, 'is_up': False, 'last_flapped': -1.0, 'mac_address': '60:73:5C:XX:XX:XX', 'speed': 100}} コマンド実行結果が各ベンダー 共通フォーマットにパース されて表示される スクリプト実行
  • 25. NAPALMによる設定変更例(コード) 25 import napalm from pprint import pprint # ドライバ名を指定してドライバを取得 driver = napalm.get_network_driver("ios") device = driver(hostname="10.0.0.254", # ログインntc123先 username="test", # ログインユーザー名 password="test", # ログインパスワード optional_args={"secret": "test", "inline_transfer": True} # enableパスワード ) # 接続・ログイン device.open() # NAPALM 組み込みのNTPピア設定テンプレートを利用し、パラメータを割り当てる device.load_template("set_ntp_peers", peers=["10.0.0.1 ", "10.0.0.2"]) # 現状コンフィグと候補コンフィグの差分表示 print(device.compare_config()) # コンフィグの反映 device.commit_config() # 切断 device.close() ■ios用のNTPピア設定組み込みテンプレート {% for peer in peers %} ntp peer {{peer}} {% endfor %}
  • 26. NAPALMによる設定変更例(結果) 26 > python napalm_config.py +ntp peer 10.0.0.1 +ntp peer 10.0.0.2 差分が表示される router1# sh run | inc ntp ntp peer 10.0.0.1 ntp peer 10.0.0.2 設定が入る NW機器側で確認 スクリプト実行
  • 27. NAPALM のお気に入りポイント 27 Validate機能がある 参考:https://napalm.readthedocs.io/en/latest/validate/index.html  例えば、想定のtraceroute結果をYAMLで定義して、その通りか どうかを確認できる。  Ansibleからは「napalm_validate」モジュールでvalidate機能を呼び出せる (1) コマンド実行 NAPALM (2) 結果取得 NW機器 (3) validate IOS、Junos・・等
  • 29. 29 4. 比較 全体像 Ansible NAPALM 比較 まとめ
  • 30. 比較 1/2 30 機能 \ ツール Netmiko NAPALM Ansible Salt 種別 Pythonライブラリ Pythonライブラリ 構成管理ツール 構成管理ツール 利用方法 Python のコード にて自動化 Python のコード にて自動化 定義ファイル 等にて自動化 定義ファイル 等にて自動化 コーディング不要 × △ 一部CLIあり ● ● マルチ ベンダー 抽象化 設定 コマンド × コマンド直接指定 △ ごく一部 × ベンダー別 モジュールを利用 (抽象化アプローチが 異なるため *1) △ ごく一部 表示 コマンド × コマンド直接指定 △ 一部 × ベンダー別 モジュールを利用 (抽象化アプローチが 異なるため) △ 一部 基本操作 ● ● ● ● 参考参考 (機能概要からの再掲分) *1 Ansible2.4 で 共通モジュールが登場
  • 31. 比較 2/2 31 Netmiko NAPALM Ansible Salt メリット 対応機種が多い マルチベン ダー環境の情 報取得に強い シンプルな構 成でスタート できる イベントドリ ブン仕組みや WebAPI等もあ り高機能 (NAPALMの特徴も持つ) デメリット 自分で書くコー ド量が多い 設定系メソッ ドが少ない 機種ごとにモ ジュールを使 い分ける必要 がある (抽象化アプローチが 異なるため *1) 情報が少ない Googleヒット件数(*2) 13,800 (+1,400) 174,000 (-12,000) 4,040,000 (+490,000) 523,000 (+34,000) フォーク数 292 (+27) 427 (+80) 9,021 (+673) 3,795 (+147) Slackメンバー数 (Network to Code Slack 内) 560 (+69) 842 (+114) 1,112 (+126) 333 (+48) 2017/10/02現在の数値。 ( ) 内は直近2か月半の変動。 *1 Ansible2.4 で 共通モジュールが登場 *2 NAPALM は「NAPALM python」として検索 参考参考
  • 32. ツールの選定ポイント 32  (1) 管理対象機器に対応しているか  どの程度対応しているかも確認する  (2) コードを書くことを良しとするか、しないか  良しとしない場合はAnsibleやSaltのような構成管理ツール  (3) シンプル or 高機能  高機能なものは学習コストが高い。  (4) どの程度抽象化したいか  例えば、TeraTermマクロより少し楽になればよい程度であればNetmiko  (5) 管理対象機器のベンダー数はどの程度か  Ansibleはベンダーごとにモジュールを使い分ける必要がある  (6) 既存で導入している構成管理ツールはあるか  ある場合は統一する方が良いのでは
  • 33. 33 7. まとめ 全体像 Ansible NAPALM 比較 まとめ
  • 34. まとめ 34 Ansible  シンプルな構成管理ツール  NAPALM  多機能で厚い抽象化Pythonライブラリ 様々なNW機器や仕様があるため、 それぞれツールが対応している機器や特徴を理解して 適材適所で活用していきましょう。
  • 35. 参考情報(書籍) 35 2. 「Network Programmability and Automation」 Chapter 1 Software Defined Networking Chapter 2 Network Automation Chapter 3 Linux Chapter 4 Python Chapter 5 Data Formats Chapter 6 Network Configuration Templating Chapter 7 APIs Chapter 7 APIs Chapter 8 Source Control Chapter 9 DevOps Chapter 10 Continuous Integration Appendix A Text Editors Appendix B Docker Networking Appendix C Open vSwitch 2017年12月発売予定(10月調査時点) 1. 「Ansible: Up and Running, 2nd Edition」 1. http://shop.oreilly.com/product/0636920065500.do 2. https://www.amazon.co.jp/dp/1491931256/ ・2nd Edition にてネットワーク機器向けの章が追加 ・「ios_config」「ios_facts」の使用例等
  • 36. 参考情報(Web) 36 NAPALM  続・マルチベンダルータ制御APIライブラリ NAPALMを触って みた  http://qiita.com/taijijiji/items/9dfcaa6d868958985095  NAPALMで作るネットワークオペレーション自動化への道のり  https://www.slideshare.net/ssuser6a8d29/napalm  Ansible  Ansible でネットワーク機器を操作したい時に参考になりそう な日本語情報  http://tekunabe.hatenablog.jp/entry/2017/04/06/231243  全体  ネットワーク自動化アンケート結果(NetDevOps Survey - Fall 2016)  https://docs.google.com/forms/d/e/1FAIpQLSdiBNMK0ZUmgBSNEaOWa- YHGQ4AlZo7EhB52_dXzvMqic3eHA/viewanalytics