SlideShare a Scribd company logo
1 of 58
Download to read offline
2017/08/18 【8a1】APC勉強会
株式会社 エーピーコミュニケーションズ
横地 晃
Netmiko / NAPALM / Ansible / Salt
追加開催版
はじめに
2
 近年、APIに対応していないネットワーク機
器でも自動化できる方法が増えてきました。
 そのためのツールやライブラリをいくつか試
してみましたので、特徴などをご紹介します。
ツール選びの検討材料になれば幸いです。
Ansible SaltNAPALMNetmiko
【扱うツール・ライブラリ】
本日の内容
3
 概要
 全体像
 各ツールの説明
 Netmiko
 NAPALM
 Ansible
 Salt
 比較
 まとめ
自己紹介
4
@akira6592
名前 横地 晃
経歴 ・2012年エーピーコミュニケーションズ入社
・ネットワークの設計構築業務を担当
・プロフェッショナル職
(Twitter, Qiita, blog, SlideShare)
5
1. 全体像
全体像 Netmiko NAPALM Ansible Salt 比較 まとめ
全体像 (業務フローイメージ)
6
作業承認要件 設計
ここの自動化
全体像 (ツール依存イメージ)
7
Netmiko
【紹介】
Ansible
【紹介】
NAPALM
【紹介】
paramiko pan-python pan-device
Cisco
IOS
PaloAlto
PAN-OS
他・・・
対応機種は抜粋
構
成
管
理
ツ
ー
ル
Python
ラ
イ
ブ
ラ
リ
Salt
【紹介】
NW
機
器
全体像 (機能概要)
8
機能 \ ツール
Netmiko NAPALM Ansible Salt
種別 Pythonライブラリ 構成管理ツール
利用方法 Python のコードにて自動化する 定義ファイルやツールのコマン
ドにて自動化する
コーディング不要
× △
一部CLIあり
● ●
マルチ
ベンダー
抽象化
設定
コマンド
×
コマンド直接指定
△
ごく一部
×
ベンダー別
モジュールを利用
(抽象化アプローチが
異なるため)
△
ごく一部
表示
コマンド
×
コマンド直接指定
△
一部
×
ベンダー別
モジュールを利用
(抽象化アプローチが
異なるため)
△
一部
基本操作 ● ● ● ●
NETCONF関連は今回は対象外
9
2. Netmiko
全体像 Netmiko NAPALM Ansible Salt 比較 まとめ
Netmiko 概要
10
ベンダーA ベンダーB ベンダーC
表示コマンド 表示コマンド 表示コマンド
設定コマンド 設定コマンド 設定コマンド
ログイン ログイン ログイン
モード移行 モード移行 モード移行
コミット コミットコミット
共通メソッド
として抽象化
ベンダーごとのコマンド
を直接指定
シンプルで薄い抽象化ライブラリ
Netmiko 対応機種
11
 Arista vEOS
 Cisco ASA
 Cisco IOS
 Cisco IOS-XE
 Cisco IOS-XR
 Cisco NX-OS
 Cisco SG300
 HP Comware7
 HP ProCurve
 Juniper Junos
 Linux
 Alcatel AOS6/AOS8
※v1.4.2 時点。ベンダーによって対応の差がある。
一覧: https://github.com/ktbyers/netmiko
 Avaya ERS
 Avaya VSP
 Brocade VDX
 Brocade ICX/FastIron
 Brocade MLX/NetIron
 Cisco WLC
 Dell-Force10 DNOS9
 Dell PowerConnect
 Huawei
 Mellanox
 Palo Alto PAN-OS
 Pluribus
 Vyatta VyOS
 A10
 Accedian
 Alcatel-Lucent SR-OS
 Ciena SAOS
 Cisco Telepresence
 CheckPoint Gaia
 Enterasys
 Extreme EXOS
 Extreme Wing
 F5 LTM
 Fortinet
 MRV Communications OptiSwitch
Netmikoによる状態表示例(コード)
12
from netmiko import ConnectHandler
# 機器情報の定義
ios = {
"device_type": "cisco_ios", # デバイスタイプ
"ip": "192.168.0.254", # ログイン先
"username": "testuuser", # ログインユーザー
"password": "testpassword", # ログインパスワード
"secret": "testsecret" # enable パスワード
}
# 接続
net_connect = ConnectHandler(**ios)
# enable モード移行
net_connect.enable()
# コマンド実行
output = net_connect.send_command("show ip int brief")
# コマンド実行結果の出力
print(output)
# 切断
net_connect.disconnect()
juniper_junos
paloalto_panos
など
enableコマンドを抽象化
表示コマンドは直接指定
Netmikoによる状態表示例(結果)
13
> python netmiko_show.py
Interface IP-Address OK? Method Status Protocol
Vlan1 10.1.0.254 YES NVRAM up down
Vlan2 10.2.0.254 YES NVRAM up down
Vlan192 192.168.0.254 YES NVRAM up up
GigabitEthernet1/0/1 unassigned YES unset down down
GigabitEthernet1/0/2 unassigned YES unset down down
GigabitEthernet1/0/3 unassigned YES unset down down
GigabitEthernet1/0/4 unassigned YES unset down down
GigabitEthernet1/0/5 unassigned YES unset down down
GigabitEthernet1/0/6 unassigned YES unset down down
(略)
GigabitEthernet1/0/21 unassigned YES unset down down
GigabitEthernet1/0/22 unassigned YES unset down down
GigabitEthernet1/0/23 unassigned YES unset down down
GigabitEthernet1/0/24 unassigned YES unset up up
>
コマンド実行結果が
そのまま表示される
スクリプト実行
Netmikoによる設定変更例(コード)
14
from netmiko import ConnectHandler
# 機器情報の定義
ios = {
"device_type": "cisco_ios", # デバイスタイプ
"ip": "192.168.0.254", # ログイン先
"username": "testuuser", # ログインユーザー
"password": "testpassword", # ログインパスワード
"secret": "testsecret" # enable パスワード
}
# 接続
net_connect = ConnectHandler(**ios)
# enable モード移行
net_connect.enable()
# 実行したい設定コマンドをリストで定義
lines = ["int vlan 1", "description ***testdesc***"]
# 設定コマンドを実行
net_connect.send_config_set(lines)
# 切断
net_connect.disconnect()
設定コマンドは直接指定
router1# sh run int vlan 1
Building configuration...
Current configuration : 99 bytes
!
interface Vlan1
description ***testdesc***
ip address 10.1.0.254 255.255.255.0
ip ospf cost 10
end
Netmikoによる設定変更例(結果)
15
> python netmiko_config.py
>
設定が入る
NW機器側で確認
スクリプト実行
Netmiko まとめ
16
シンプルで薄い抽象化ライブラリ
17
3. NAPALM
全体像 Netmiko NAPALM Ansible Salt 比較 まとめ
NAPALM 概要
18
ベンダーA ベンダーB ベンダーC
表示コマンド 表示コマンド 表示コマンド
設定コマンド 設定コマンド 設定コマンド
ログイン ログイン ログイン
モード移行 モード移行 モード移行
コミット コミット
共通メソッド
として抽象化コミット
設定コマンドはごく一部
表示コマンドは一部
多機能で厚い抽象化ライブラリ
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
}
NAPALM 対応機種
20
 EOS
 JunOS
 IOS-XR
 FortiOS
 NXOS
