SlideShare uma empresa Scribd logo
1 de 90
Baixar para ler offline
Ansible
ネットワーク自動化チュートリアル
これからのネットワーク自動化
Shingo Kitayama & Akira Yokochi
JANOG
JApan Network Operators' Group
Introduction
Shingo Kitayama
2
Shingo
Kitayama
Company: Red Hat K.K.
Role: Solution Architect
Product: OpenShift
Interest: KPP
shkitayama
spchildren
JANOG
JApan Network Operators' Group
自己紹介
3
名前 横地 晃
所属 株式会社 エーピーコミュニケーションズ
@akira6592 https://www.slideshare.net/akira6592/
過去発表資料 (JANOG 41 / 41.5 等)
https://tekunabe.hatenablog.jp
ブログ(てくなべ)
JANOG
JApan Network Operators' Group
Agenda
本日のアジェンダ
4
1
2
3
4
これからの自動化
Ansibleによる自動化の世界
Ansibleの仕組み
Playbookを理解する
5
6
7
8
ネットワーク対応の基本
情報取得サンプル
設定変更サンプル
ネットワーク対応のまとめ
前半
Automation with Ansible
後半
Ansible Network World
JANOG
JApan Network Operators' Group
本日お伝えしたいこと
Janogに参加したら、Ansibleを使えるようになったというお土産
5
Ansibleはネットワーク機器にも使え、
シンプルで導入コストが低く、
様々なプラットフォームに対応している。
Ansible is Simple
1. これからの自動化
Value of Next Automation
6
JANOG
JApan Network Operators' Group 7
Automation for Network
Infrastructure is Coming
JANOG
JApan Network Operators' Group
ネットワーク自動化の状況
ほとんどのユーザーがCLI管理
8参照: Gartner, Look Beyond Network Vendors for Network Innovation. January 2018. Gartner ID: G00349636. (n=64)
JANOG
JApan Network Operators' Group
SDN市場の拡大
SDNおよびNFVに関する国内市場予測
9
参照: https://www.idcjapan.co.jp/Press/Current/20180410Apr.html
521億円
1759億円
国内SDN市場は、成長が軌道に乗り2017年には521億円にまで市場
規模が拡大。
2022年には1759億円にまで成長するとの予測。
成長率
売り上げ
JANOG
JApan Network Operators' Group
高まるネットワーク自動化への期待
キャリア、DCともに自動化に注力
10
参照: https://www.idcjapan.co.jp/Press/Current/20180410Apr.html
Carrier
Datacenter
Datacenter SDNの注目分野
2017年~2022年のCAGR 24.0%
「データセンターネットワークの自動化」
「マイクロセグメンテーションの適用」
Carrier SDNの注目分野
2017年~2022年のCAGR 32.7%
「NFV環境の基盤としての導入」
「5Gネットワークにおけるネットワークスライシング」
「通信事業者のオペレーションの自動化」
CDN Area
Datacenter
Cloud
DatacenterEdge
Computing
Mid
Datacenter
5G / VoLTE IP / SD-WAN
※ CAGR=Compound Annual Growth Rate(年間平均成長率)
JANOG
JApan Network Operators' Group
多様化された自動化の課題
製品によって異なるオペレーション
11
さまざまな領域でSDN技術の適用が進む反面、適用領域ごとに異なるSDNコントローラーや管理コンソールを必要とする
「SDNのサイロ化」に対する懸念。
ネットワークセグメント
が一つほしい
A社SDN
B社SDN
C社SDN
ネットワークセグメントが
一つできる
スクリプト対応
ベンダー固有
管理ツール
設定依頼 設定作業 提供1 2 3
JANOG
JApan Network Operators' Group
作業の自動化とプロセスの自動化
自動化という言葉の範囲
12
設定依頼 設定作業 提供1 2 3
設定内容の確認
設定手順の作成
事前設定テスト 設定作業実施 設定反映チェック
成果報告
データの作成
プロセスの自動化
・セグメントポリシー確認
・VLAN利用確認
・利用用途確認
・手順書のレビュー
・IP重複確認
・テスト機の作業実施
・テスト内容影響確認
・本番機設定のバックアップ
・IP重複確認
・予備機の作業実施
・予備機影響確認
・本番機の作業実施
・本番機影響確認
・申請者の利用確認
・ビジネス影響確認
・設定内容確認
・本番反映データ取得
・ログの管理
・構成管理台帳反映
・対応報告
個々の
作業自動化
JANOG
JApan Network Operators' Group
“ ”
サイロ化する自動化の回避
自動化は意識改革
13
Ansible’s simple automation framework means that previously isolated
network administrators can finally speak the same language of automation as
the rest of the IT organization.
マネジメントの意識改革 エンジニアの意識改革
工数削減できるという期待で、
自動化することが目的となってしまう。
自動化は手段の一つであり、
自動化することで品質と
短納期を目的とする。
再利用できる自動化を目指し、
最終的な効果を測定できるようにする。
属人的に自動化を行うことで、
内容が複雑化されると同時に
寿命が短く、無駄な工数になってしまう。
JANOG
JApan Network Operators' Group
Infrastructure as Code
ネットワークの自動化
14
設定依頼 設定作業 提供1 2 3
設定内容の確認
設定手順の作成
事前設定テスト 設定作業実施 設定反映チェック
成果報告
データの作成
プロセスの自動化 = “Infrastructure as Code”の範囲
・セグメントポリシー確認
・VLAN利用確認
・利用用途確認
・手順書のレビュー
・IP重複確認
・テスト機の作業実施
・テスト内容影響確認
・本番機設定のバックアップ
・IP重複確認
・予備機の作業実施
・予備機影響確認
・本番機の作業実施
・本番機影響確認
個々の作業自動化だけを重視すると、
”サイロ化”が進む
・申請者の利用確認
・ビジネス影響確認
・設定内容確認
・本番反映データ取得
・ログの管理
・構成管理台帳反映
・対応報告
Ansibleによる自動化の世界
Ansibleの特徴
15
JANOG
JApan Network Operators' Group
ネットワークにAnsibleを利用する価値
小さく始めて、大きく育てることができる
16
Build Manage Scale
設定の自動化 プロセスの管理 動的な運用
個々の作業
自動化
プロセス
の自動化
運用の自動化
- すぐに始められる自動化
- マルチベンダー製品対応
- 既存のネットワーク機器でも、新
しいネットワーク機器でも対応可
- 構成ドリフトをトラックできる
- 任意のネットワーク機器も同じ
方法で管理できる
- 変更したことを検証できる
- 正常状態を定期的に確認する
- 特定のチーム間でロールベース
のアクセス制御を行う
- RESTful APIを通してサード
パーティ製品の統合をする
本日の話の範囲
JANOG
JApan Network Operators' Group
Ansibleの特徴
自動化を気軽に始められる要素
17
Simple Powerful Agentless
- 人が読みやすい設定
- 特別なスキルが不要
- 順序通り実行される
> すぐに始められる
- 機器情報や接続情報の取得
- 設定管理
- 自動化のワークフロー
> 製品に依存しない管理
- エージェント不要なアーキテクチャ
- OpenSSHやparamikoの利用
> 効率的かつセキュア
JANOG
JApan Network Operators' Group
Ansibleの特徴 - Simple -
YAMLファイルによる記述
18
Ios_command.yml
- name: run multiple commands
hosts: ios01
tasks:
- name: show version and show interfaces
ios_command:
commands:
- show version
- show interfaces
Simple
コーディングではなく、手順書の
延長としての書式を重視
・ yaml ain't markup languageの略
・ 一般的な拡張子は 「.yml」
・ 構造化データの表現方法
・ 仕様を処理する実装が別途必要
JANOG
JApan Network Operators' Group
Ansibleの特徴 - Powerful -
各ベンダーおよび全レイヤーをサポート
19
Datacenter
Cloud
Application
Configurations Management
- Linux/Windows Initial Setup
- Cisco/F5 Configuration
- Netapp Management
Bootstrapping
- AWS/Azure/GCP Resource Control
- VMware Configuration
- Container Running
Orchestrations
- MySQL/Hadoop Cluster Setup
- 3Tier Web Application
- Cloud Native App Management
Powerful
JANOG
JApan Network Operators' Group
Ansibleの特徴 - Agentless -
Agentless Connection
20
Agentless
- Agentの導入/管理する工数が不要
- 都度SSHによって接続するためセキュア
- 既存の機器にもすぐに導入できる
JANOG
JApan Network Operators' Group
AnsibleのCommunityとEnterprise
Ansibleの製品一覧
21
個々の作業
自動化
運用の自動化
Ansibleの仕組み
Ansibleのコアコンポーネント
22
JANOG
JApan Network Operators' Group
Ansibleのコアコンポーネント
Ansible Automation Engine
23
ANSIBLE AUTOMATION ENGINE
INVENTORY
PLUGINSCLI MODULES
PLAYBOOK
再利用可能な処理ユニット。作業
をラッピングしたコンポーネント
Ansibleのコア機能を拡張する
ためのコンポーネント
Ansibleを操作するための
インターフェイス
APPLICATIONS
PUBLIC / PRIVATE
CLOUD
DATACENTER
JANOG
JApan Network Operators' Group
Ansible Command Line Interface
Ansible Ad-Hoc Command & Playbook Command
24
[Usage] ansible <Target Host> -i <Inventory Files> -m <Module>
$ ansible cisco -i inventory -m ping
[Usage] ansible <Target Host> -i <Inventory Files> -m <Module> -a <Argument>
$ ansible cisco -i inventory –m ios_command -a “commands=show version”
[Usage] ansible-playbook -i <Inventory Files> <Playbook File>
$ ansible-playbook -i inventory site.yml
2. Ansible Playbook Command
1. Ansible Ad-Hoc Command
基本はコマンドラインからAnsibleを経由して操作を行う。
ターゲットのネットワーク機器を管理するために覚えなければいけないコマンドは、以下の2種類。
JANOG
JApan Network Operators' Group
Connectionの仕組み
実行コードによるオペレーションの実行
25
TARGET NODE
1. ターゲットホスト
の検証
3. 実行コードを
生成
2. モジュール
の読み取り
5. 実行コードの
実行
4. 実行コードの
配布
ANSIBLE AUTOMATION ENGINE
INVENTORY
PLUGINSCLI MODULES
PLAYBOOK
1. ターゲットホストの検証 2. モジュールの読み取り
3. 実行コードを生成
EXECUTABLE
CODE
Python
Python
4. 実行コードの配布
(SCP)
5. 実行コードの実行
JANOG
JApan Network Operators' Group
Network Connection Plugin
26
TARGET SERVER
ANSIBLE AUTOMATION ENGINE
PLUGINSCLI MODULES
Python
SCP
TARGET NETWORK
ANSIBLE AUTOMATION ENGINE
PLUGINSCLI MODULES
XML over SSH
CLI over SSH
API over HTTPS
HOST DEVICES
NETWORKING DEVICES
Remote Execution
Local Execution
JANOG
JApan Network Operators' Group
冪等性の担保
再利用可能な処理ユニットとは
27
TARGET NODE
TARGET NODE
TARGET NODE
新しいVLAN(ID:120)を作成して、
GigabitEth0/4,0/5に割り当てる。
1回目の実行 2回目の実行 n回目の実行
…
…
…
すでに設定済み
未設定
未設定
設定実施
設定実施
何もしない 何もしない
何もしない
何もしない 何もしない
何もしない
何もしない
JANOG
JApan Network Operators' Group
- name: Assign new VLAN
hosts: cisco
vars:
NEW_VLAN_ID: 120
tasks:
- name: Create VLAN
ios_vlan:
vlan_id: "{{ NEW_VLAN_ID }}"
name: janog-vlan
state: present
- name: Add interface to VLAN
ios_vlan:
vlan_id: "{{ NEW_VLAN_ID }}"
interfaces:
- GigabitEthernet0/4
- GigabitEthernet0/5
Ansible Modules
再利用可能な処理ユニット
28
新しいVLAN(ID:120)
を作成
GigabitEth0/4,0/5に
割り当てる
宣言型プログラミング
どういう状態にするのか
各種モジュールを利用して個別のタスクを実行する
← Module(iso_vlan)
https://docs.ansible.com/ansible/latest/modules/ios_
vlan_module.html
JANOG
JApan Network Operators' Group
ネットワークモジュールの拡大
Ansible Network Progress
29
2.1
May 2016
2.2
Oct 2016
2.3
Apr 2017
2.4
Sep 2017
2.5
Mar 2018
Persistent
Connections
NETCONF
Support
Declarative
Intent
Aggregate
Resources
Platform
Agnostic
network_cli
connection
plug-in
NETCONF
connection
plug-in
Better
Logging
XML
Filters
7 Platforms
28 Modules
17 Platforms
141 Modules
17 Platforms
141 Modules
33 Platforms
463 Modules
40 Platforms
572 Modules
JANOG
JApan Network Operators' Group
Ansibleのコアコンポーネント
Ansible Automation Engine
30
ANSIBLE AUTOMATION ENGINE
INVENTORY
PLUGINSCLI MODULES
PLAYBOOK
再利用可能な処理ユニット。作業
をラッピングしたコンポーネント
Ansibleのコア機能を拡張する
ためのコンポーネント
Ansibleを操作するための
インターフェイス
APPLICATIONS
PUBLIC / PRIVATE
CLOUD
DATACENTER
JANOG
JApan Network Operators' Group
Ansibleのコアコンポーネント
Ansible Automation Engine
31
ANSIBLE AUTOMATION ENGINE
INVENTORY
PLUGINSCLI MODULES
PLAYBOOK
再利用可能な処理ユニット。作業
をラッピングしたコンポーネント
Ansibleのコア機能を拡張する
ためのコンポーネント
Ansibleを操作するための
インターフェイス
APPLICATIONS
PUBLIC / PRIVATE
CLOUD
DATACENTER
Network Automation
Start with Playbook
Playbookを理解する
AnsibleのPlaybookが読めるまで
32
JANOG
JApan Network Operators' Group
cisco junos
Inventory
Static Inventory
33
Inventoryとは、処理対象サーバの接続情報を記載したファイルです。
# ciscoグループを定義
[cisco]
csr01 ansible_host=192.168.1.1
csr02 ansible_host=192.168.1.2
# junosグループを定義
[junos]
192.168.100.1 # EXxxxx 1台目
192.168.100.2 # EXxxxx 2台目
# ciscoグループ共通の変数定義
[cisco:vars]
# Connection Plugin
ansible_connection=network_cli
# 対象OS
ansible_network_os=ios
…
グループ化されたターゲットノードは同時に実行されます
Catalyst
Catalyst EXxxxx
EXxxxx
all
Vars Vars
ターゲットノード ターゲットノード変数定義 変数定義
共通の接続情報などはInventoryに設定しておく
JANOG
JApan Network Operators' Group
Ansible Ad-Hoc Command
34
$ ls ./inventory/hosts
[Usage] ansible <Target Host> -i <Inventory Files> -m <Module>
$ ansible cisco -i inventory -m ios_command -a "commands='show version'"
csr01 | SUCCESS => {
"changed": false,
"stdout": [
"Cisco IOS XE Software, Version 16.04.01¥nCisco IOS Software [Everest],
CSR1000V Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 16.4.1, RELEASE SOFTWARE
(fc3)¥nTechnical Support: http://www.cisco.com/techsupport¥nCopyright (c) 1986-2016 by
Cisco Systems, Inc.¥nCompiled Wed 30-Nov-16 22:13 by mcpre¥n¥n¥nCisco IOS-XE software,
Copyright (c) 2005-2016 by cisco Systems, Inc.¥nAll rights reserved. Certain
components of Cisco IOS-XE software are¥nlicensed
JANOG
JApan Network Operators' Group
YAMLの規則
Playbook is YAML
35
- Title: YAMLの掟
Rules:
- Rule1: 二種類の文法を主に使用する
type:
- シーケンス
(List形式でデータ構造を表す)
- マッピング
(Key Value形式でデータ構造を表す)
- Rule2: コメントアウトは [#]
- Rule3: 入れ子構造はインデントで表す
attention:
- インデントにタブ記号は使えない
- インデントは空白2文字
- Rule4: データ型の宣言は不要
- name: Assign new VLAN
hosts: cisco
vars:
NEW_VLAN_ID: 120
tasks:
- name: Create VLAN
ios_vlan:
vlan_id: "{{ NEW_VLAN_ID }}"
name: janog-vlan
state: present
- name: Add interface to VLAN
ios_vlan:
vlan_id: "{{ NEW_VLAN_ID }}"
interfaces:
- GigabitEthernet0/4
- GigabitEthernet0/5
JANOG
JApan Network Operators' Group
YAMLの文法
シーケンスとマッピング
36
書式) - <value>
例)
- apple
- orange
- lemon
書式) <key>: <value>
例)
林檎: apple:
蜜柑: orange
檸檬: lemon
0 1 2 林檎 蜜柑 檸檬
シーケンス(List) マッピング(Dictionary)
ハイフン+スペース コロン+スペース
lemonapple orange
lemonapple orange
JANOG
JApan Network Operators' Group
Assign
new
VLAN
- name: Assign new VLAN
hosts: cisco
vars:
NEW_VLAN_ID: 120
tasks:
- name: Create VLAN
ios_vlan:
vlan_id: "{{ NEW_VLAN_ID }}"
name: janog-vlan
state: present
- name: Add interface to VLAN
ios_vlan:
vlan_id: "{{ NEW_VLAN_ID }}"
interfaces:
- GigabitEthernet0/4
- GigabitEthernet0/5
name
YAMLの文法
YAMLの入れ子構造を理解する
37
0 1 2
hosts vars
(1) シーケンスの中にマッピングをネスト
(2) マッピングの中にシーケンスをネスト
name ios_vlan
Playbook
(1)
(2)
Play
cisco
Tasks
0 1 2
MODULES
(1)
tasks
NEW_
VLAN_ID
Vars
120
JANOG
JApan Network Operators' Group
Playbookの基本
セクションと関係性
38
- name: Assign new VLAN
hosts: cisco
vars:
NEW_VLAN_ID: 120
tasks:
- name: Create VLAN
ios_vlan:
vlan_id: "{{ NEW_VLAN_ID }}"
name: janog-vlan
state: present
- name: Add interface to VLAN
ios_vlan:
vlan_id: "{{ NEW_VLAN_ID }}"
interfaces:
- GigabitEthernet0/4
- GigabitEthernet0/5
Task Section
Vars Section
Target Section Target Section
Vars Section (※省略可)
Task Section
対象機器やグループを指定するセクション。
また、接続オプションなどを定義する。
独自の変数を指定するセクション。
マッピング形式で変数定義を行い、Keyを指定する
ことで、変数値を参照できる。
Playで実施する個別のタスクを指定するセクション。
上から定義した順で実行されていく。
JANOG
JApan Network Operators' Group
変数について
変数の定義と参照
39
変数の定義 Jinja2とは
変数の参照には、Jinja2テンプレートエンジンを利用して呼び出す。
Python用のテキストベースのテンプレートエンジンで
あり、HTMLやXMLなどの生成に利用される。
基本文法は以下の2通り。
{{…}} で囲むことにより、変数の参照が可能
{%…%}で囲むことにより、制御構文
その他、変数参照時のFilterなども用意されている。
・{{ var|first }} リストの始めを取得
・{{ var|min }} リストの最小値を取得
・{{ var|max }} リストの最大値を取得
・{{ var|random }} ランダム値を取得
・{{ var|hash(‘sha1’) }} sha1値を取得
・{{ var|basename }} フォルダパス取得
などなど
https://docs.ansible.com/ansible/2.5/use
r_guide/playbooks_filters.html
- name: Assign new VLAN
hosts: cisco
vars:
NEW_VLAN_ID: 120
変数の参照
- name: Create VLAN
ios_vlan:
vlan_id: “{{ NEW_VLAN_ID }}”
name: janog-vlan
state: present
Playの中や、Taskの中で変数を定義できる。
← 120
JANOG
JApan Network Operators' Group
主な変数定義
いろいろなところで変数が取扱できる
40
ファクト変数
機器情報を取得した変数
レジスター変数
タスクを実行した戻り値を取得した
変数
タスク変数
タスクの定義の中に設定した変数
- name: Gather IOS Facts
ios_facts:
gather_subset:
- config
- name: Gather IOS Facts
ios_facts:
gather_subset:
- config
register: ios_result
- name: Debug Register Var
debug:
var: ios_result
- name: Create VLAN
ios_vlan:
vlan_id: “{{ VLAN_ID }}”
name: janog-vlan
state: present
vars:
VLAN_ID: 120
JANOG
JApan Network Operators' Group
Ansible Playbook Command
Execute Playbook
41
$ ls ./inventory/hosts
[Usage] ansible-playbook -i <Inventory Files> <Playbook File>
$ ansible-playbook -i inventory site.yml
TASK [Command Sample for IOS]
************************************************************************************
ok: [csr01]
TASK [Gathering Facts]
************************************************************************************
ok: [csr01]
PLAY RECAP
************************************************************************************
csr01 : ok=3 changed=0 unreachable=0 failed=0
まとめ
自動化とAnsible
42
JANOG
JApan Network Operators' Group
まとめ
Automation with Ansible
43
ネットワークも自動化の時代になってきているが、自動化による弊害も多いので
自動化の範囲とメリットを検討すべき
簡単に始められ、大きな効果が得られるAnsibleは、ネットワーク自動化にも大きな影
響がある。
ネットワークモジュールが拡大しており、よりベンダーニュートラル、かつ標準化しやすい製
品になっている。
YAMLさえ理解できれば、Playbookの理解もでき、すぐに書けるようになる。
ネットワーク対応の基本1
なにができるか
44
JANOG
JApan Network Operators' Group
接続方式とできること
– 接続方式
– SSH、NETCONF、HTTP/HTTPS(API)などによってネットワーク機器に接続する
– 利用するモジュールによっては追加ライブラリのインストールが必要(例:NETCONFの場合はncclient)
– エージェントレスアーキテクチャならでは
– できること(例)
– 参照(show)コマンドの実行による情報取得
– 設定コマンドの実行による設定追加・変更・削除
45
【接続方式】
SSH
NETCONF
HTTP/HTTPS
show xxxx
set xxx
JANOG
JApan Network Operators' Group
対応プラットフォーム
– Cisco IOS、IOS-XR、NX-OS、Juniper Junos、Arista EOSなど、40以上のプラットフォームに対応
– 他、サードパーティモジュールとして提供しているベンダーもある
– モジュールにはコマンドをそのまま指定するタイプや、各オプションをパラメータとして指定するタイプがある
46
• A10
• ACI
• Aireos
• AOS
• Aruba
• ASA
• Avi
• Bigswitch
• Citrix
• CloudEngine
• CloudVision
• CNOS
• Cumulus
• DellOS10
• DellOS6
• DellOS9
• EdgeOS
• ENOS
• EOS
• EXOS
• F5
• Fortimanager
• FortiOS
• Illumos
• IOS
• IOS-XR
• IronWare
• Junos
• Meraki
• Netact
• Netscaler
• Netvisor
• NSO
• Nuage
• NXOS
• ONYX
• Ordnance
• OVS
• PAN-OS
• Radware
• SLX-OS
• SR OS
• VyOS
ネットワークモジュール一覧 https://docs.ansible.com/ansible/latest/modules/list_of_network_modules.html
JANOG
JApan Network Operators' Group
Ansible を利用するメリット(Tera Termマクロ との比較)
– Ansible の他の機能と連携しやすい
– 例:
– コマンド出力結果を copy モジュールに渡して、ファイルに保存
– テンプレート機能を利用して、コンフィグを生成して投入
– 監視サーバーに登録されているホスト情報を接続に利用
– ログインやモード変更の処理を簡略化できる
– 認証情報を定義しておくだけで自動でログイン、ログアウト
– 設定系モジュールであれば暗黙的にコンフィグレーションモードへ移行
– コマンド投入エラーを標準で検出できる
– エラーの検出処理がAnsible モジュールに組み込まれている
– 自前で「どのようなプロンプトが返ってきたら正常か」という指定は不要
47
ネットワーク対応の基本2
ネットワークモジュール固有のポイント
48
JANOG
JApan Network Operators' Group
ネットワークモジュールで利用するコネクションタイプ
– Ansible 2.5 以降ネットワークモジュール用のコネクションタイプが用意された
– network_cli: Cisco IOS、Arista EOS、VyOS など向け
– netconf: Juniper Junos 向け
– httpapi: Cisco NX-OS、 Arista EOS の HTTP(S) API アクセス向け (Ansible 2.6 以降)
– Ansible 2.4まで
– local: ネットワークモジュール用ではないが、性質上こちらを利用するモジュールもある
49
インベントリファイルで network_cli を指定する例
[ios:vars]
ansible_connection=network_cli
- hosts: ios
connection: network_cli
Playbookで network_cli を指定する例
https://docs.ansible.com/ansible/latest/network/user_guide/platform_index.html#settings-by-platform
JANOG
JApan Network Operators' Group
ネットワークモジュール用の変数
– ansible_network_os 変数
– プラットフォームに応じて「ios」「junos」「eos」「vyos」等の値を設定する必要あり
50
https://docs.ansible.com/ansible/latest/network/user_guide/platform_index.html#settings-by-platform
インベントリファイルで指定する例
[ios:vars]
ansible_connection=network_cli
ansible_network_os=ios
JANOG
JApan Network Operators' Group
ネットワークモジュール利用時のファクトの収集方法
– 対象ネットワーク機器のファクト(システム情報)を収集するためには「*_facts」モジュールを利用する
– 「gather_facts: yes」ではAnsible実行ホスト自身の情報となる
– 不要であれば「gather_facts: no」を指定する
– *_facts モジュールの例
– ios_facts
– junos_facts
– eos_facts
– vyos_facts
– 収集できるシステム情報例(ios_facts の場合)
– コンフィグ
– ホスト名
– インターフェース情報
– ファームウェア情報
– LLDPネイバー情報
51
- hosts: ios
gather_facts: yes
connection: network_cli
tasks:
- ios_facts:
Ansible 実行ホスト 対象NW機器
ファクト収集
ファクト収集
JANOG
JApan Network Operators' Group
特権モードの指定
– IOS や EOS などで enable コマンドによる特権モードへの移行が必要な場合は変数で指定する
– ansible_become 変数
– 特権モードへ移行が必要かどうか(yes/no: デフォルトno)
– ansible_become_method 変数
– 特権モードへ移行するコマンド (network_cli では enable のみ指定可)
– ansible_become_pass 変数
– 特権モード移行時に必要なパスワード
– 対象ネットワーク機器へのログインユーザーに特権が付与されている場合は指定不要
52
インベントリファイルで指定する例
[ios:vars]
ansible_connection=network_cli
ansible_network_os=ios
ansible_become=yes
ansible_become_method=enable
ansible_become_pass=enablepass999
情報取得サンプル 【1-1】
状態の表示
53
JANOG
JApan Network Operators' Group
サンプル1-1: 状態の表示 (流れ)
54
(1) show version実行
⚫ show version コマンド実行結果をAnsibleホストの画面に表示クアップ
Hostname: vsrx1
Model: firefly-perimeter
JUNOS Software Release [12.1X47-D15.4]
(2) コマンド実行結果取得(3) 画面に出力
Hostname: vsrx1
Model: firefly-perimeter
JUNOS Software Release [12.1X47-D15.4]
JANOG
JApan Network Operators' Group
サンプル1-1: 状態の表示 (インベントリとPlaybook)
55
[junos]
172.16.0.1
[junos:vars]
ansible_connection=netconf
ansible_network_os=junos
ansible_user=testuser
ansible_ssh_pass=testpassword99
- hosts: junos
gather_facts: no
tasks:
- name: show command test
junos_command:
commands:
- show version
register: result
- name: debug output
debug:
msg: "{{ result.stdout_lines[0] }}"
⚫ インベントリファイル (inventory) ⚫ Playbook (show01.yml)
コネクションタイプやOS、
認証情報を指定
debugモジュールで
コマンド実行結果を出力
junosコマンド実行モジュール
junos_command(※1) で
実行したいコマンドを指定
実行結果を変数 result に格納
※1 junos_command モジュール詳細
https://docs.ansible.com/ansible/latest/modules/junos_command_module.html
このインベントリファイルは、以降のサンプルでも共通
JANOG
JApan Network Operators' Group
サンプル1-1: 状態の表示 (実行結果)
56
[vagrant@centos7 janog]$ ansible-playbook -i inventory show01.yml
PLAY [junos] ******************************************************************
TASK [show command test] ******************************************************
ok: [172.16.0.1]
TASK [debug output] ***********************************************************
ok: [172.16.0.1] => {
"msg": [
"Hostname: vsrx1",
"Model: firefly-perimeter",
"JUNOS Software Release [12.1X47-D15.4]"
]
}
PLAY RECAP ********************************************************************
172.16.0.1 : ok=2 changed=0 unreachable=0 failed=0
⚫ 実行結果
show version 実行結果
が表示される
ansible-playbook コマンドを実行
JANOG
JApan Network Operators' Group
サンプル1-1: 状態の表示 (showコマンド実行結果の構造について補足)
57
"msg": {
"changed": false,
"failed": false,
"stdout": [
"Hostname: vsrx1¥nModel: firefly-perimeter¥nJUNOS Software Release [12.1X47-D15.4]"
],
"stdout_lines": [
[
"Hostname: vsrx1",
"Model: firefly-perimeter",
"JUNOS Software Release [12.1X47-D15.4]"
]
]
}
- name: debug output
debug:
msg: "{{ result }}"
- name: debug output
debug:
msg: "{{ result.stdout_lines[0] }}"
全体を指定
実行結果を1行1リスト要素で格納した
stdout_lines 内の0番目
(commandsオプションの最初に指定したコマンド)
情報取得サンプル 【1-2】
コンフィグのバックアップ
58
JANOG
JApan Network Operators' Group
サンプル1-2: コンフィグのバックアップ (流れ)
59
(1) show configuration 実行
⚫ show configuration コマンド実行結果をファイルにバックアップ
## Last commit: 2018-06-28 05:45:49 UTC by root
version 12.1X47-D15.4;
system {
host-name vsrx1;
root-authentication {
encrypted-password "$1$nq.....
ssh-rsa "ssh-rsa AAAAB3Nz.....
}
login {
user vagrant {
uid 2000;
class super-user;
authentication {
ssh-rsa "ssh-rsa .....
}
}
}
services {
ssh {
root-login allow;
}
netconf {
ssh;
}
web-management {
http {
interface ge-0/0/0.0;
}
}
}
syslog {
user * {
any emergency;
(2) コマンド実行結果取得
(3) ファイルとしてバックアップ
## Last commit: 2018-06-28 05:45:49 UTC by root
version 12.1X47-D15.4;
system {
host-name vsrx1;
root-authentication {
encrypted-password "$1$nq.....
ssh-rsa "ssh-rsa AAAAB3Nz.....
}
login {
user vagrant {
uid 2000;
class super-user;
authentication {
ssh-rsa "ssh-rsa .....
}
}
}
services {
ssh {
root-login allow;
}
netconf {
ssh;
}
web-management {
http {
interface ge-0/0/0.0;
}
}
}
syslog {
user * {
any emergency;
JANOG
JApan Network Operators' Group
サンプル1-2: コンフィグのバックアップ (Playbook)
60
- hosts: junos
gather_facts: no
tasks:
- name: show command test
junos_command:
commands:
- show configuration
register: result
- name: save config to file
copy:
content: "{{ result.stdout[0] }}"
dest: "show_config_{{ inventory_hostname }}.txt"
⚫ Playbook (show02.yml)
junosコマンド実行モジュール junos_command で
実行したいコマンドを指定
copyモジュールでコマンド実行結果
をファイルに保存する
ファイル名に名インベントリ名
(ここではIPアドレス)を含ませる
JANOG
JApan Network Operators' Group
サンプル1-2: コンフィグのバックアップ (実行結果)
61
[vagrant@centos7 janog]$ ansible-playbook -i inventory show02.yml
PLAY [junos] ****************************************************************
TASK [show command test] ****************************************************
ok: [172.16.0.1]
TASK [save config to file] **************************************************
changed: [172.16.0.1]
PLAY RECAP ******************************************************************
172.16.0.1 : ok=2 changed=1 unreachable=0 failed=0
⚫ 実行結果
コンフィグがファイルとして
新たに保存されたログ
ansible-playbook コマンドを実行
JANOG
JApan Network Operators' Group
サンプル1-2: コンフィグのバックアップ (ファイル内容の確認)
62
[vagrant@centos7 janog]$ cat show_config_172.16.0.1.txt
## Last changed: 2018-06-28 05:45:50 UTC
version 12.1X47-D15.4;
system {
host-name vsrx1;
root-authentication {
encrypted-password "$1$nq.N1UsY$Jx...(略)...";
ssh-rsa "ssh-rsa AAAAB3NzaC1yc2...(略)....";
}
...(略)....
ge-0/0/1 {
unit 0 {
family inet {
address 172.16.0.1/24;
}
}
}
...(略)....
}
⚫ 実行結果
インベントリ名(ここではIPアドレス)
を含むファイル名で保存されている
show configuration 実行結果
情報取得サンプル 【1-3】
showコマンド結果のCSV出力
63
JANOG
JApan Network Operators' Group
サンプル1-3: showコマンド結果のCSV出力 (流れ)
64
(1) show interfaces 実行
⚫ show interfaces コマンド実行結果をパースして、CSVファイルに出力
Physical interface: ge-0/0/0, Enabled, Physical link is Up
Interface index: 134, SNMP ifIndex: 507
Link-level type: Ethernet, MTU: 1514, Link-mode: Full-duplex, Speed: 1000mbps,…
Flow control: Enabled, Auto-negotiation: Enabled, Remote fault: Online
Device flags : Present Running
Interface flags: SNMP-Traps Internal: 0x4000
Link flags : None
CoS queues : 8 supported, 8 maximum usable queues
Current address: 08:00:27:ae:f4:51, Hardware address: 08:00:27:ae:f4:51
Last flapped : 2018-06-28 05:45:29 UTC (04:54:28 ago)
Input rate : 3432 bps (7 pps)
Output rate : 4256 bps (4 pps)
Active alarms : None
Active defects : None
Interface transmit statistics: Disabled
Logical interface ge-0/0/0.0 (Index 69) (SNMP ifIndex 509)
Flags: SNMP-Traps 0x4000 Encapsulation: ENET2
Input packets : 522
Output packets: 580
Security: Zone: Null
Protocol inet, MTU: 1500
…
(2) コマンド実行結果取得
パース用
[TextFSMテンプレート]
^¥s+
[CSVテンプレート]
{{ }}
(3) パース
(5) CSVファイル出力
(4) パース済みデータ埋め込み
JANOG
JApan Network Operators' Group
サンプル1-3: showコマンド結果のCSV出力 (Playbook)
65
- hosts: junos
gather_facts: no
tasks:
- name: show command test
junos_command:
commands:
- show interfaces
register: result
- name: output csv file
template:
src: "./template_interface_junos.txt"
dest: "./result_interface.csv"
vars:
parsed_result: "{{ result.stdout[0] | parse_cli_textfsm('juniper_junos_show_interfaces.template') }}"
⚫ Playbook (show03.yml)
junosコマンド実行モジュール junos_command で
実行したいコマンドを指定
templateモジュールで、CSVテンプレートファイル名と、
出力先ファイル名を指定
コマンド実行結果をTextFSMテンプレートに渡して、
パースされた結果を変数 parsed_result に格納
※ parse_cli_textfsm フィルターの利用にはあらかじめTextFSMのインストール(pip install TextFSM)が必要
JANOG
JApan Network Operators' Group
"INTERFACE","ADMIN_STATE","LINK_STATUS","HARDWARE_TYPE"
{% for r in parsed_result %}
"{{ r['INTERFACE'] }}","{{ r['ADMIN_STATE'] }}","{{ r['LINK_STATUS'] }}","{{ r['HARDWARE_TYPE'] }}"
{% endfor %}
サンプル1-3: showコマンド結果のCSV出力 (CSVテンプレート)
66
⚫ CSVテンプレート (template_interface_junos.txt)
show interfaces 実行結果
がパースされた内容が入る
CSVのヘッダー
for 文による繰り返し
r[‘XXXX’] に各項目の値が埋め込まれる
※ テンプレートエンジン jinja2 を利用
JANOG
JApan Network Operators' Group
Value Required INTERFACE (¥S+)
Value LINK_STATUS (¥w+)
Value ADMIN_STATE (¥S+)
Value HARDWARE_TYPE (¥S+)
Value MTU (¥d+|Unlimited)
Start
^¥s+Logical¥s+interface¥s+${INTERFACE}
^Physical¥s+interface:¥s+${INTERFACE},¥s+${ADMIN_STATE},¥s+Physical¥s+link¥s+is¥s+${LINK_STATUS}
^.*ype:¥s+${HARDWARE_TYPE},.*MTU:¥s+${MTU}.* -> Record
^.*MTU:¥s+${MTU}.* -> Record
^.*flags -> Record
EOF
サンプル1-3: showコマンド結果のCSV出力 (TextFSMテンプレート)
67
⚫ TextFSMテンプレート ( juniper_junos_show_interfaces.template )
TextFSMというパーサー用のテンプレートファイル
ここでは Junos の「show interfaces」用のものを利用
https://raw.githubusercontent.com/networktocode/ntc-templates/master/templates/juniper_junos_show_interfaces.template
JANOG
JApan Network Operators' Group
サンプル1-3: showコマンド結果のCSV出力 (実行結果)
68
[vagrant@centos7 janog]$ ansible-playbook -i inventory show03.yml
PLAY [junos] ****************************************************************
TASK [show command test] ****************************************************
ok: [172.16.0.1]
TASK [output csv file] ******************************************************
changed: [172.16.0.1]
PLAY RECAP
*****************************************************************************
172.16.0.1 : ok=2 changed=1 unreachable=0 failed=0
⚫ 実行結果
CSVファイルが生成された
ansible-playbook コマンドを実行
JANOG
JApan Network Operators' Group
"INTERFACE","ADMIN_STATE","LINK_STATUS","HARDWARE_TYPE","MTU"
"ge-0/0/0","Enabled","Up","Ethernet","1514"
"ge-0/0/0.0","","","","1500"
"gr-0/0/0","Enabled","Up","GRE","Unlimited"
"ip-0/0/0","Enabled","Up","IP-over-IP","Unlimited"
"lsq-0/0/0","Enabled","Up","LinkService","1504"
"lt-0/0/0","Enabled","Up","Logical-tunnel","Unlimited"
"mt-0/0/0","Enabled","Up","GRE","Unlimited"
"sp-0/0/0","Enabled","Up","Adaptive-Services","9192"
"sp-0/0/0.0","","","","9192"
"sp-0/0/0.16383","","","","9192"
"ge-0/0/1","Enabled","Up","Ethernet","1514"
"ge-0/0/1.0","","","","1500"
"ge-0/0/2","Enabled","Up","Ethernet","1514"
"ge-0/0/2.0","","","","1500"
"dsc","Enabled","Up","Software-Pseudo","Unlimited"
"gre","Enabled","Up","GRE","Unlimited"
"ipip","Enabled","Up","IP-over-IP","Unlimited"
"irb","Enabled","Up","Ethernet","1514"
"lo0","Enabled","Up","Loopback","Unlimited"
"lo0.16384","","","","Unlimited"
"lo0.16385","","","","Unlimited"
"lsi","Enabled","Up","LSI","1496"
"mtun","Enabled","Up","GRE","Unlimited"
"pimd","Enabled","Up","PIM-Decapsulator","Unlimited"
"pime","Enabled","Up","PIM-Encapsulator","Unlimited"
"pp0","Enabled","Up","PPPoE","1532"
"ppd0","Enabled","Up","PIM-Decapsulator","Unlimited"
"ppe0","Enabled","Up","PIM-Encapsulator","Unlimited"
"st0","Enabled","Up","Secure-Tunnel","9192"
"tap","Enabled","Up","Interface-Specific","Unlimited"
"vlan","Enabled","Down","VLAN","1518"
サンプル1-3: showコマンド結果のCSV出力 (CSVファイル内容の確認)
69
⚫ 出力CSVファイル (result_interface.csv) CSVテンプレートの書式に
パースされた情報が埋め込まれて
CSVファイルが生成された
設定変更サンプル 【2-1】
簡単な設定変更
70
JANOG
JApan Network Operators' Group
サンプル2-1: 簡単な設定変更 (流れ)
71
(1) set system ntp server コマンド実行
⚫ 参照NTPサーバー設定コマンドを投入
JANOG
JApan Network Operators' Group
サンプル2-1: 簡単な設定変更 (Playbook)
72
- hosts: junos
gather_facts: no
tasks:
- name: config test
junos_config:
lines:
- set system ntp server 10.0.0.123
⚫ Playbook (set01.yml)
Junos設定コマンド実行モジュール
junos_config(※1) で設定したいコマンドを指定
※1 junos_config モジュール詳細
https://docs.ansible.com/ansible/latest/modules/junos_config_module.html
JANOG
JApan Network Operators' Group
サンプル2-1: 簡単な設定変更 (実行結果)
73
[vagrant@centos7 janog]$ ansible-playbook -i inventory set01.yml
PLAY [junos] ***************************************************************
TASK [config test] *********************************************************
changed: [172.16.0.1]
PLAY RECAP
****************************************************************************
172.16.0.1 : ok=1 changed=1 unreachable=0 failed=0
⚫ 実行結果
設定変更された
ansible-playbook コマンドを実行
JANOG
JApan Network Operators' Group
サンプル2-1: 簡単な設定変更 (作業後コンフィグの確認)
74
root@vsrx1> show configuration system ntp | display set
set system ntp server 10.0.0.123
root@vsrx1>
⚫ 実行結果(ネットワーク機器側)
設定が反映された
設定変更サンプル 【2-2】
テンプレートを利用した設定変更
75
JANOG
JApan Network Operators' Group
サンプル2-2: テンプレートを利用した設定変更 (流れ)
76
(3) 生成コンフィグ投入
⚫ 参照NTPサーバー設定コマンドを投入
[コンフィグテンプレート]
{{ }}
(1) パラメータ埋め込み
set system ntp server 10.0.1.123
set system ntp server 10.0.2.123
set system ntp server 10.0.3.123
set system ntp server 10.0.4.123
set system ntp server 10.0.5.123
(2) コンフィグ生成
JANOG
JApan Network Operators' Group
サンプル2-2: テンプレートを利用した設定変更 (Playbook)
77
- hosts: junos
gather_facts: no
tasks:
- name: config test
junos_config:
src: template_ntp_junos.txt
vars:
ntp_servers:
- 10.0.1.123
- 10.0.2.123
- 10.0.3.123
- 10.0.4.123
- 10.0.5.123
⚫ Playbook (set02.yml)
NTPサーバーのIPアドレスのリストを
変数「ntp_servers」として定義
Junos設定コマンド実行モジュール junos_config で
流し込みたいコンフィグファイルを指定
JANOG
JApan Network Operators' Group
{% for n in ntp_servers %}
set system ntp server {{ n }}
{% endfor %}
サンプル2-2: テンプレートを利用した設定変更 (コンフィグテンプレート)
78
⚫ コンフィグテンプレート (template_ntp_j.txt ) Playbook内で定義された変数
ntp_servers の内容が入る
for 文による繰り返し
set system ntp server 10.0.1.123
set system ntp server 10.0.2.123
set system ntp server 10.0.3.123
set system ntp server 10.0.4.123
set system ntp server 10.0.5.123
⚫ 生成されるコンフィグ
※ テンプレートエンジン jinja2 を利用
JANOG
JApan Network Operators' Group
サンプル2-2: テンプレートを利用した設定変更 (実行結果)
79
[vagrant@centos7 janog]$ ansible-playbook -i inventory set02.yml
PLAY [junos] ***************************************************************
TASK [config test] *********************************************************
changed: [172.16.0.1]
PLAY RECAP
****************************************************************************
172.16.0.1 : ok=1 changed=1 unreachable=0 failed=0
⚫ 実行結果
設定変更された
ansible-playbook コマンドを実行
JANOG
JApan Network Operators' Group
サンプル2-2: テンプレートを利用した設定変更(作業後コンフィグの確認)
80
root@vsrx1> show configuration system ntp | display set
set system ntp server 10.0.1.123
set system ntp server 10.0.2.123
set system ntp server 10.0.3.123
set system ntp server 10.0.4.123
set system ntp server 10.0.5.123
root@vsrx1>
⚫ 実行結果(ネットワーク機器側)
設定が反映された
設定変更サンプル 【2-3】
処理継続確認付きの設定変更
81
JANOG
JApan Network Operators' Group
サンプル2-3: 処理継続確認付きの設定変更 (流れ)
82
(4) set system ntp server コマンド実行
⚫ 処理継続してよいかの入力を待ち、OKであれば設定コマンドを投入
よろしいですか?
(1) 入力待ち
y
(2) 入力
継続?
(3) 判断
(4)’ 処理中止
[y]
[y以外]
JANOG
JApan Network Operators' Group
サンプル2-3: 処理継続確認付きの設定変更 (Playbook)
83
- hosts: junos
gather_facts: no
tasks:
- name: confirm
pause:
prompt: "continue? [y/N]"
register: input
- name: abort
fail:
when: input.user_input != "y"
- name: config test
junos_config:
lines:
- set system ntp server 10.0.0.123
⚫ Playbook (set03.yml)
Junos設定コマンド実行モジュール junos_config で
設定したいコマンドを指定
入力された文字が「y」でなければ処理を中断
入力待ち状態で待機するpauseモジュールで
表示する文字列
入力された文字が変数 input に入る
JANOG
JApan Network Operators' Group
サンプル2-3: 処理継続確認付きの設定変更 (実行結果1:処理継続)
84
[vagrant@centos7 janog]$ ansible-playbook -i inventory set03.yml
PLAY [junos] ***************************************************************
TASK [confirm] *************************************************************
[confirm]
continue? [y/N]: y
ok: [172.16.0.1]
TASK [abort] ***************************************************************
skipping: [172.16.0.1]
TASK [config test] *********************************************************
changed: [172.16.0.1]
PLAY RECAP *****************************************************************
172.16.0.1 : ok=2 changed=1 unreachable=0 failed=0
⚫ 実行結果(処理継続)
設定変更された
ansible-playbook コマンドを実行
y を入力
y が入力されたため中止処理はスキップ
JANOG
JApan Network Operators' Group
サンプル2-3: 処理継続確認付きの設定変更 (実行結果2:処理中止)
85
[vagrant@centos7 janog]$ ansible-playbook -i inventory set03.yml
PLAY [junos] *****************************************************************************
TASK [confirm] ***************************************************************************
[confirm]
continue? [y/N]: N
ok: [172.16.0.1]
TASK [abort] *****************************************************************************
fatal: [172.16.0.1]: FAILED! => {"changed": false, "msg": "Failed as requested from task"}
PLAY RECAP *******************************************************************************
172.16.0.1 : ok=1 changed=0 unreachable=0 failed=1
⚫ 実行結果(処理中止)
ansible-playbook コマンドを実行
y 以外 が入力されたため中止処理
N を入力
ネットワーク対応のまとめ
86
JANOG
JApan Network Operators' Group
ネットワーク対応のまとめ
– Ansible は 40以上のネットワークプラットフォームに対応し、参照や設定などができる
– ネットワークモジュール固有のポイントがいくつかある
– コネクションタイプ、ansible_network_os 変数、ファクト収集方法、特権モードなど
– 他の Ansible の機能と連携して様々な処理ができる
– サーバー、クラウド、監視ツール、通知、ファイル管理など、他にも様々な用途のモジュールがある
87
JANOG
JApan Network Operators' Group
参考資料
– 公式ドキュメント
– トップ
– https://docs.ansible.com/
– Ansible for Network Automation
– https://docs.ansible.com/ansible/latest/network/index.html
– ネットワークモジュール一覧
– https://docs.ansible.com/ansible/latest/modules/list_of_network_modules.html
– 書籍
– Ansible実践ガイド 第2版
– https://book.impress.co.jp/books/1117101100
– Ansible徹底入門
– https://www.shoeisha.co.jp/book/detail/9784798149943
– その他
– ネットワークエンジニア的Ansibleの始め方
– https://www.slideshare.net/akira6592/networkengineermeetsansible-85889620
– もっと気軽に始めるAnsible (JANOG41.5)
– https://www.slideshare.net/akira6592/ansibleadhocnetworkautomation
88
JANOG
JApan Network Operators' Group
イベント情報
– Ansibleユーザー会
– 【7/12】 Ansible Night in Osaka 2018.07 @大阪
– https://ansible-users.connpass.com/event/90117/
– 【7/17】 Ansibleもくもく会 (第4回) @東京
– https://ansible-users.connpass.com/event/92701/
– 【8/3】 Ansible Night in Fukuoka 2018.08 @福岡
– https://ansible-users.connpass.com/event/93620/
– JANOG42 Meeting in Mie
– 【7/11 16:30 ~】 ネットワーク運用自動化BoF 対話編 @多目的ホール
89
このあと、ここで
JANOG
JApan Network Operators' Group 90
Thank you

Mais conteúdo relacionado

Mais procurados

【EX/QFX】JUNOS ハンズオントレーニング資料 EX/QFX シリーズ サービス ゲートウェイ コース
【EX/QFX】JUNOS ハンズオントレーニング資料 EX/QFX シリーズ サービス ゲートウェイ コース 【EX/QFX】JUNOS ハンズオントレーニング資料 EX/QFX シリーズ サービス ゲートウェイ コース
【EX/QFX】JUNOS ハンズオントレーニング資料 EX/QFX シリーズ サービス ゲートウェイ コース Juniper Networks (日本)
 
Ansible tower 構築方法と使い方
Ansible tower 構築方法と使い方Ansible tower 構築方法と使い方
Ansible tower 構築方法と使い方Hiroshi Okano
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化dcubeio
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Sho A
 
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月VirtualTech Japan Inc.
 
【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース
【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース
【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コースJuniper Networks (日本)
 
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 (日本)
 
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編VirtualTech Japan Inc.
 
最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみようTakashi Kajinami
 
明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化Taiji Tsuchiya
 
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)akira6592
 
OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...
OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...
OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...VirtualTech Japan Inc.
 
Internet Week 2018 知っておくべきIPv6とセキュリティの話
Internet Week 2018 知っておくべきIPv6とセキュリティの話Internet Week 2018 知っておくべきIPv6とセキュリティの話
Internet Week 2018 知っておくべきIPv6とセキュリティの話Akira Nakagawa
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjugYahoo!デベロッパーネットワーク
 
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)Wataru NOGUCHI
 

Mais procurados (20)

【EX/QFX】JUNOS ハンズオントレーニング資料 EX/QFX シリーズ サービス ゲートウェイ コース
【EX/QFX】JUNOS ハンズオントレーニング資料 EX/QFX シリーズ サービス ゲートウェイ コース 【EX/QFX】JUNOS ハンズオントレーニング資料 EX/QFX シリーズ サービス ゲートウェイ コース
【EX/QFX】JUNOS ハンズオントレーニング資料 EX/QFX シリーズ サービス ゲートウェイ コース
 
Ansible tower 構築方法と使い方
Ansible tower 構築方法と使い方Ansible tower 構築方法と使い方
Ansible tower 構築方法と使い方
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
 
【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース
【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース
【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース
 
OpenStack Octavia入門
OpenStack Octavia入門OpenStack Octavia入門
OpenStack Octavia入門
 
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をさわってみよう!~
 
AWSからのメール送信
AWSからのメール送信AWSからのメール送信
AWSからのメール送信
 
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
OpenStackで始めるクラウド環境構築入門 Havana&DevStack編
 
最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう最近のOpenStackを振り返ってみよう
最近のOpenStackを振り返ってみよう
 
自宅k8s/vSphere入門
自宅k8s/vSphere入門自宅k8s/vSphere入門
自宅k8s/vSphere入門
 
はじめての vSRX on AWS
はじめての vSRX on AWSはじめての vSRX on AWS
はじめての vSRX on AWS
 
明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化
 
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
 
OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...
OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...
OVS VXLAN Network Accelaration on OpenStack (VXLAN offload and DPDK) - OpenSt...
 
Internet Week 2018 知っておくべきIPv6とセキュリティの話
Internet Week 2018 知っておくべきIPv6とセキュリティの話Internet Week 2018 知っておくべきIPv6とセキュリティの話
Internet Week 2018 知っておくべきIPv6とセキュリティの話
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
 

Semelhante a Ansible ネットワーク自動化チュートリアル (JANOG42)

20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQL20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQLRyusuke Kajiyama
 
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...Naoto Gohko
 
Neutron Icehouse Update (Japanese)
Neutron Icehouse Update (Japanese)Neutron Icehouse Update (Japanese)
Neutron Icehouse Update (Japanese)Akihiro Motoki
 
NetApp Session at PEX Tokyo 2013
NetApp Session at PEX Tokyo 2013NetApp Session at PEX Tokyo 2013
NetApp Session at PEX Tokyo 2013NetApp Japan
 
QCon北京2015 sina jpool-微博平台自动化运维实践
QCon北京2015 sina jpool-微博平台自动化运维实践QCon北京2015 sina jpool-微博平台自动化运维实践
QCon北京2015 sina jpool-微博平台自动化运维实践Weibo Corporation
 
ASP.NET vNextの全貌
ASP.NET vNextの全貌ASP.NET vNextの全貌
ASP.NET vNextの全貌A AOKI
 
2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~
2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~
2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~Naoto Gohko
 
OSC2011 Tokyo/Fall JOSUG
OSC2011 Tokyo/Fall JOSUGOSC2011 Tokyo/Fall JOSUG
OSC2011 Tokyo/Fall JOSUGHideki Saito
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)Daisuke Ikeda
 
Wakame Project - 自作クラウド研究会
Wakame Project - 自作クラウド研究会Wakame Project - 自作クラウド研究会
Wakame Project - 自作クラウド研究会axsh co., LTD.
 
20131211 Neutron Havana
20131211 Neutron Havana20131211 Neutron Havana
20131211 Neutron HavanaAkihiro Motoki
 
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...Naoto Gohko
 
Build 2014 Azure インフラエンジニア向けアップデート
Build 2014 Azure インフラエンジニア向けアップデートBuild 2014 Azure インフラエンジニア向けアップデート
Build 2014 Azure インフラエンジニア向けアップデートkekekekenta
 
OpenStack with SR-IOV
OpenStack with SR-IOVOpenStack with SR-IOV
OpenStack with SR-IOVHideki Saito
 
20170804 IOS/IOS-XE運用管理機能アップデート
20170804 IOS/IOS-XE運用管理機能アップデート20170804 IOS/IOS-XE運用管理機能アップデート
20170804 IOS/IOS-XE運用管理機能アップデートKazumasa Ikuta
 
Juniper NetworkGuru Plugin - Juniper EX/QFX Swtich CloudStack Integration -
Juniper NetworkGuru Plugin - Juniper EX/QFX Swtich CloudStack Integration -Juniper NetworkGuru Plugin - Juniper EX/QFX Swtich CloudStack Integration -
Juniper NetworkGuru Plugin - Juniper EX/QFX Swtich CloudStack Integration -Juniper Networks (日本)
 
JAWS目黒 EC2チューニングTips #jawsmeguro #jawsug
JAWS目黒 EC2チューニングTips #jawsmeguro #jawsugJAWS目黒 EC2チューニングTips #jawsmeguro #jawsug
JAWS目黒 EC2チューニングTips #jawsmeguro #jawsugYasuhiro Matsuo
 
Cloudstack networking の内側
Cloudstack networking の内側Cloudstack networking の内側
Cloudstack networking の内側Hiroaki Kawai
 

Semelhante a Ansible ネットワーク自動化チュートリアル (JANOG42) (20)

20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQL20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQL
 
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
OpenStack + KVM + IPv6 = oname.com; Next Folsom/Grizzly Service development s...
 
Neutron Icehouse Update (Japanese)
Neutron Icehouse Update (Japanese)Neutron Icehouse Update (Japanese)
Neutron Icehouse Update (Japanese)
 
NetApp Session at PEX Tokyo 2013
NetApp Session at PEX Tokyo 2013NetApp Session at PEX Tokyo 2013
NetApp Session at PEX Tokyo 2013
 
QCon北京2015 sina jpool-微博平台自动化运维实践
QCon北京2015 sina jpool-微博平台自动化运维实践QCon北京2015 sina jpool-微博平台自动化运维实践
QCon北京2015 sina jpool-微博平台自动化运维实践
 
ASP.NET vNextの全貌
ASP.NET vNextの全貌ASP.NET vNextの全貌
ASP.NET vNextの全貌
 
2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~
2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~
2012 OpenStack + KVM = onamae.com VPS #2 ~ vnc and snapshot ~
 
OSC2011 Tokyo/Fall JOSUG
OSC2011 Tokyo/Fall JOSUGOSC2011 Tokyo/Fall JOSUG
OSC2011 Tokyo/Fall JOSUG
 
OpenFlow Controller lily
OpenFlow Controller lilyOpenFlow Controller lily
OpenFlow Controller lily
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
 
Wakame Project - 自作クラウド研究会
Wakame Project - 自作クラウド研究会Wakame Project - 自作クラウド研究会
Wakame Project - 自作クラウド研究会
 
20131211 Neutron Havana
20131211 Neutron Havana20131211 Neutron Havana
20131211 Neutron Havana
 
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
 
Build 2014 Azure インフラエンジニア向けアップデート
Build 2014 Azure インフラエンジニア向けアップデートBuild 2014 Azure インフラエンジニア向けアップデート
Build 2014 Azure インフラエンジニア向けアップデート
 
OpenStack with SR-IOV
OpenStack with SR-IOVOpenStack with SR-IOV
OpenStack with SR-IOV
 
20170804 IOS/IOS-XE運用管理機能アップデート
20170804 IOS/IOS-XE運用管理機能アップデート20170804 IOS/IOS-XE運用管理機能アップデート
20170804 IOS/IOS-XE運用管理機能アップデート
 
IOS/IOS-XE 運用管理機能アップデート
IOS/IOS-XE 運用管理機能アップデートIOS/IOS-XE 運用管理機能アップデート
IOS/IOS-XE 運用管理機能アップデート
 
Juniper NetworkGuru Plugin - Juniper EX/QFX Swtich CloudStack Integration -
Juniper NetworkGuru Plugin - Juniper EX/QFX Swtich CloudStack Integration -Juniper NetworkGuru Plugin - Juniper EX/QFX Swtich CloudStack Integration -
Juniper NetworkGuru Plugin - Juniper EX/QFX Swtich CloudStack Integration -
 
JAWS目黒 EC2チューニングTips #jawsmeguro #jawsug
JAWS目黒 EC2チューニングTips #jawsmeguro #jawsugJAWS目黒 EC2チューニングTips #jawsmeguro #jawsug
JAWS目黒 EC2チューニングTips #jawsmeguro #jawsug
 
Cloudstack networking の内側
Cloudstack networking の内側Cloudstack networking の内側
Cloudstack networking の内側
 

Mais de 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のバグ修正に協力してみたはじめて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
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyakira6592
 
はじめた自動化をどう広めるか 書籍「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
 

Mais de akira6592 (20)

新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア新人研修資料 向き合うエンジニア
新人研修資料 向き合うエンジニア
 
Ansible とネットワーク自動化の概要(SmartCS と Ansible の連携による自動化の可能性を体験!)
Ansible とネットワーク自動化の概要(SmartCS と Ansible の連携による自動化の可能性を体験!)Ansible とネットワーク自動化の概要(SmartCS と Ansible の連携による自動化の可能性を体験!)
Ansible とネットワーク自動化の概要(SmartCS と Ansible の連携による自動化の可能性を体験!)
 
Ansible 実践ガイド第3版 ネットワーク担当としてのふりかえり #インフラエンジニアBooks
Ansible 実践ガイド第3版 ネットワーク担当としてのふりかえり #インフラエンジニアBooksAnsible 実践ガイド第3版 ネットワーク担当としてのふりかえり #インフラエンジニアBooks
Ansible 実践ガイド第3版 ネットワーク担当としてのふりかえり #インフラエンジニアBooks
 
Ansible でお世話になっている機能と拡張
Ansible でお世話になっている機能と拡張Ansible でお世話になっている機能と拡張
Ansible でお世話になっている機能と拡張
 
Ansible 2.10 と Collection
Ansible 2.10 と CollectionAnsible 2.10 と Collection
Ansible 2.10 と Collection
 
自動化の下ごしらえ
自動化の下ごしらえ自動化の下ごしらえ
自動化の下ごしらえ
 
向き合うエンジニア 2020年度版
向き合うエンジニア 2020年度版向き合うエンジニア 2020年度版
向き合うエンジニア 2020年度版
 
はじめてAnsibleのバグ修正に協力してみた
はじめてAnsibleのバグ修正に協力してみたはじめて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でネットワーク自動化的に何が嬉しくなるのか考えてみた
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudy
 
はじめた自動化をどう広めるか 書籍「Fearless Change」からのヒント
はじめた自動化をどう広めるか 書籍「Fearless Change」からのヒントはじめた自動化をどう広めるか 書籍「Fearless Change」からのヒント
はじめた自動化をどう広めるか 書籍「Fearless Change」からのヒント
 
はじめどころを探る自動化アセスメント(JANOG44 ここからはじめよう、運用自動化)
はじめどころを探る自動化アセスメント(JANOG44 ここからはじめよう、運用自動化)はじめどころを探る自動化アセスメント(JANOG44 ここからはじめよう、運用自動化)
はじめどころを探る自動化アセスメント(JANOG44 ここからはじめよう、運用自動化)
 
向き合うエンジニア
向き合うエンジニア向き合うエンジニア
向き合うエンジニア
 
Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-
 
ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方
 

Ansible ネットワーク自動化チュートリアル (JANOG42)

  • 2. JANOG JApan Network Operators' Group Introduction Shingo Kitayama 2 Shingo Kitayama Company: Red Hat K.K. Role: Solution Architect Product: OpenShift Interest: KPP shkitayama spchildren
  • 3. JANOG JApan Network Operators' Group 自己紹介 3 名前 横地 晃 所属 株式会社 エーピーコミュニケーションズ @akira6592 https://www.slideshare.net/akira6592/ 過去発表資料 (JANOG 41 / 41.5 等) https://tekunabe.hatenablog.jp ブログ(てくなべ)
  • 4. JANOG JApan Network Operators' Group Agenda 本日のアジェンダ 4 1 2 3 4 これからの自動化 Ansibleによる自動化の世界 Ansibleの仕組み Playbookを理解する 5 6 7 8 ネットワーク対応の基本 情報取得サンプル 設定変更サンプル ネットワーク対応のまとめ 前半 Automation with Ansible 後半 Ansible Network World
  • 5. JANOG JApan Network Operators' Group 本日お伝えしたいこと Janogに参加したら、Ansibleを使えるようになったというお土産 5 Ansibleはネットワーク機器にも使え、 シンプルで導入コストが低く、 様々なプラットフォームに対応している。 Ansible is Simple
  • 7. JANOG JApan Network Operators' Group 7 Automation for Network Infrastructure is Coming
  • 8. JANOG JApan Network Operators' Group ネットワーク自動化の状況 ほとんどのユーザーがCLI管理 8参照: Gartner, Look Beyond Network Vendors for Network Innovation. January 2018. Gartner ID: G00349636. (n=64)
  • 9. JANOG JApan Network Operators' Group SDN市場の拡大 SDNおよびNFVに関する国内市場予測 9 参照: https://www.idcjapan.co.jp/Press/Current/20180410Apr.html 521億円 1759億円 国内SDN市場は、成長が軌道に乗り2017年には521億円にまで市場 規模が拡大。 2022年には1759億円にまで成長するとの予測。 成長率 売り上げ
  • 10. JANOG JApan Network Operators' Group 高まるネットワーク自動化への期待 キャリア、DCともに自動化に注力 10 参照: https://www.idcjapan.co.jp/Press/Current/20180410Apr.html Carrier Datacenter Datacenter SDNの注目分野 2017年~2022年のCAGR 24.0% 「データセンターネットワークの自動化」 「マイクロセグメンテーションの適用」 Carrier SDNの注目分野 2017年~2022年のCAGR 32.7% 「NFV環境の基盤としての導入」 「5Gネットワークにおけるネットワークスライシング」 「通信事業者のオペレーションの自動化」 CDN Area Datacenter Cloud DatacenterEdge Computing Mid Datacenter 5G / VoLTE IP / SD-WAN ※ CAGR=Compound Annual Growth Rate(年間平均成長率)
  • 11. JANOG JApan Network Operators' Group 多様化された自動化の課題 製品によって異なるオペレーション 11 さまざまな領域でSDN技術の適用が進む反面、適用領域ごとに異なるSDNコントローラーや管理コンソールを必要とする 「SDNのサイロ化」に対する懸念。 ネットワークセグメント が一つほしい A社SDN B社SDN C社SDN ネットワークセグメントが 一つできる スクリプト対応 ベンダー固有 管理ツール 設定依頼 設定作業 提供1 2 3
  • 12. JANOG JApan Network Operators' Group 作業の自動化とプロセスの自動化 自動化という言葉の範囲 12 設定依頼 設定作業 提供1 2 3 設定内容の確認 設定手順の作成 事前設定テスト 設定作業実施 設定反映チェック 成果報告 データの作成 プロセスの自動化 ・セグメントポリシー確認 ・VLAN利用確認 ・利用用途確認 ・手順書のレビュー ・IP重複確認 ・テスト機の作業実施 ・テスト内容影響確認 ・本番機設定のバックアップ ・IP重複確認 ・予備機の作業実施 ・予備機影響確認 ・本番機の作業実施 ・本番機影響確認 ・申請者の利用確認 ・ビジネス影響確認 ・設定内容確認 ・本番反映データ取得 ・ログの管理 ・構成管理台帳反映 ・対応報告 個々の 作業自動化
  • 13. JANOG JApan Network Operators' Group “ ” サイロ化する自動化の回避 自動化は意識改革 13 Ansible’s simple automation framework means that previously isolated network administrators can finally speak the same language of automation as the rest of the IT organization. マネジメントの意識改革 エンジニアの意識改革 工数削減できるという期待で、 自動化することが目的となってしまう。 自動化は手段の一つであり、 自動化することで品質と 短納期を目的とする。 再利用できる自動化を目指し、 最終的な効果を測定できるようにする。 属人的に自動化を行うことで、 内容が複雑化されると同時に 寿命が短く、無駄な工数になってしまう。
  • 14. JANOG JApan Network Operators' Group Infrastructure as Code ネットワークの自動化 14 設定依頼 設定作業 提供1 2 3 設定内容の確認 設定手順の作成 事前設定テスト 設定作業実施 設定反映チェック 成果報告 データの作成 プロセスの自動化 = “Infrastructure as Code”の範囲 ・セグメントポリシー確認 ・VLAN利用確認 ・利用用途確認 ・手順書のレビュー ・IP重複確認 ・テスト機の作業実施 ・テスト内容影響確認 ・本番機設定のバックアップ ・IP重複確認 ・予備機の作業実施 ・予備機影響確認 ・本番機の作業実施 ・本番機影響確認 個々の作業自動化だけを重視すると、 ”サイロ化”が進む ・申請者の利用確認 ・ビジネス影響確認 ・設定内容確認 ・本番反映データ取得 ・ログの管理 ・構成管理台帳反映 ・対応報告
  • 16. JANOG JApan Network Operators' Group ネットワークにAnsibleを利用する価値 小さく始めて、大きく育てることができる 16 Build Manage Scale 設定の自動化 プロセスの管理 動的な運用 個々の作業 自動化 プロセス の自動化 運用の自動化 - すぐに始められる自動化 - マルチベンダー製品対応 - 既存のネットワーク機器でも、新 しいネットワーク機器でも対応可 - 構成ドリフトをトラックできる - 任意のネットワーク機器も同じ 方法で管理できる - 変更したことを検証できる - 正常状態を定期的に確認する - 特定のチーム間でロールベース のアクセス制御を行う - RESTful APIを通してサード パーティ製品の統合をする 本日の話の範囲
  • 17. JANOG JApan Network Operators' Group Ansibleの特徴 自動化を気軽に始められる要素 17 Simple Powerful Agentless - 人が読みやすい設定 - 特別なスキルが不要 - 順序通り実行される > すぐに始められる - 機器情報や接続情報の取得 - 設定管理 - 自動化のワークフロー > 製品に依存しない管理 - エージェント不要なアーキテクチャ - OpenSSHやparamikoの利用 > 効率的かつセキュア
  • 18. JANOG JApan Network Operators' Group Ansibleの特徴 - Simple - YAMLファイルによる記述 18 Ios_command.yml - name: run multiple commands hosts: ios01 tasks: - name: show version and show interfaces ios_command: commands: - show version - show interfaces Simple コーディングではなく、手順書の 延長としての書式を重視 ・ yaml ain't markup languageの略 ・ 一般的な拡張子は 「.yml」 ・ 構造化データの表現方法 ・ 仕様を処理する実装が別途必要
  • 19. JANOG JApan Network Operators' Group Ansibleの特徴 - Powerful - 各ベンダーおよび全レイヤーをサポート 19 Datacenter Cloud Application Configurations Management - Linux/Windows Initial Setup - Cisco/F5 Configuration - Netapp Management Bootstrapping - AWS/Azure/GCP Resource Control - VMware Configuration - Container Running Orchestrations - MySQL/Hadoop Cluster Setup - 3Tier Web Application - Cloud Native App Management Powerful
  • 20. JANOG JApan Network Operators' Group Ansibleの特徴 - Agentless - Agentless Connection 20 Agentless - Agentの導入/管理する工数が不要 - 都度SSHによって接続するためセキュア - 既存の機器にもすぐに導入できる
  • 21. JANOG JApan Network Operators' Group AnsibleのCommunityとEnterprise Ansibleの製品一覧 21 個々の作業 自動化 運用の自動化
  • 23. JANOG JApan Network Operators' Group Ansibleのコアコンポーネント Ansible Automation Engine 23 ANSIBLE AUTOMATION ENGINE INVENTORY PLUGINSCLI MODULES PLAYBOOK 再利用可能な処理ユニット。作業 をラッピングしたコンポーネント Ansibleのコア機能を拡張する ためのコンポーネント Ansibleを操作するための インターフェイス APPLICATIONS PUBLIC / PRIVATE CLOUD DATACENTER
  • 24. JANOG JApan Network Operators' Group Ansible Command Line Interface Ansible Ad-Hoc Command & Playbook Command 24 [Usage] ansible <Target Host> -i <Inventory Files> -m <Module> $ ansible cisco -i inventory -m ping [Usage] ansible <Target Host> -i <Inventory Files> -m <Module> -a <Argument> $ ansible cisco -i inventory –m ios_command -a “commands=show version” [Usage] ansible-playbook -i <Inventory Files> <Playbook File> $ ansible-playbook -i inventory site.yml 2. Ansible Playbook Command 1. Ansible Ad-Hoc Command 基本はコマンドラインからAnsibleを経由して操作を行う。 ターゲットのネットワーク機器を管理するために覚えなければいけないコマンドは、以下の2種類。
  • 25. JANOG JApan Network Operators' Group Connectionの仕組み 実行コードによるオペレーションの実行 25 TARGET NODE 1. ターゲットホスト の検証 3. 実行コードを 生成 2. モジュール の読み取り 5. 実行コードの 実行 4. 実行コードの 配布 ANSIBLE AUTOMATION ENGINE INVENTORY PLUGINSCLI MODULES PLAYBOOK 1. ターゲットホストの検証 2. モジュールの読み取り 3. 実行コードを生成 EXECUTABLE CODE Python Python 4. 実行コードの配布 (SCP) 5. 実行コードの実行
  • 26. JANOG JApan Network Operators' Group Network Connection Plugin 26 TARGET SERVER ANSIBLE AUTOMATION ENGINE PLUGINSCLI MODULES Python SCP TARGET NETWORK ANSIBLE AUTOMATION ENGINE PLUGINSCLI MODULES XML over SSH CLI over SSH API over HTTPS HOST DEVICES NETWORKING DEVICES Remote Execution Local Execution
  • 27. JANOG JApan Network Operators' Group 冪等性の担保 再利用可能な処理ユニットとは 27 TARGET NODE TARGET NODE TARGET NODE 新しいVLAN(ID:120)を作成して、 GigabitEth0/4,0/5に割り当てる。 1回目の実行 2回目の実行 n回目の実行 … … … すでに設定済み 未設定 未設定 設定実施 設定実施 何もしない 何もしない 何もしない 何もしない 何もしない 何もしない 何もしない
  • 28. JANOG JApan Network Operators' Group - name: Assign new VLAN hosts: cisco vars: NEW_VLAN_ID: 120 tasks: - name: Create VLAN ios_vlan: vlan_id: "{{ NEW_VLAN_ID }}" name: janog-vlan state: present - name: Add interface to VLAN ios_vlan: vlan_id: "{{ NEW_VLAN_ID }}" interfaces: - GigabitEthernet0/4 - GigabitEthernet0/5 Ansible Modules 再利用可能な処理ユニット 28 新しいVLAN(ID:120) を作成 GigabitEth0/4,0/5に 割り当てる 宣言型プログラミング どういう状態にするのか 各種モジュールを利用して個別のタスクを実行する ← Module(iso_vlan) https://docs.ansible.com/ansible/latest/modules/ios_ vlan_module.html
  • 29. JANOG JApan Network Operators' Group ネットワークモジュールの拡大 Ansible Network Progress 29 2.1 May 2016 2.2 Oct 2016 2.3 Apr 2017 2.4 Sep 2017 2.5 Mar 2018 Persistent Connections NETCONF Support Declarative Intent Aggregate Resources Platform Agnostic network_cli connection plug-in NETCONF connection plug-in Better Logging XML Filters 7 Platforms 28 Modules 17 Platforms 141 Modules 17 Platforms 141 Modules 33 Platforms 463 Modules 40 Platforms 572 Modules
  • 30. JANOG JApan Network Operators' Group Ansibleのコアコンポーネント Ansible Automation Engine 30 ANSIBLE AUTOMATION ENGINE INVENTORY PLUGINSCLI MODULES PLAYBOOK 再利用可能な処理ユニット。作業 をラッピングしたコンポーネント Ansibleのコア機能を拡張する ためのコンポーネント Ansibleを操作するための インターフェイス APPLICATIONS PUBLIC / PRIVATE CLOUD DATACENTER
  • 31. JANOG JApan Network Operators' Group Ansibleのコアコンポーネント Ansible Automation Engine 31 ANSIBLE AUTOMATION ENGINE INVENTORY PLUGINSCLI MODULES PLAYBOOK 再利用可能な処理ユニット。作業 をラッピングしたコンポーネント Ansibleのコア機能を拡張する ためのコンポーネント Ansibleを操作するための インターフェイス APPLICATIONS PUBLIC / PRIVATE CLOUD DATACENTER Network Automation Start with Playbook
  • 33. JANOG JApan Network Operators' Group cisco junos Inventory Static Inventory 33 Inventoryとは、処理対象サーバの接続情報を記載したファイルです。 # ciscoグループを定義 [cisco] csr01 ansible_host=192.168.1.1 csr02 ansible_host=192.168.1.2 # junosグループを定義 [junos] 192.168.100.1 # EXxxxx 1台目 192.168.100.2 # EXxxxx 2台目 # ciscoグループ共通の変数定義 [cisco:vars] # Connection Plugin ansible_connection=network_cli # 対象OS ansible_network_os=ios … グループ化されたターゲットノードは同時に実行されます Catalyst Catalyst EXxxxx EXxxxx all Vars Vars ターゲットノード ターゲットノード変数定義 変数定義 共通の接続情報などはInventoryに設定しておく
  • 34. JANOG JApan Network Operators' Group Ansible Ad-Hoc Command 34 $ ls ./inventory/hosts [Usage] ansible <Target Host> -i <Inventory Files> -m <Module> $ ansible cisco -i inventory -m ios_command -a "commands='show version'" csr01 | SUCCESS => { "changed": false, "stdout": [ "Cisco IOS XE Software, Version 16.04.01¥nCisco IOS Software [Everest], CSR1000V Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 16.4.1, RELEASE SOFTWARE (fc3)¥nTechnical Support: http://www.cisco.com/techsupport¥nCopyright (c) 1986-2016 by Cisco Systems, Inc.¥nCompiled Wed 30-Nov-16 22:13 by mcpre¥n¥n¥nCisco IOS-XE software, Copyright (c) 2005-2016 by cisco Systems, Inc.¥nAll rights reserved. Certain components of Cisco IOS-XE software are¥nlicensed
  • 35. JANOG JApan Network Operators' Group YAMLの規則 Playbook is YAML 35 - Title: YAMLの掟 Rules: - Rule1: 二種類の文法を主に使用する type: - シーケンス (List形式でデータ構造を表す) - マッピング (Key Value形式でデータ構造を表す) - Rule2: コメントアウトは [#] - Rule3: 入れ子構造はインデントで表す attention: - インデントにタブ記号は使えない - インデントは空白2文字 - Rule4: データ型の宣言は不要 - name: Assign new VLAN hosts: cisco vars: NEW_VLAN_ID: 120 tasks: - name: Create VLAN ios_vlan: vlan_id: "{{ NEW_VLAN_ID }}" name: janog-vlan state: present - name: Add interface to VLAN ios_vlan: vlan_id: "{{ NEW_VLAN_ID }}" interfaces: - GigabitEthernet0/4 - GigabitEthernet0/5
  • 36. JANOG JApan Network Operators' Group YAMLの文法 シーケンスとマッピング 36 書式) - <value> 例) - apple - orange - lemon 書式) <key>: <value> 例) 林檎: apple: 蜜柑: orange 檸檬: lemon 0 1 2 林檎 蜜柑 檸檬 シーケンス(List) マッピング(Dictionary) ハイフン+スペース コロン+スペース lemonapple orange lemonapple orange
  • 37. JANOG JApan Network Operators' Group Assign new VLAN - name: Assign new VLAN hosts: cisco vars: NEW_VLAN_ID: 120 tasks: - name: Create VLAN ios_vlan: vlan_id: "{{ NEW_VLAN_ID }}" name: janog-vlan state: present - name: Add interface to VLAN ios_vlan: vlan_id: "{{ NEW_VLAN_ID }}" interfaces: - GigabitEthernet0/4 - GigabitEthernet0/5 name YAMLの文法 YAMLの入れ子構造を理解する 37 0 1 2 hosts vars (1) シーケンスの中にマッピングをネスト (2) マッピングの中にシーケンスをネスト name ios_vlan Playbook (1) (2) Play cisco Tasks 0 1 2 MODULES (1) tasks NEW_ VLAN_ID Vars 120
  • 38. JANOG JApan Network Operators' Group Playbookの基本 セクションと関係性 38 - name: Assign new VLAN hosts: cisco vars: NEW_VLAN_ID: 120 tasks: - name: Create VLAN ios_vlan: vlan_id: "{{ NEW_VLAN_ID }}" name: janog-vlan state: present - name: Add interface to VLAN ios_vlan: vlan_id: "{{ NEW_VLAN_ID }}" interfaces: - GigabitEthernet0/4 - GigabitEthernet0/5 Task Section Vars Section Target Section Target Section Vars Section (※省略可) Task Section 対象機器やグループを指定するセクション。 また、接続オプションなどを定義する。 独自の変数を指定するセクション。 マッピング形式で変数定義を行い、Keyを指定する ことで、変数値を参照できる。 Playで実施する個別のタスクを指定するセクション。 上から定義した順で実行されていく。
  • 39. JANOG JApan Network Operators' Group 変数について 変数の定義と参照 39 変数の定義 Jinja2とは 変数の参照には、Jinja2テンプレートエンジンを利用して呼び出す。 Python用のテキストベースのテンプレートエンジンで あり、HTMLやXMLなどの生成に利用される。 基本文法は以下の2通り。 {{…}} で囲むことにより、変数の参照が可能 {%…%}で囲むことにより、制御構文 その他、変数参照時のFilterなども用意されている。 ・{{ var|first }} リストの始めを取得 ・{{ var|min }} リストの最小値を取得 ・{{ var|max }} リストの最大値を取得 ・{{ var|random }} ランダム値を取得 ・{{ var|hash(‘sha1’) }} sha1値を取得 ・{{ var|basename }} フォルダパス取得 などなど https://docs.ansible.com/ansible/2.5/use r_guide/playbooks_filters.html - name: Assign new VLAN hosts: cisco vars: NEW_VLAN_ID: 120 変数の参照 - name: Create VLAN ios_vlan: vlan_id: “{{ NEW_VLAN_ID }}” name: janog-vlan state: present Playの中や、Taskの中で変数を定義できる。 ← 120
  • 40. JANOG JApan Network Operators' Group 主な変数定義 いろいろなところで変数が取扱できる 40 ファクト変数 機器情報を取得した変数 レジスター変数 タスクを実行した戻り値を取得した 変数 タスク変数 タスクの定義の中に設定した変数 - name: Gather IOS Facts ios_facts: gather_subset: - config - name: Gather IOS Facts ios_facts: gather_subset: - config register: ios_result - name: Debug Register Var debug: var: ios_result - name: Create VLAN ios_vlan: vlan_id: “{{ VLAN_ID }}” name: janog-vlan state: present vars: VLAN_ID: 120
  • 41. JANOG JApan Network Operators' Group Ansible Playbook Command Execute Playbook 41 $ ls ./inventory/hosts [Usage] ansible-playbook -i <Inventory Files> <Playbook File> $ ansible-playbook -i inventory site.yml TASK [Command Sample for IOS] ************************************************************************************ ok: [csr01] TASK [Gathering Facts] ************************************************************************************ ok: [csr01] PLAY RECAP ************************************************************************************ csr01 : ok=3 changed=0 unreachable=0 failed=0
  • 43. JANOG JApan Network Operators' Group まとめ Automation with Ansible 43 ネットワークも自動化の時代になってきているが、自動化による弊害も多いので 自動化の範囲とメリットを検討すべき 簡単に始められ、大きな効果が得られるAnsibleは、ネットワーク自動化にも大きな影 響がある。 ネットワークモジュールが拡大しており、よりベンダーニュートラル、かつ標準化しやすい製 品になっている。 YAMLさえ理解できれば、Playbookの理解もでき、すぐに書けるようになる。
  • 45. JANOG JApan Network Operators' Group 接続方式とできること – 接続方式 – SSH、NETCONF、HTTP/HTTPS(API)などによってネットワーク機器に接続する – 利用するモジュールによっては追加ライブラリのインストールが必要(例:NETCONFの場合はncclient) – エージェントレスアーキテクチャならでは – できること(例) – 参照(show)コマンドの実行による情報取得 – 設定コマンドの実行による設定追加・変更・削除 45 【接続方式】 SSH NETCONF HTTP/HTTPS show xxxx set xxx
  • 46. JANOG JApan Network Operators' Group 対応プラットフォーム – Cisco IOS、IOS-XR、NX-OS、Juniper Junos、Arista EOSなど、40以上のプラットフォームに対応 – 他、サードパーティモジュールとして提供しているベンダーもある – モジュールにはコマンドをそのまま指定するタイプや、各オプションをパラメータとして指定するタイプがある 46 • A10 • ACI • Aireos • AOS • Aruba • ASA • Avi • Bigswitch • Citrix • CloudEngine • CloudVision • CNOS • Cumulus • DellOS10 • DellOS6 • DellOS9 • EdgeOS • ENOS • EOS • EXOS • F5 • Fortimanager • FortiOS • Illumos • IOS • IOS-XR • IronWare • Junos • Meraki • Netact • Netscaler • Netvisor • NSO • Nuage • NXOS • ONYX • Ordnance • OVS • PAN-OS • Radware • SLX-OS • SR OS • VyOS ネットワークモジュール一覧 https://docs.ansible.com/ansible/latest/modules/list_of_network_modules.html
  • 47. JANOG JApan Network Operators' Group Ansible を利用するメリット(Tera Termマクロ との比較) – Ansible の他の機能と連携しやすい – 例: – コマンド出力結果を copy モジュールに渡して、ファイルに保存 – テンプレート機能を利用して、コンフィグを生成して投入 – 監視サーバーに登録されているホスト情報を接続に利用 – ログインやモード変更の処理を簡略化できる – 認証情報を定義しておくだけで自動でログイン、ログアウト – 設定系モジュールであれば暗黙的にコンフィグレーションモードへ移行 – コマンド投入エラーを標準で検出できる – エラーの検出処理がAnsible モジュールに組み込まれている – 自前で「どのようなプロンプトが返ってきたら正常か」という指定は不要 47
  • 49. JANOG JApan Network Operators' Group ネットワークモジュールで利用するコネクションタイプ – Ansible 2.5 以降ネットワークモジュール用のコネクションタイプが用意された – network_cli: Cisco IOS、Arista EOS、VyOS など向け – netconf: Juniper Junos 向け – httpapi: Cisco NX-OS、 Arista EOS の HTTP(S) API アクセス向け (Ansible 2.6 以降) – Ansible 2.4まで – local: ネットワークモジュール用ではないが、性質上こちらを利用するモジュールもある 49 インベントリファイルで network_cli を指定する例 [ios:vars] ansible_connection=network_cli - hosts: ios connection: network_cli Playbookで network_cli を指定する例 https://docs.ansible.com/ansible/latest/network/user_guide/platform_index.html#settings-by-platform
  • 50. JANOG JApan Network Operators' Group ネットワークモジュール用の変数 – ansible_network_os 変数 – プラットフォームに応じて「ios」「junos」「eos」「vyos」等の値を設定する必要あり 50 https://docs.ansible.com/ansible/latest/network/user_guide/platform_index.html#settings-by-platform インベントリファイルで指定する例 [ios:vars] ansible_connection=network_cli ansible_network_os=ios
  • 51. JANOG JApan Network Operators' Group ネットワークモジュール利用時のファクトの収集方法 – 対象ネットワーク機器のファクト(システム情報)を収集するためには「*_facts」モジュールを利用する – 「gather_facts: yes」ではAnsible実行ホスト自身の情報となる – 不要であれば「gather_facts: no」を指定する – *_facts モジュールの例 – ios_facts – junos_facts – eos_facts – vyos_facts – 収集できるシステム情報例(ios_facts の場合) – コンフィグ – ホスト名 – インターフェース情報 – ファームウェア情報 – LLDPネイバー情報 51 - hosts: ios gather_facts: yes connection: network_cli tasks: - ios_facts: Ansible 実行ホスト 対象NW機器 ファクト収集 ファクト収集
  • 52. JANOG JApan Network Operators' Group 特権モードの指定 – IOS や EOS などで enable コマンドによる特権モードへの移行が必要な場合は変数で指定する – ansible_become 変数 – 特権モードへ移行が必要かどうか(yes/no: デフォルトno) – ansible_become_method 変数 – 特権モードへ移行するコマンド (network_cli では enable のみ指定可) – ansible_become_pass 変数 – 特権モード移行時に必要なパスワード – 対象ネットワーク機器へのログインユーザーに特権が付与されている場合は指定不要 52 インベントリファイルで指定する例 [ios:vars] ansible_connection=network_cli ansible_network_os=ios ansible_become=yes ansible_become_method=enable ansible_become_pass=enablepass999
  • 54. JANOG JApan Network Operators' Group サンプル1-1: 状態の表示 (流れ) 54 (1) show version実行 ⚫ show version コマンド実行結果をAnsibleホストの画面に表示クアップ Hostname: vsrx1 Model: firefly-perimeter JUNOS Software Release [12.1X47-D15.4] (2) コマンド実行結果取得(3) 画面に出力 Hostname: vsrx1 Model: firefly-perimeter JUNOS Software Release [12.1X47-D15.4]
  • 55. JANOG JApan Network Operators' Group サンプル1-1: 状態の表示 (インベントリとPlaybook) 55 [junos] 172.16.0.1 [junos:vars] ansible_connection=netconf ansible_network_os=junos ansible_user=testuser ansible_ssh_pass=testpassword99 - hosts: junos gather_facts: no tasks: - name: show command test junos_command: commands: - show version register: result - name: debug output debug: msg: "{{ result.stdout_lines[0] }}" ⚫ インベントリファイル (inventory) ⚫ Playbook (show01.yml) コネクションタイプやOS、 認証情報を指定 debugモジュールで コマンド実行結果を出力 junosコマンド実行モジュール junos_command(※1) で 実行したいコマンドを指定 実行結果を変数 result に格納 ※1 junos_command モジュール詳細 https://docs.ansible.com/ansible/latest/modules/junos_command_module.html このインベントリファイルは、以降のサンプルでも共通
  • 56. JANOG JApan Network Operators' Group サンプル1-1: 状態の表示 (実行結果) 56 [vagrant@centos7 janog]$ ansible-playbook -i inventory show01.yml PLAY [junos] ****************************************************************** TASK [show command test] ****************************************************** ok: [172.16.0.1] TASK [debug output] *********************************************************** ok: [172.16.0.1] => { "msg": [ "Hostname: vsrx1", "Model: firefly-perimeter", "JUNOS Software Release [12.1X47-D15.4]" ] } PLAY RECAP ******************************************************************** 172.16.0.1 : ok=2 changed=0 unreachable=0 failed=0 ⚫ 実行結果 show version 実行結果 が表示される ansible-playbook コマンドを実行
  • 57. JANOG JApan Network Operators' Group サンプル1-1: 状態の表示 (showコマンド実行結果の構造について補足) 57 "msg": { "changed": false, "failed": false, "stdout": [ "Hostname: vsrx1¥nModel: firefly-perimeter¥nJUNOS Software Release [12.1X47-D15.4]" ], "stdout_lines": [ [ "Hostname: vsrx1", "Model: firefly-perimeter", "JUNOS Software Release [12.1X47-D15.4]" ] ] } - name: debug output debug: msg: "{{ result }}" - name: debug output debug: msg: "{{ result.stdout_lines[0] }}" 全体を指定 実行結果を1行1リスト要素で格納した stdout_lines 内の0番目 (commandsオプションの最初に指定したコマンド)
  • 59. JANOG JApan Network Operators' Group サンプル1-2: コンフィグのバックアップ (流れ) 59 (1) show configuration 実行 ⚫ show configuration コマンド実行結果をファイルにバックアップ ## Last commit: 2018-06-28 05:45:49 UTC by root version 12.1X47-D15.4; system { host-name vsrx1; root-authentication { encrypted-password "$1$nq..... ssh-rsa "ssh-rsa AAAAB3Nz..... } login { user vagrant { uid 2000; class super-user; authentication { ssh-rsa "ssh-rsa ..... } } } services { ssh { root-login allow; } netconf { ssh; } web-management { http { interface ge-0/0/0.0; } } } syslog { user * { any emergency; (2) コマンド実行結果取得 (3) ファイルとしてバックアップ ## Last commit: 2018-06-28 05:45:49 UTC by root version 12.1X47-D15.4; system { host-name vsrx1; root-authentication { encrypted-password "$1$nq..... ssh-rsa "ssh-rsa AAAAB3Nz..... } login { user vagrant { uid 2000; class super-user; authentication { ssh-rsa "ssh-rsa ..... } } } services { ssh { root-login allow; } netconf { ssh; } web-management { http { interface ge-0/0/0.0; } } } syslog { user * { any emergency;
  • 60. JANOG JApan Network Operators' Group サンプル1-2: コンフィグのバックアップ (Playbook) 60 - hosts: junos gather_facts: no tasks: - name: show command test junos_command: commands: - show configuration register: result - name: save config to file copy: content: "{{ result.stdout[0] }}" dest: "show_config_{{ inventory_hostname }}.txt" ⚫ Playbook (show02.yml) junosコマンド実行モジュール junos_command で 実行したいコマンドを指定 copyモジュールでコマンド実行結果 をファイルに保存する ファイル名に名インベントリ名 (ここではIPアドレス)を含ませる
  • 61. JANOG JApan Network Operators' Group サンプル1-2: コンフィグのバックアップ (実行結果) 61 [vagrant@centos7 janog]$ ansible-playbook -i inventory show02.yml PLAY [junos] **************************************************************** TASK [show command test] **************************************************** ok: [172.16.0.1] TASK [save config to file] ************************************************** changed: [172.16.0.1] PLAY RECAP ****************************************************************** 172.16.0.1 : ok=2 changed=1 unreachable=0 failed=0 ⚫ 実行結果 コンフィグがファイルとして 新たに保存されたログ ansible-playbook コマンドを実行
  • 62. JANOG JApan Network Operators' Group サンプル1-2: コンフィグのバックアップ (ファイル内容の確認) 62 [vagrant@centos7 janog]$ cat show_config_172.16.0.1.txt ## Last changed: 2018-06-28 05:45:50 UTC version 12.1X47-D15.4; system { host-name vsrx1; root-authentication { encrypted-password "$1$nq.N1UsY$Jx...(略)..."; ssh-rsa "ssh-rsa AAAAB3NzaC1yc2...(略)...."; } ...(略).... ge-0/0/1 { unit 0 { family inet { address 172.16.0.1/24; } } } ...(略).... } ⚫ 実行結果 インベントリ名(ここではIPアドレス) を含むファイル名で保存されている show configuration 実行結果
  • 64. JANOG JApan Network Operators' Group サンプル1-3: showコマンド結果のCSV出力 (流れ) 64 (1) show interfaces 実行 ⚫ show interfaces コマンド実行結果をパースして、CSVファイルに出力 Physical interface: ge-0/0/0, Enabled, Physical link is Up Interface index: 134, SNMP ifIndex: 507 Link-level type: Ethernet, MTU: 1514, Link-mode: Full-duplex, Speed: 1000mbps,… Flow control: Enabled, Auto-negotiation: Enabled, Remote fault: Online Device flags : Present Running Interface flags: SNMP-Traps Internal: 0x4000 Link flags : None CoS queues : 8 supported, 8 maximum usable queues Current address: 08:00:27:ae:f4:51, Hardware address: 08:00:27:ae:f4:51 Last flapped : 2018-06-28 05:45:29 UTC (04:54:28 ago) Input rate : 3432 bps (7 pps) Output rate : 4256 bps (4 pps) Active alarms : None Active defects : None Interface transmit statistics: Disabled Logical interface ge-0/0/0.0 (Index 69) (SNMP ifIndex 509) Flags: SNMP-Traps 0x4000 Encapsulation: ENET2 Input packets : 522 Output packets: 580 Security: Zone: Null Protocol inet, MTU: 1500 … (2) コマンド実行結果取得 パース用 [TextFSMテンプレート] ^¥s+ [CSVテンプレート] {{ }} (3) パース (5) CSVファイル出力 (4) パース済みデータ埋め込み
  • 65. JANOG JApan Network Operators' Group サンプル1-3: showコマンド結果のCSV出力 (Playbook) 65 - hosts: junos gather_facts: no tasks: - name: show command test junos_command: commands: - show interfaces register: result - name: output csv file template: src: "./template_interface_junos.txt" dest: "./result_interface.csv" vars: parsed_result: "{{ result.stdout[0] | parse_cli_textfsm('juniper_junos_show_interfaces.template') }}" ⚫ Playbook (show03.yml) junosコマンド実行モジュール junos_command で 実行したいコマンドを指定 templateモジュールで、CSVテンプレートファイル名と、 出力先ファイル名を指定 コマンド実行結果をTextFSMテンプレートに渡して、 パースされた結果を変数 parsed_result に格納 ※ parse_cli_textfsm フィルターの利用にはあらかじめTextFSMのインストール(pip install TextFSM)が必要
  • 66. JANOG JApan Network Operators' Group "INTERFACE","ADMIN_STATE","LINK_STATUS","HARDWARE_TYPE" {% for r in parsed_result %} "{{ r['INTERFACE'] }}","{{ r['ADMIN_STATE'] }}","{{ r['LINK_STATUS'] }}","{{ r['HARDWARE_TYPE'] }}" {% endfor %} サンプル1-3: showコマンド結果のCSV出力 (CSVテンプレート) 66 ⚫ CSVテンプレート (template_interface_junos.txt) show interfaces 実行結果 がパースされた内容が入る CSVのヘッダー for 文による繰り返し r[‘XXXX’] に各項目の値が埋め込まれる ※ テンプレートエンジン jinja2 を利用
  • 67. JANOG JApan Network Operators' Group Value Required INTERFACE (¥S+) Value LINK_STATUS (¥w+) Value ADMIN_STATE (¥S+) Value HARDWARE_TYPE (¥S+) Value MTU (¥d+|Unlimited) Start ^¥s+Logical¥s+interface¥s+${INTERFACE} ^Physical¥s+interface:¥s+${INTERFACE},¥s+${ADMIN_STATE},¥s+Physical¥s+link¥s+is¥s+${LINK_STATUS} ^.*ype:¥s+${HARDWARE_TYPE},.*MTU:¥s+${MTU}.* -> Record ^.*MTU:¥s+${MTU}.* -> Record ^.*flags -> Record EOF サンプル1-3: showコマンド結果のCSV出力 (TextFSMテンプレート) 67 ⚫ TextFSMテンプレート ( juniper_junos_show_interfaces.template ) TextFSMというパーサー用のテンプレートファイル ここでは Junos の「show interfaces」用のものを利用 https://raw.githubusercontent.com/networktocode/ntc-templates/master/templates/juniper_junos_show_interfaces.template
  • 68. JANOG JApan Network Operators' Group サンプル1-3: showコマンド結果のCSV出力 (実行結果) 68 [vagrant@centos7 janog]$ ansible-playbook -i inventory show03.yml PLAY [junos] **************************************************************** TASK [show command test] **************************************************** ok: [172.16.0.1] TASK [output csv file] ****************************************************** changed: [172.16.0.1] PLAY RECAP ***************************************************************************** 172.16.0.1 : ok=2 changed=1 unreachable=0 failed=0 ⚫ 実行結果 CSVファイルが生成された ansible-playbook コマンドを実行
  • 69. JANOG JApan Network Operators' Group "INTERFACE","ADMIN_STATE","LINK_STATUS","HARDWARE_TYPE","MTU" "ge-0/0/0","Enabled","Up","Ethernet","1514" "ge-0/0/0.0","","","","1500" "gr-0/0/0","Enabled","Up","GRE","Unlimited" "ip-0/0/0","Enabled","Up","IP-over-IP","Unlimited" "lsq-0/0/0","Enabled","Up","LinkService","1504" "lt-0/0/0","Enabled","Up","Logical-tunnel","Unlimited" "mt-0/0/0","Enabled","Up","GRE","Unlimited" "sp-0/0/0","Enabled","Up","Adaptive-Services","9192" "sp-0/0/0.0","","","","9192" "sp-0/0/0.16383","","","","9192" "ge-0/0/1","Enabled","Up","Ethernet","1514" "ge-0/0/1.0","","","","1500" "ge-0/0/2","Enabled","Up","Ethernet","1514" "ge-0/0/2.0","","","","1500" "dsc","Enabled","Up","Software-Pseudo","Unlimited" "gre","Enabled","Up","GRE","Unlimited" "ipip","Enabled","Up","IP-over-IP","Unlimited" "irb","Enabled","Up","Ethernet","1514" "lo0","Enabled","Up","Loopback","Unlimited" "lo0.16384","","","","Unlimited" "lo0.16385","","","","Unlimited" "lsi","Enabled","Up","LSI","1496" "mtun","Enabled","Up","GRE","Unlimited" "pimd","Enabled","Up","PIM-Decapsulator","Unlimited" "pime","Enabled","Up","PIM-Encapsulator","Unlimited" "pp0","Enabled","Up","PPPoE","1532" "ppd0","Enabled","Up","PIM-Decapsulator","Unlimited" "ppe0","Enabled","Up","PIM-Encapsulator","Unlimited" "st0","Enabled","Up","Secure-Tunnel","9192" "tap","Enabled","Up","Interface-Specific","Unlimited" "vlan","Enabled","Down","VLAN","1518" サンプル1-3: showコマンド結果のCSV出力 (CSVファイル内容の確認) 69 ⚫ 出力CSVファイル (result_interface.csv) CSVテンプレートの書式に パースされた情報が埋め込まれて CSVファイルが生成された
  • 71. JANOG JApan Network Operators' Group サンプル2-1: 簡単な設定変更 (流れ) 71 (1) set system ntp server コマンド実行 ⚫ 参照NTPサーバー設定コマンドを投入
  • 72. JANOG JApan Network Operators' Group サンプル2-1: 簡単な設定変更 (Playbook) 72 - hosts: junos gather_facts: no tasks: - name: config test junos_config: lines: - set system ntp server 10.0.0.123 ⚫ Playbook (set01.yml) Junos設定コマンド実行モジュール junos_config(※1) で設定したいコマンドを指定 ※1 junos_config モジュール詳細 https://docs.ansible.com/ansible/latest/modules/junos_config_module.html
  • 73. JANOG JApan Network Operators' Group サンプル2-1: 簡単な設定変更 (実行結果) 73 [vagrant@centos7 janog]$ ansible-playbook -i inventory set01.yml PLAY [junos] *************************************************************** TASK [config test] ********************************************************* changed: [172.16.0.1] PLAY RECAP **************************************************************************** 172.16.0.1 : ok=1 changed=1 unreachable=0 failed=0 ⚫ 実行結果 設定変更された ansible-playbook コマンドを実行
  • 74. JANOG JApan Network Operators' Group サンプル2-1: 簡単な設定変更 (作業後コンフィグの確認) 74 root@vsrx1> show configuration system ntp | display set set system ntp server 10.0.0.123 root@vsrx1> ⚫ 実行結果(ネットワーク機器側) 設定が反映された
  • 76. JANOG JApan Network Operators' Group サンプル2-2: テンプレートを利用した設定変更 (流れ) 76 (3) 生成コンフィグ投入 ⚫ 参照NTPサーバー設定コマンドを投入 [コンフィグテンプレート] {{ }} (1) パラメータ埋め込み set system ntp server 10.0.1.123 set system ntp server 10.0.2.123 set system ntp server 10.0.3.123 set system ntp server 10.0.4.123 set system ntp server 10.0.5.123 (2) コンフィグ生成
  • 77. JANOG JApan Network Operators' Group サンプル2-2: テンプレートを利用した設定変更 (Playbook) 77 - hosts: junos gather_facts: no tasks: - name: config test junos_config: src: template_ntp_junos.txt vars: ntp_servers: - 10.0.1.123 - 10.0.2.123 - 10.0.3.123 - 10.0.4.123 - 10.0.5.123 ⚫ Playbook (set02.yml) NTPサーバーのIPアドレスのリストを 変数「ntp_servers」として定義 Junos設定コマンド実行モジュール junos_config で 流し込みたいコンフィグファイルを指定
  • 78. JANOG JApan Network Operators' Group {% for n in ntp_servers %} set system ntp server {{ n }} {% endfor %} サンプル2-2: テンプレートを利用した設定変更 (コンフィグテンプレート) 78 ⚫ コンフィグテンプレート (template_ntp_j.txt ) Playbook内で定義された変数 ntp_servers の内容が入る for 文による繰り返し set system ntp server 10.0.1.123 set system ntp server 10.0.2.123 set system ntp server 10.0.3.123 set system ntp server 10.0.4.123 set system ntp server 10.0.5.123 ⚫ 生成されるコンフィグ ※ テンプレートエンジン jinja2 を利用
  • 79. JANOG JApan Network Operators' Group サンプル2-2: テンプレートを利用した設定変更 (実行結果) 79 [vagrant@centos7 janog]$ ansible-playbook -i inventory set02.yml PLAY [junos] *************************************************************** TASK [config test] ********************************************************* changed: [172.16.0.1] PLAY RECAP **************************************************************************** 172.16.0.1 : ok=1 changed=1 unreachable=0 failed=0 ⚫ 実行結果 設定変更された ansible-playbook コマンドを実行
  • 80. JANOG JApan Network Operators' Group サンプル2-2: テンプレートを利用した設定変更(作業後コンフィグの確認) 80 root@vsrx1> show configuration system ntp | display set set system ntp server 10.0.1.123 set system ntp server 10.0.2.123 set system ntp server 10.0.3.123 set system ntp server 10.0.4.123 set system ntp server 10.0.5.123 root@vsrx1> ⚫ 実行結果(ネットワーク機器側) 設定が反映された
  • 82. JANOG JApan Network Operators' Group サンプル2-3: 処理継続確認付きの設定変更 (流れ) 82 (4) set system ntp server コマンド実行 ⚫ 処理継続してよいかの入力を待ち、OKであれば設定コマンドを投入 よろしいですか? (1) 入力待ち y (2) 入力 継続? (3) 判断 (4)’ 処理中止 [y] [y以外]
  • 83. JANOG JApan Network Operators' Group サンプル2-3: 処理継続確認付きの設定変更 (Playbook) 83 - hosts: junos gather_facts: no tasks: - name: confirm pause: prompt: "continue? [y/N]" register: input - name: abort fail: when: input.user_input != "y" - name: config test junos_config: lines: - set system ntp server 10.0.0.123 ⚫ Playbook (set03.yml) Junos設定コマンド実行モジュール junos_config で 設定したいコマンドを指定 入力された文字が「y」でなければ処理を中断 入力待ち状態で待機するpauseモジュールで 表示する文字列 入力された文字が変数 input に入る
  • 84. JANOG JApan Network Operators' Group サンプル2-3: 処理継続確認付きの設定変更 (実行結果1:処理継続) 84 [vagrant@centos7 janog]$ ansible-playbook -i inventory set03.yml PLAY [junos] *************************************************************** TASK [confirm] ************************************************************* [confirm] continue? [y/N]: y ok: [172.16.0.1] TASK [abort] *************************************************************** skipping: [172.16.0.1] TASK [config test] ********************************************************* changed: [172.16.0.1] PLAY RECAP ***************************************************************** 172.16.0.1 : ok=2 changed=1 unreachable=0 failed=0 ⚫ 実行結果(処理継続) 設定変更された ansible-playbook コマンドを実行 y を入力 y が入力されたため中止処理はスキップ
  • 85. JANOG JApan Network Operators' Group サンプル2-3: 処理継続確認付きの設定変更 (実行結果2:処理中止) 85 [vagrant@centos7 janog]$ ansible-playbook -i inventory set03.yml PLAY [junos] ***************************************************************************** TASK [confirm] *************************************************************************** [confirm] continue? [y/N]: N ok: [172.16.0.1] TASK [abort] ***************************************************************************** fatal: [172.16.0.1]: FAILED! => {"changed": false, "msg": "Failed as requested from task"} PLAY RECAP ******************************************************************************* 172.16.0.1 : ok=1 changed=0 unreachable=0 failed=1 ⚫ 実行結果(処理中止) ansible-playbook コマンドを実行 y 以外 が入力されたため中止処理 N を入力
  • 87. JANOG JApan Network Operators' Group ネットワーク対応のまとめ – Ansible は 40以上のネットワークプラットフォームに対応し、参照や設定などができる – ネットワークモジュール固有のポイントがいくつかある – コネクションタイプ、ansible_network_os 変数、ファクト収集方法、特権モードなど – 他の Ansible の機能と連携して様々な処理ができる – サーバー、クラウド、監視ツール、通知、ファイル管理など、他にも様々な用途のモジュールがある 87
  • 88. JANOG JApan Network Operators' Group 参考資料 – 公式ドキュメント – トップ – https://docs.ansible.com/ – Ansible for Network Automation – https://docs.ansible.com/ansible/latest/network/index.html – ネットワークモジュール一覧 – https://docs.ansible.com/ansible/latest/modules/list_of_network_modules.html – 書籍 – Ansible実践ガイド 第2版 – https://book.impress.co.jp/books/1117101100 – Ansible徹底入門 – https://www.shoeisha.co.jp/book/detail/9784798149943 – その他 – ネットワークエンジニア的Ansibleの始め方 – https://www.slideshare.net/akira6592/networkengineermeetsansible-85889620 – もっと気軽に始めるAnsible (JANOG41.5) – https://www.slideshare.net/akira6592/ansibleadhocnetworkautomation 88
  • 89. JANOG JApan Network Operators' Group イベント情報 – Ansibleユーザー会 – 【7/12】 Ansible Night in Osaka 2018.07 @大阪 – https://ansible-users.connpass.com/event/90117/ – 【7/17】 Ansibleもくもく会 (第4回) @東京 – https://ansible-users.connpass.com/event/92701/ – 【8/3】 Ansible Night in Fukuoka 2018.08 @福岡 – https://ansible-users.connpass.com/event/93620/ – JANOG42 Meeting in Mie – 【7/11 16:30 ~】 ネットワーク運用自動化BoF 対話編 @多目的ホール 89 このあと、ここで
  • 90. JANOG JApan Network Operators' Group 90 Thank you