※v1.2 時点。ベンダーによって対応の差がある。
一覧: https://napalm.readthedocs.io/en/latest/support/index.html
 IOS
 Pluribus
 PANOS
 MikroTik
 VyOS
NAPALM 情報取得メソッド対応表1/2
21
※v1.2 時点。ベンダーによって対応の差がある。
詳細・引用元: 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 時点。ベンダーによって対応の差がある。
詳細・引用元: 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
多機能で厚い抽象化ライブラリ
28
4. Ansible
全体像 Netmiko NAPALM Ansible Salt 比較 まとめ
Ansible 概要
29
ベンダーA ベンダーB ベンダーC
各ベンダー(OS)の
機能ごとにモジュールが
用意されている
A用モジュール群
シンプルな構成管理ツール
B用モジュール群 C用モジュール群
表示コマンド
設定コマンド
ログイン
モード移行
コミット
ログイン
モード移行
表示コマンド
設定コマンド
ログイン
モード移行
コミット
ログイン
モード移行
表示コマンド
設定コマンド
ログイン
モード移行
コミット
ログイン
モード移行
Ansible 概要
 エージェントレスな構成管理ツール
 YAMLで構成定義する(Playbook)
 ネットワーク機器にも対応
 対応の程度は様々
 直接コマンドを指定する必要があるものもあれば、パラメータを指定するだけでよいも
のもある。
30
---
- 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機器)
31
 A10
 Aos
 Asa
 Avi
 Bigswitch
 Citrix
 Cloudengine
 Cumulus
 Dellos10
 Dellos6
 Dellos9
※7/19 時点公式ドキュメント上。ベンダーによって対応の差がある。
一覧: http://docs.ansible.com/ansible/list_of_network_modules.html
 Eos
 F5
 Fortios
 Illumos
 Ios
 Iosxr
 Junos
 Lenovo
 Netconf
 Netvisor
 Nxos
 Nxos
 Openswitch
 Ordnance
 Ovs
 Panos
 Sros
 Vyos
Network Moduleの数は337
Ansibleによる状態表示例(Playbook)
32
---
- 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による状態表示例(結果)
33
> 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)
34
---
- 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による設定変更例(結果)
35
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
設定変更されたこを示す
Ansible デモ
36
デモ画面をご覧ください
ルーター
(1) Playbookを
あらかじめ定義
(2) Playbookコマンドを実行 (3) Playbookに応じた設定変
更を実行
デモ内容【設定変更】
Ansible まとめ
37
シンプルな構成管理ツール
38
5. Salt
全体像 Netmiko NAPALM Ansible Salt 比較 まとめ
Salt 概要
39
ベンダーA ベンダーB ベンダーC
表示コマンド 表示コマンド 表示コマンド
設定コマンド 設定コマンド 設定コマンド
ログイン ログイン ログイン
モード移行 モード移行 モード移行
コミット コミット
モジュール
として抽象化コミット
多機能な構成管理ツール
設定コマンドはごく一部
表示コマンドは一部
Salt 概要
 マスター/エージェント型の構成管理ツール
 YAMLで構成定義する(State)
 高機能
 イベントドリブンの仕組み、スケジューラー、Web
APIもあり
 ネットワーク機器にも対応
 v2016.11.0でNAPALMを統合(今回の紹介対象)
40
update_ntp_config:
netntp.managed:
- servers:
- 10.0.0.1
- 10.0.0.2
State
SSH等
※masterless という構成もあり
Saltの主な用語
 Master:マスター
 Minion:エージェント。Masterから指示を受ける
 Grains:機器の基本データを保存する仕組み
 Pillars:任意のデータを保存する仕組み
41
Master
指示
Minion
ZeroMQ
SaltによるNW機器対応の仕組み
 「Proxy Minion」を経由してNW機器に指示を出す
42
Master
指示
Proxy Minion
指示
SSH等
1台のサーバーで Master/Proxy Minionを兼用してもOK
NW機器
Salt 対応機種(NW機器)
43
 EOS
 JunOS
 IOS-XR
 FortiOS
 NXOS
※NAPALM v1.2 時点。ベンダーによって対応の差がある。
一覧: https://napalm.readthedocs.io/en/latest/support/index.html
 IOS
 Pluribus
 PANOS
 MikroTik
 VyOS
基本的に NAPALM と同様
Salt からNW機器への接続設定
44
proxy:
proxytype: napalm
driver: ios
host: 10.0.0.254
username: testuser
passwd: testpass
base:
device1:
- device1
/etc/salt/pillar/device1.sls/etc/salt/pillar/top.sls
※上記以外にもproxy minionのデーモン設定などが必要
Proxy minion定義
(NW接続情報)
IDと.slsファイル(右記)
との関連付け
Master Proxy Minion NW機器
NW機器に接続するための設定ファイル
Saltによる状態表示例(コマンド・結果)
45
> salt -G "vendor:cisco" grains.item vendor os model interfaces serial
device1:
----------
interfaces:
- GigabitEthernet1
- GigabitEthernet2
- GigabitEthernet3
- GigabitEthernet4
model:
CSR1000V
os:
ios
serial:
9KX********
vendor:
Cisco
saltコマンド実行
パースされて情報が表示される
vendorがciscoの機器の指定した情報を取得
(コマンド直接指定は不要)
Saltによる設定変更例(state)
46
include:
- ntp
update_ntp_config:
netntp.managed:
- servers:
- 10.0.0.1
- 10.0.0.2
/etc/salt/tates/router/ntp.sls/etc/salt/tates/router/init.sls
NTPサーバーの参照定義
(コマンド直接指定は不要)
stateファイルのinclude
Saltによる設定変更例(結果)
47
router1#sh run | inc ntp
ntp server 10.0.0.1
ntp server 10.0.0.2
設定が入る
NW機器側で確認Saltコマンド実行
> salt "device1" state.sls router.ntp
device1:
----------
ID: update_my_ntp_config
Function: netntp.managed
Result: True
Comment:
Started: 09:43:43.301443
Duration: 32133.92 ms
Changes:
----------
servers:
----------
added:
- 10.0.0.1
- 10.0.0.2
Summary for device1
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
Total run time: 32.134 s
設定変更され
たことを示す
Salt デモ
48
デモ画面をご覧ください
ルーター
ntp.servers:
- 172.16.0.1
- 172.16.0.2
- 172.16.0.3
(1) ルーター設定用の定義
ファイルを編集・保存
(2) 定義ファイルの更新を検出 (3) 定義ファイルに応じた
設定変更を実行
デモ内容【イベントドリブンな設定変更】
Salt まとめ
49
多機能な構成管理ツール
50
6. 比較
全体像 Netmiko NAPALM Ansible Salt 比較 まとめ
比較 1/2
51
Netmiko NAPALM Ansible Salt
種別 Pythonライブラリ 構成管理ツール
利用方法 Python のコードにて自動化する 定義ファイルやツールのコマン
ドにて自動化する
コーディング不要
× △
一部CLIあり
● ●
マルチ
ベンダー
抽象化
設定
コマンド
×
コマンド直接指定
△
ごく一部
×
ベンダー別
モジュールを利用
(抽象化アプローチが
異なるため)
△
ごく一部
表示
コマンド
×
コマンド直接指定
△
一部
×
ベンダー別
モジュールを利用
(抽象化アプローチが
異なるため)
△
一部
基本操作 ● ● ● ●
(機能概要からの再掲分)
比較 2/2
52
Netmiko NAPALM Ansible Salt
メリット 対応機種が多い マルチベン
ダー環境の情
報取得に強い
シンプルな構
成でスタート
できる
イベントドリ
ブン仕組みや
WebAPI等もあ
り高機能
(NAPALMの特徴も持つ)
デメリット 自分で書くコー
ド量が多い
設定系メソッ
ドが少ない
機種ごとにモ
ジュールを使
い分ける必要
がある
(抽象化アプローチが
異なるため)
情報が少ない
Googleヒット件数(*1) 10,500
(-1,900)
193,000
(+7,000)
3,780,000
(+230,000)
529,000
(+40,000)
フォーク数 274
(+9)
381
(+34)
8,613
(+265)
3,716
(+68)
Slackメンバー数
(Network to Code Slack 内)
512
(+21)
768
(+40)
1,018
(+32)
307
(+22)
2017/8/17現在の数値。 () 内は直近1か月の変動。
*1 NAPALM は「NAPALM python」として検索
ツールの選定ポイント
53
 (1) 管理対象機器に対応しているか
 どの程度対応しているかも確認する
 (2) コードを書くことを良しとするか、しないか
 良しとしない場合はAnsibleやSaltのような構成管理ツール
 (3) シンプル or 高機能
 高機能なものは学習コストが高い。
 (4) どの程度抽象化したいか
 例えば、TeraTermマクロより少し楽になればよい程度であればNetmiko
 (5) 管理対象機器のベンダー数はどの程度か
 Ansibleはベンダーごとにモジュールを使い分ける必要がある
 (6) 既存で導入している構成管理ツールはあるか
 ある場合は統一する方が良いのでは
54
7. まとめ
全体像 Netmiko NAPALM Ansible Salt 比較 まとめ
まとめ
55
 ご紹介したツール類
Netmiko:シンプルで薄い抽象化ライブラリ
 NAPALM:多機能で厚い抽象化ライブラリ
 Ansible:シンプルな構成管理ツール
 Salt:多機能な構成管理ツール
様々なNW機器や仕様があるため、
それぞれツールが対応している機器や特徴を理解して
適材適所で活用していきましょう。
これから
56
人
•設計実装スキル
•文化形成
・・等
仕様
•標準化
•API拡充
・・等
ツール
•構成管理ツール
•ライブラリ
・・等
人、ツール、仕様がすべて揃った自動化の世界を目指しませんか?
ここを目指す
参考情報(Web)
57
 Netmiko
 Tutorial
 https://pynet.twb-tech.com/blog/automation/netmiko.html
 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
 Salt
 Salt によるネットワーク自動化の紹介(2017年5月版)
 https://ripe74.ripe.net/presentations/18-RIPE-74-Network-automation-at-scale-up-and-running-in-60-minutes.pdf
 全体
 ネットワーク自動化アンケート結果(NetDevOps Survey - Fall 2016)
 https://docs.google.com/forms/d/e/1FAIpQLSdiBNMK0ZUmgBSNEaOWa-YHGQ4AlZo7EhB52_dXzvMqic3eHA/viewanalytics
参考情報(イベント・書籍)
58
Ansible Meetup in Tokyo 2017.09
書籍「Network Programmability and Automation」
https://ansible-users.connpass.com/event/62508/
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 8 Source Control
Chapter 9 DevOps
Chapter 10 Continuous Integration
Appendix A Text Editors
Appendix B Docker Networking
Appendix C Open vSwitch
2017年10月発売予定(8月調査時点)
9/1(金) 19:00~ @恵比寿
「AnsibleとNAPALMでネットワークをテストする」でLT予定

More Related Content

What's hot

ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)Kentaro Ebisawa
 
Ansible 2.10 と Collection
Ansible 2.10 と CollectionAnsible 2.10 と Collection
Ansible 2.10 と Collectionakira6592
 
[AKIBA.AWS] VPCをネットワーク図で理解してみる
[AKIBA.AWS] VPCをネットワーク図で理解してみる[AKIBA.AWS] VPCをネットワーク図で理解してみる
[AKIBA.AWS] VPCをネットワーク図で理解してみるShuji Kikuchi
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介AdvancedTechNight
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)Trainocate Japan, Ltd.
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)シスコシステムズ合同会社
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Sho A
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門Kohei Tokunaga
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話Masahito Zembutsu
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAkihiro Kuwano
 
vSRX on Your Laptop : PCで始めるvSRX ~JUNOSをさわってみよう!~
vSRX on Your Laptop : PCで始めるvSRX ~JUNOSをさわってみよう!~vSRX on Your Laptop : PCで始めるvSRX ~JUNOSをさわってみよう!~
vSRX on Your Laptop : PCで始めるvSRX ~JUNOSをさわってみよう!~Juniper Networks (日本)
 
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜Masahito Zembutsu
 
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話Yuta Shimada
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
BGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたBGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたakira6592
 

What's hot (20)

ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)ネットワーク機器のAPIあれこれ入門(NetOpsCoding#2)
ネットワーク機器のAPIあれこれ入門 (NetOpsCoding#2)
 
Ansible 2.10 と Collection
Ansible 2.10 と CollectionAnsible 2.10 と Collection
Ansible 2.10 と Collection
 
[AKIBA.AWS] VPCをネットワーク図で理解してみる
[AKIBA.AWS] VPCをネットワーク図で理解してみる[AKIBA.AWS] VPCをネットワーク図で理解してみる
[AKIBA.AWS] VPCをネットワーク図で理解してみる
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
ヤフー発のメッセージキュー「Pulsar」のご紹介
ヤフー発のメッセージキュー「Pulsar」のご紹介ヤフー発のメッセージキュー「Pulsar」のご紹介
ヤフー発のメッセージキュー「Pulsar」のご紹介
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話
 
Mavenの真実とウソ
Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソ
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
vSRX on Your Laptop : PCで始めるvSRX ~JUNOSをさわってみよう!~
vSRX on Your Laptop : PCで始めるvSRX ~JUNOSをさわってみよう!~vSRX on Your Laptop : PCで始めるvSRX ~JUNOSをさわってみよう!~
vSRX on Your Laptop : PCで始めるvSRX ~JUNOSをさわってみよう!~
 
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
忙しい人のための Rocky Linux 入門〜Rocky LinuxはCentOSの後継者たり得るか?〜
 
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
BGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたBGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみた
 

Viewers also liked

遠くの"計画"よりも今日の"CD"(継続的デプロイ) #jenkinsstudy
遠くの"計画"よりも今日の"CD"(継続的デプロイ) #jenkinsstudy遠くの"計画"よりも今日の"CD"(継続的デプロイ) #jenkinsstudy
遠くの"計画"よりも今日の"CD"(継続的デプロイ) #jenkinsstudyKazuhito Miura
 
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリde:code 2017
 
AnsibleとNAPALMでネットワークをテストする
AnsibleとNAPALMでネットワークをテストするAnsibleとNAPALMでネットワークをテストする
AnsibleとNAPALMでネットワークをテストするakira6592
 
NetOpsCoding#5 introduction
NetOpsCoding#5 introductionNetOpsCoding#5 introduction
NetOpsCoding#5 introductionTaiji Tsuchiya
 
Ansible x napalm x nso 解説・比較パネルディスカッション nso
Ansible x napalm x nso 解説・比較パネルディスカッション nsoAnsible x napalm x nso 解説・比較パネルディスカッション nso
Ansible x napalm x nso 解説・比較パネルディスカッション nsoAkira Iwamoto
 
Telemetry事始め
Telemetry事始めTelemetry事始め
Telemetry事始めnpsg
 
パケットキャプチャでインフラ主導のデバッグ環境を作る
パケットキャプチャでインフラ主導のデバッグ環境を作るパケットキャプチャでインフラ主導のデバッグ環境を作る
パケットキャプチャでインフラ主導のデバッグ環境を作るcloretsblack
 
なぜネットワーク運用自動化が進まないのか Whitebox switch編
なぜネットワーク運用自動化が進まないのか Whitebox switch編なぜネットワーク運用自動化が進まないのか Whitebox switch編
なぜネットワーク運用自動化が進まないのか Whitebox switch編Taiji Tsuchiya
 
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
スマホのセンサーでネットワークを操る  ~Ansible TowerによるレガシーNW機器のAPI化~スマホのセンサーでネットワークを操る  ~Ansible TowerによるレガシーNW機器のAPI化~
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~akira6592
 
ドメイン名の ライフサイクルマネージメント20171031
ドメイン名の ライフサイクルマネージメント20171031ドメイン名の ライフサイクルマネージメント20171031
ドメイン名の ライフサイクルマネージメント20171031Yoshiki Ishida
 
NAPALMで作るネットワークオペレーション自動化への道のり
NAPALMで作るネットワークオペレーション自動化への道のりNAPALMで作るネットワークオペレーション自動化への道のり
NAPALMで作るネットワークオペレーション自動化への道のりToshiya Mabuchi
 
Jenkinsfileのlintで救える命がある
Jenkinsfileのlintで救える命があるJenkinsfileのlintで救える命がある
Jenkinsfileのlintで救える命があるJumpei Miyata
 
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdateYuki Iwanari
 
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱Kiyotaka Oku
 
Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編kimulla
 
Multibranch pipelineでいろいろ学んだこと
Multibranch pipelineでいろいろ学んだことMultibranch pipelineでいろいろ学んだこと
Multibranch pipelineでいろいろ学んだことaha_oretama
 

Viewers also liked (16)

遠くの"計画"よりも今日の"CD"(継続的デプロイ) #jenkinsstudy
遠くの"計画"よりも今日の"CD"(継続的デプロイ) #jenkinsstudy遠くの"計画"よりも今日の"CD"(継続的デプロイ) #jenkinsstudy
遠くの"計画"よりも今日の"CD"(継続的デプロイ) #jenkinsstudy
 
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
[DO02] Jenkins PipelineとBlue Oceanによる、フルスクラッチからの継続的デリバリ
 
AnsibleとNAPALMでネットワークをテストする
AnsibleとNAPALMでネットワークをテストするAnsibleとNAPALMでネットワークをテストする
AnsibleとNAPALMでネットワークをテストする
 
NetOpsCoding#5 introduction
NetOpsCoding#5 introductionNetOpsCoding#5 introduction
NetOpsCoding#5 introduction
 
Ansible x napalm x nso 解説・比較パネルディスカッション nso
Ansible x napalm x nso 解説・比較パネルディスカッション nsoAnsible x napalm x nso 解説・比較パネルディスカッション nso
Ansible x napalm x nso 解説・比較パネルディスカッション nso
 
Telemetry事始め
Telemetry事始めTelemetry事始め
Telemetry事始め
 
パケットキャプチャでインフラ主導のデバッグ環境を作る
パケットキャプチャでインフラ主導のデバッグ環境を作るパケットキャプチャでインフラ主導のデバッグ環境を作る
パケットキャプチャでインフラ主導のデバッグ環境を作る
 
なぜネットワーク運用自動化が進まないのか Whitebox switch編
なぜネットワーク運用自動化が進まないのか Whitebox switch編なぜネットワーク運用自動化が進まないのか Whitebox switch編
なぜネットワーク運用自動化が進まないのか Whitebox switch編
 
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
スマホのセンサーでネットワークを操る  ~Ansible TowerによるレガシーNW機器のAPI化~スマホのセンサーでネットワークを操る  ~Ansible TowerによるレガシーNW機器のAPI化~
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
 
ドメイン名の ライフサイクルマネージメント20171031
ドメイン名の ライフサイクルマネージメント20171031ドメイン名の ライフサイクルマネージメント20171031
ドメイン名の ライフサイクルマネージメント20171031
 
NAPALMで作るネットワークオペレーション自動化への道のり
NAPALMで作るネットワークオペレーション自動化への道のりNAPALMで作るネットワークオペレーション自動化への道のり
NAPALMで作るネットワークオペレーション自動化への道のり
 
Jenkinsfileのlintで救える命がある
Jenkinsfileのlintで救える命があるJenkinsfileのlintで救える命がある
Jenkinsfileのlintで救える命がある
 
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
改訂第3版 Jenkins 実践入門 what's newから見るJenkinsのUpdate
 
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
 
Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編Multibranch Pipeline with Docker 入門編
Multibranch Pipeline with Docker 入門編
 
Multibranch pipelineでいろいろ学んだこと
Multibranch pipelineでいろいろ学んだことMultibranch pipelineでいろいろ学んだこと
Multibranch pipelineでいろいろ学んだこと
 

Similar to ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)

ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例fumoto kazuhiro
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方Masahiro Hidaka
 
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)akira6592
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
OpenWrtによるサイト間IPsec接続
OpenWrtによるサイト間IPsec接続OpenWrtによるサイト間IPsec接続
OpenWrtによるサイト間IPsec接続Takashi Umeno
 
161027 net opscoding-junos-automation
161027 net opscoding-junos-automation161027 net opscoding-junos-automation
161027 net opscoding-junos-automationHiromi Tsukamoto
 
Getting Started with Jetson Nano
Getting Started with Jetson NanoGetting Started with Jetson Nano
Getting Started with Jetson NanoNVIDIA Japan
 
Cloud Foundry にアプリケーションを push する際の典型的な10のエラー
Cloud Foundry にアプリケーションを push する際の典型的な10のエラーCloud Foundry にアプリケーションを push する際の典型的な10のエラー
Cloud Foundry にアプリケーションを push する際の典型的な10のエラーnota-ja
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Mori Shingo
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義ria1201
 
仕事で使うちょっとしたコードを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
 
Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)akira6592
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタl_b__
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and dockerHiroshi Miura
 
Net opscoding#4発表資料
Net opscoding#4発表資料Net opscoding#4発表資料
Net opscoding#4発表資料Kenta Hattori
 
GNS3上の仮想アプライアンス+GitLabRunner+BDDによるテスト自動化
GNS3上の仮想アプライアンス+GitLabRunner+BDDによるテスト自動化GNS3上の仮想アプライアンス+GitLabRunner+BDDによるテスト自動化
GNS3上の仮想アプライアンス+GitLabRunner+BDDによるテスト自動化Shigeru Tsubota
 
20130315 abc firefox_os
20130315 abc firefox_os20130315 abc firefox_os
20130315 abc firefox_osTomoaki Konno
 

Similar to ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催) (20)

ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方
 
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
OpenWrtによるサイト間IPsec接続
OpenWrtによるサイト間IPsec接続OpenWrtによるサイト間IPsec接続
OpenWrtによるサイト間IPsec接続
 
161027 net opscoding-junos-automation
161027 net opscoding-junos-automation161027 net opscoding-junos-automation
161027 net opscoding-junos-automation
 
Getting Started with Jetson Nano
Getting Started with Jetson NanoGetting Started with Jetson Nano
Getting Started with Jetson Nano
 
Cloud Foundry にアプリケーションを push する際の典型的な10のエラー
Cloud Foundry にアプリケーションを push する際の典型的な10のエラーCloud Foundry にアプリケーションを push する際の典型的な10のエラー
Cloud Foundry にアプリケーションを push する際の典型的な10のエラー
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義
 
仕事で使うちょっとしたコードを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
 
Ansible2.0と実用例
Ansible2.0と実用例Ansible2.0と実用例
Ansible2.0と実用例
 
Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタ
 
about DakotagUI
about DakotagUIabout DakotagUI
about DakotagUI
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and docker
 
Net opscoding#4発表資料
Net opscoding#4発表資料Net opscoding#4発表資料
Net opscoding#4発表資料
 
ドリコムのインフラCI
ドリコムのインフラCIドリコムのインフラCI
ドリコムのインフラCI
 
GNS3上の仮想アプライアンス+GitLabRunner+BDDによるテスト自動化
GNS3上の仮想アプライアンス+GitLabRunner+BDDによるテスト自動化GNS3上の仮想アプライアンス+GitLabRunner+BDDによるテスト自動化
GNS3上の仮想アプライアンス+GitLabRunner+BDDによるテスト自動化
 
20130315 abc firefox_os
20130315 abc firefox_os20130315 abc firefox_os
20130315 abc firefox_os
 

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
 
自動化の下ごしらえ
自動化の下ごしらえ自動化の下ごしらえ
自動化の下ごしらえakira6592
 
向き合うエンジニア 2020年度版
向き合うエンジニア 2020年度版向き合うエンジニア 2020年度版
向き合うエンジニア 2020年度版akira6592
 
はじめてAnsibleのバグ修正に協力してみた
はじめてAnsibleのバグ修正に協力してみたはじめてAnsibleのバグ修正に協力してみた
はじめてAnsibleのバグ修正に協力してみたakira6592
 
CML-Personal (VIRL2)のインストールと基本機能
CML-Personal (VIRL2)のインストールと基本機能CML-Personal (VIRL2)のインストールと基本機能
CML-Personal (VIRL2)のインストールと基本機能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
 
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)akira6592
 
Ansibleではじめるサーバー・ネットワークの自動化(2019/02版)
Ansibleではじめるサーバー・ネットワークの自動化(2019/02版)Ansibleではじめるサーバー・ネットワークの自動化(2019/02版)
Ansibleではじめるサーバー・ネットワークの自動化(2019/02版)akira6592
 
「自動化の行き着く先は?」をうけて
「自動化の行き着く先は?」をうけて「自動化の行き着く先は?」をうけて
「自動化の行き着く先は?」をうけて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 でお世話になっている機能と拡張
 
自動化の下ごしらえ
自動化の下ごしらえ自動化の下ごしらえ
自動化の下ごしらえ
 
向き合うエンジニア 2020年度版
向き合うエンジニア 2020年度版向き合うエンジニア 2020年度版
向き合うエンジニア 2020年度版
 
はじめて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
 
私たちは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 との付き合い方
 
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)
Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)
 
Ansibleではじめるサーバー・ネットワークの自動化(2019/02版)
Ansibleではじめるサーバー・ネットワークの自動化(2019/02版)Ansibleではじめるサーバー・ネットワークの自動化(2019/02版)
Ansibleではじめるサーバー・ネットワークの自動化(2019/02版)
 
「自動化の行き着く先は?」をうけて
「自動化の行き着く先は?」をうけて「自動化の行き着く先は?」をうけて
「自動化の行き着く先は?」をうけて
 

Recently uploaded

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~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...博三 太田
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 

Recently uploaded (14)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~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...
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 

ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)

  • 3. 本日の内容 3  概要  全体像  各ツールの説明  Netmiko  NAPALM  Ansible  Salt  比較  まとめ
  • 4. 自己紹介 4 @akira6592 名前 横地 晃 経歴 ・2012年エーピーコミュニケーションズ入社 ・ネットワークの設計構築業務を担当 ・プロフェッショナル職 (Twitter, Qiita, blog, SlideShare)
  • 5. 5 1. 全体像 全体像 Netmiko NAPALM Ansible Salt 比較 まとめ
  • 7. 全体像 (ツール依存イメージ) 7 Netmiko 【紹介】 Ansible 【紹介】 NAPALM 【紹介】 paramiko pan-python pan-device Cisco IOS PaloAlto PAN-OS 他・・・ 対応機種は抜粋 構 成 管 理 ツ ー ル Python ラ イ ブ ラ リ Salt 【紹介】 NW 機 器
  • 8. 全体像 (機能概要) 8 機能 \ ツール Netmiko NAPALM Ansible Salt 種別 Pythonライブラリ 構成管理ツール 利用方法 Python のコードにて自動化する 定義ファイルやツールのコマン ドにて自動化する コーディング不要 × △ 一部CLIあり ● ● マルチ ベンダー 抽象化 設定 コマンド × コマンド直接指定 △ ごく一部 × ベンダー別 モジュールを利用 (抽象化アプローチが 異なるため) △ ごく一部 表示 コマンド × コマンド直接指定 △ 一部 × ベンダー別 モジュールを利用 (抽象化アプローチが 異なるため) △ 一部 基本操作 ● ● ● ● NETCONF関連は今回は対象外
  • 9. 9 2. Netmiko 全体像 Netmiko NAPALM Ansible Salt 比較 まとめ
  • 10. Netmiko 概要 10 ベンダーA ベンダーB ベンダーC 表示コマンド 表示コマンド 表示コマンド 設定コマンド 設定コマンド 設定コマンド ログイン ログイン ログイン モード移行 モード移行 モード移行 コミット コミットコミット 共通メソッド として抽象化 ベンダーごとのコマンド を直接指定 シンプルで薄い抽象化ライブラリ
  • 11. Netmiko 対応機種 11  Arista vEOS  Cisco ASA  Cisco IOS  Cisco IOS-XE  Cisco IOS-XR  Cisco NX-OS  Cisco SG300  HP Comware7  HP ProCurve  Juniper Junos  Linux  Alcatel AOS6/AOS8 ※v1.4.2 時点。ベンダーによって対応の差がある。 一覧: https://github.com/ktbyers/netmiko  Avaya ERS  Avaya VSP  Brocade VDX  Brocade ICX/FastIron  Brocade MLX/NetIron  Cisco WLC  Dell-Force10 DNOS9  Dell PowerConnect  Huawei  Mellanox  Palo Alto PAN-OS  Pluribus  Vyatta VyOS  A10  Accedian  Alcatel-Lucent SR-OS  Ciena SAOS  Cisco Telepresence  CheckPoint Gaia  Enterasys  Extreme EXOS  Extreme Wing  F5 LTM  Fortinet  MRV Communications OptiSwitch
  • 12. Netmikoによる状態表示例(コード) 12 from netmiko import ConnectHandler # 機器情報の定義 ios = { "device_type": "cisco_ios", # デバイスタイプ "ip": "192.168.0.254", # ログイン先 "username": "testuuser", # ログインユーザー "password": "testpassword", # ログインパスワード "secret": "testsecret" # enable パスワード } # 接続 net_connect = ConnectHandler(**ios) # enable モード移行 net_connect.enable() # コマンド実行 output = net_connect.send_command("show ip int brief") # コマンド実行結果の出力 print(output) # 切断 net_connect.disconnect() juniper_junos paloalto_panos など enableコマンドを抽象化 表示コマンドは直接指定
  • 13. Netmikoによる状態表示例(結果) 13 > python netmiko_show.py Interface IP-Address OK? Method Status Protocol Vlan1 10.1.0.254 YES NVRAM up down Vlan2 10.2.0.254 YES NVRAM up down Vlan192 192.168.0.254 YES NVRAM up up GigabitEthernet1/0/1 unassigned YES unset down down GigabitEthernet1/0/2 unassigned YES unset down down GigabitEthernet1/0/3 unassigned YES unset down down GigabitEthernet1/0/4 unassigned YES unset down down GigabitEthernet1/0/5 unassigned YES unset down down GigabitEthernet1/0/6 unassigned YES unset down down (略) GigabitEthernet1/0/21 unassigned YES unset down down GigabitEthernet1/0/22 unassigned YES unset down down GigabitEthernet1/0/23 unassigned YES unset down down GigabitEthernet1/0/24 unassigned YES unset up up > コマンド実行結果が そのまま表示される スクリプト実行
  • 14. Netmikoによる設定変更例(コード) 14 from netmiko import ConnectHandler # 機器情報の定義 ios = { "device_type": "cisco_ios", # デバイスタイプ "ip": "192.168.0.254", # ログイン先 "username": "testuuser", # ログインユーザー "password": "testpassword", # ログインパスワード "secret": "testsecret" # enable パスワード } # 接続 net_connect = ConnectHandler(**ios) # enable モード移行 net_connect.enable() # 実行したい設定コマンドをリストで定義 lines = ["int vlan 1", "description ***testdesc***"] # 設定コマンドを実行 net_connect.send_config_set(lines) # 切断 net_connect.disconnect() 設定コマンドは直接指定
  • 15. router1# sh run int vlan 1 Building configuration... Current configuration : 99 bytes ! interface Vlan1 description ***testdesc*** ip address 10.1.0.254 255.255.255.0 ip ospf cost 10 end Netmikoによる設定変更例(結果) 15 > python netmiko_config.py > 設定が入る NW機器側で確認 スクリプト実行
  • 17. 17 3. NAPALM 全体像 Netmiko NAPALM Ansible Salt 比較 まとめ
  • 18. NAPALM 概要 18 ベンダーA ベンダーB ベンダーC 表示コマンド 表示コマンド 表示コマンド 設定コマンド 設定コマンド 設定コマンド ログイン ログイン ログイン モード移行 モード移行 モード移行 コミット コミット 共通メソッド として抽象化コミット 設定コマンドはごく一部 表示コマンドは一部 多機能で厚い抽象化ライブラリ
  • 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 }
  • 20. NAPALM 対応機種 20  EOS  JunOS  IOS-XR  FortiOS  NXOS ※v1.2 時点。ベンダーによって対応の差がある。 一覧: https://napalm.readthedocs.io/en/latest/support/index.html  IOS  Pluribus  PANOS  MikroTik  VyOS
  • 21. NAPALM 情報取得メソッド対応表1/2 21 ※v1.2 時点。ベンダーによって対応の差がある。 詳細・引用元: 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 時点。ベンダーによって対応の差がある。 詳細・引用元: 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機器側で確認 スクリプト実行
  • 28. 28 4. Ansible 全体像 Netmiko NAPALM Ansible Salt 比較 まとめ
  • 29. Ansible 概要 29 ベンダーA ベンダーB ベンダーC 各ベンダー(OS)の 機能ごとにモジュールが 用意されている A用モジュール群 シンプルな構成管理ツール B用モジュール群 C用モジュール群 表示コマンド 設定コマンド ログイン モード移行 コミット ログイン モード移行 表示コマンド 設定コマンド ログイン モード移行 コミット ログイン モード移行 表示コマンド 設定コマンド ログイン モード移行 コミット ログイン モード移行
  • 30. Ansible 概要  エージェントレスな構成管理ツール  YAMLで構成定義する(Playbook)  ネットワーク機器にも対応  対応の程度は様々  直接コマンドを指定する必要があるものもあれば、パラメータを指定するだけでよいも のもある。 30 --- - hosts: cisco gather_facts: no connection: local tasks: - name: change password ios_config: lines: - username ope password opepass provider: "{{ cli }}" Playbook(YAML) SSH等
  • 31. Ansible 対応機種(NW機器) 31  A10  Aos  Asa  Avi  Bigswitch  Citrix  Cloudengine  Cumulus  Dellos10  Dellos6  Dellos9 ※7/19 時点公式ドキュメント上。ベンダーによって対応の差がある。 一覧: http://docs.ansible.com/ansible/list_of_network_modules.html  Eos  F5  Fortios  Illumos  Ios  Iosxr  Junos  Lenovo  Netconf  Netvisor  Nxos  Nxos  Openswitch  Ordnance  Ovs  Panos  Sros  Vyos Network Moduleの数は337
  • 32. Ansibleによる状態表示例(Playbook) 32 --- - 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] [インベントリファイル] 表示コマンドは直接指定
  • 33. Ansibleによる状態表示例(結果) 33 > 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実行 コマンド実行結果が 表示される
  • 34. Ansibleによる設定変更例(Playbook) 34 --- - 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] [インベントリファイル] 設定コマンドは直接指定
  • 35. Ansibleによる設定変更例(結果) 35 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 設定変更されたこを示す
  • 36. Ansible デモ 36 デモ画面をご覧ください ルーター (1) Playbookを あらかじめ定義 (2) Playbookコマンドを実行 (3) Playbookに応じた設定変 更を実行 デモ内容【設定変更】
  • 38. 38 5. Salt 全体像 Netmiko NAPALM Ansible Salt 比較 まとめ
  • 39. Salt 概要 39 ベンダーA ベンダーB ベンダーC 表示コマンド 表示コマンド 表示コマンド 設定コマンド 設定コマンド 設定コマンド ログイン ログイン ログイン モード移行 モード移行 モード移行 コミット コミット モジュール として抽象化コミット 多機能な構成管理ツール 設定コマンドはごく一部 表示コマンドは一部
  • 40. Salt 概要  マスター/エージェント型の構成管理ツール  YAMLで構成定義する(State)  高機能  イベントドリブンの仕組み、スケジューラー、Web APIもあり  ネットワーク機器にも対応  v2016.11.0でNAPALMを統合(今回の紹介対象) 40 update_ntp_config: netntp.managed: - servers: - 10.0.0.1 - 10.0.0.2 State SSH等 ※masterless という構成もあり
  • 41. Saltの主な用語  Master:マスター  Minion:エージェント。Masterから指示を受ける  Grains:機器の基本データを保存する仕組み  Pillars:任意のデータを保存する仕組み 41 Master 指示 Minion ZeroMQ
  • 42. SaltによるNW機器対応の仕組み  「Proxy Minion」を経由してNW機器に指示を出す 42 Master 指示 Proxy Minion 指示 SSH等 1台のサーバーで Master/Proxy Minionを兼用してもOK NW機器
  • 43. Salt 対応機種(NW機器) 43  EOS  JunOS  IOS-XR  FortiOS  NXOS ※NAPALM v1.2 時点。ベンダーによって対応の差がある。 一覧: https://napalm.readthedocs.io/en/latest/support/index.html  IOS  Pluribus  PANOS  MikroTik  VyOS 基本的に NAPALM と同様
  • 44. Salt からNW機器への接続設定 44 proxy: proxytype: napalm driver: ios host: 10.0.0.254 username: testuser passwd: testpass base: device1: - device1 /etc/salt/pillar/device1.sls/etc/salt/pillar/top.sls ※上記以外にもproxy minionのデーモン設定などが必要 Proxy minion定義 (NW接続情報) IDと.slsファイル(右記) との関連付け Master Proxy Minion NW機器 NW機器に接続するための設定ファイル
  • 45. Saltによる状態表示例(コマンド・結果) 45 > salt -G "vendor:cisco" grains.item vendor os model interfaces serial device1: ---------- interfaces: - GigabitEthernet1 - GigabitEthernet2 - GigabitEthernet3 - GigabitEthernet4 model: CSR1000V os: ios serial: 9KX******** vendor: Cisco saltコマンド実行 パースされて情報が表示される vendorがciscoの機器の指定した情報を取得 (コマンド直接指定は不要)
  • 46. Saltによる設定変更例(state) 46 include: - ntp update_ntp_config: netntp.managed: - servers: - 10.0.0.1 - 10.0.0.2 /etc/salt/tates/router/ntp.sls/etc/salt/tates/router/init.sls NTPサーバーの参照定義 (コマンド直接指定は不要) stateファイルのinclude
  • 47. Saltによる設定変更例(結果) 47 router1#sh run | inc ntp ntp server 10.0.0.1 ntp server 10.0.0.2 設定が入る NW機器側で確認Saltコマンド実行 > salt "device1" state.sls router.ntp device1: ---------- ID: update_my_ntp_config Function: netntp.managed Result: True Comment: Started: 09:43:43.301443 Duration: 32133.92 ms Changes: ---------- servers: ---------- added: - 10.0.0.1 - 10.0.0.2 Summary for device1 ------------ Succeeded: 1 (changed=1) Failed: 0 ------------ Total states run: 1 Total run time: 32.134 s 設定変更され たことを示す
  • 48. Salt デモ 48 デモ画面をご覧ください ルーター ntp.servers: - 172.16.0.1 - 172.16.0.2 - 172.16.0.3 (1) ルーター設定用の定義 ファイルを編集・保存 (2) 定義ファイルの更新を検出 (3) 定義ファイルに応じた 設定変更を実行 デモ内容【イベントドリブンな設定変更】
  • 50. 50 6. 比較 全体像 Netmiko NAPALM Ansible Salt 比較 まとめ
  • 51. 比較 1/2 51 Netmiko NAPALM Ansible Salt 種別 Pythonライブラリ 構成管理ツール 利用方法 Python のコードにて自動化する 定義ファイルやツールのコマン ドにて自動化する コーディング不要 × △ 一部CLIあり ● ● マルチ ベンダー 抽象化 設定 コマンド × コマンド直接指定 △ ごく一部 × ベンダー別 モジュールを利用 (抽象化アプローチが 異なるため) △ ごく一部 表示 コマンド × コマンド直接指定 △ 一部 × ベンダー別 モジュールを利用 (抽象化アプローチが 異なるため) △ 一部 基本操作 ● ● ● ● (機能概要からの再掲分)
  • 52. 比較 2/2 52 Netmiko NAPALM Ansible Salt メリット 対応機種が多い マルチベン ダー環境の情 報取得に強い シンプルな構 成でスタート できる イベントドリ ブン仕組みや WebAPI等もあ り高機能 (NAPALMの特徴も持つ) デメリット 自分で書くコー ド量が多い 設定系メソッ ドが少ない 機種ごとにモ ジュールを使 い分ける必要 がある (抽象化アプローチが 異なるため) 情報が少ない Googleヒット件数(*1) 10,500 (-1,900) 193,000 (+7,000) 3,780,000 (+230,000) 529,000 (+40,000) フォーク数 274 (+9) 381 (+34) 8,613 (+265) 3,716 (+68) Slackメンバー数 (Network to Code Slack 内) 512 (+21) 768 (+40) 1,018 (+32) 307 (+22) 2017/8/17現在の数値。 () 内は直近1か月の変動。 *1 NAPALM は「NAPALM python」として検索
  • 53. ツールの選定ポイント 53  (1) 管理対象機器に対応しているか  どの程度対応しているかも確認する  (2) コードを書くことを良しとするか、しないか  良しとしない場合はAnsibleやSaltのような構成管理ツール  (3) シンプル or 高機能  高機能なものは学習コストが高い。  (4) どの程度抽象化したいか  例えば、TeraTermマクロより少し楽になればよい程度であればNetmiko  (5) 管理対象機器のベンダー数はどの程度か  Ansibleはベンダーごとにモジュールを使い分ける必要がある  (6) 既存で導入している構成管理ツールはあるか  ある場合は統一する方が良いのでは
  • 54. 54 7. まとめ 全体像 Netmiko NAPALM Ansible Salt 比較 まとめ
  • 55. まとめ 55  ご紹介したツール類 Netmiko:シンプルで薄い抽象化ライブラリ  NAPALM:多機能で厚い抽象化ライブラリ  Ansible:シンプルな構成管理ツール  Salt:多機能な構成管理ツール 様々なNW機器や仕様があるため、 それぞれツールが対応している機器や特徴を理解して 適材適所で活用していきましょう。
  • 57. 参考情報(Web) 57  Netmiko  Tutorial  https://pynet.twb-tech.com/blog/automation/netmiko.html  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  Salt  Salt によるネットワーク自動化の紹介(2017年5月版)  https://ripe74.ripe.net/presentations/18-RIPE-74-Network-automation-at-scale-up-and-running-in-60-minutes.pdf  全体  ネットワーク自動化アンケート結果(NetDevOps Survey - Fall 2016)  https://docs.google.com/forms/d/e/1FAIpQLSdiBNMK0ZUmgBSNEaOWa-YHGQ4AlZo7EhB52_dXzvMqic3eHA/viewanalytics
  • 58. 参考情報(イベント・書籍) 58 Ansible Meetup in Tokyo 2017.09 書籍「Network Programmability and Automation」 https://ansible-users.connpass.com/event/62508/ 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 8 Source Control Chapter 9 DevOps Chapter 10 Continuous Integration Appendix A Text Editors Appendix B Docker Networking Appendix C Open vSwitch 2017年10月発売予定(8月調査時点) 9/1(金) 19:00~ @恵比寿 「AnsibleとNAPALMでネットワークをテストする」でLT予定