SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
Copyright © Arista 2016. All rights reserved.Copyright © Arista 2016. All rights reserved.1
ネットワーク運用者の為のAnsible
Shishio Tsuchiya
shtsuchi@arista.com
Copyright © Arista 2016. All rights reserved.
Agenda
• Ansible基礎
• デモ
• Ansibleハッカソンイベントレポート
2
Copyright © Arista 2016. All rights reserved.
自前
インテグレーションの為の
カスタム開発
ソフトウェア開発のリソー
スと考え方
DevOps
既存のツールを活用
(Puppet, Chef,Ansibleな
ど)
スクリプトベースの統合
とカスタマイズ
ターンキー
現状は選択肢は少ない
レガシー・モデル
顧客はクラウド・オートメーショ
ンの為にもターンキー・ソリュー
ションが必要
クラウド・ネットワーキングへのアプローチ
大規模クラウド
事業者
先進エンタープライズ
/ サービスプロバイダー
従来型エンタープライズ
/ サービスプロバイダー
10,000エンジニア1人あたりネットワーク機器
…
…
…
…
…
1,000エンジニア1人あたりネットワーク機器
100エンジニア1人あたりネットワーク機器
Copyright © Arista 2016. All rights reserved.
Ansibleとは何か?
• Red hatのオープンソースの構成管理ツール
• 読みやすい
- タスク内容を記述するPlaybookはテキスト形式(YAML)
• エージェンスレス
- Chef/Puppetとは違いクライアントにエージェントが要らない
• 他のオープンソースとの連携が可能
4
Copyright © Arista 2016. All rights reserved.
Playbook
• YAML形式で書かれた設定構成ファイル
• hosts:ターゲット
• tasks:実施する項目
• handlers:変更があった時の動作
5
---
- hosts: webservers
vars:
http_port: 80
max_clients: 200
remote_user: root
tasks:
- name: ensure apache is at the latest version
yum: name=httpd state=latest
- name: write the apache config file
template: src=/srv/httpd.j2 dest=/etc/httpd.conf
notify:
- restart apache
- name: ensure apache is running (and enable it at boot)
service: name=httpd state=started enabled=yes
handlers:
- name: restart apache
service: name=httpd state=restarted
Copyright © Arista 2016. All rights reserved.
プレイブック
6
右サイド!すぐ上がって
10番! 裏側に走って
シュート打ったら、すぐ戻る!!
hosts:右サイド、10番
group:右サイド(7番と5番)
tasks:すぐ上がって、裏側走って
handler:すぐ戻る
Copyright © Arista 2016. All rights reserved.
YAML(YAML Ain't a Markup Language)
• 読みやすい(インデントで階層構造)
• わかりやすい
• 一般的な拡張子は.yml
7
---
- hosts:	pod1_leafs
connection:	local
gather_facts:	no
tasks:
- name:	Configure	Arista	Vlans
eos_template:
src:	vlans.j2
provider:	"{{	eos_connection }}"
--- で始まる
- で始まる
Key:	Value
ネストの時は半角スペース
“{{変数}}”
Copyright © Arista 2016. All rights reserved.
Ansibleバージョン/その他
• Ansible, Inc をRed hadが買収 2015年10月
• 2.0.0
- Red hatとして初めてのリリース
- それまでのコミュニティハブ(Ansible Galaxsy)を保つ
• 2.1.0
- ネットワーク機器のサポート拡大
- Cisco/HPE/Juniper/Arista/Cumulus
• 2.2.0
- ネットワーク機器サポート拡大(Nokia/Vyos/F5 etc)
- Docker/クラウドサービス
• 2.3.0
- Netconf追加
- Persistent Connection追加
• Ansible Tower
- ユーザインターフェース提供やスケジューリング管理などを行う有料ツール
- https://www.ansible.com/tower
• Jinjya2
- 組み込みのテンプレートエンジン
8
Copyright © Arista 2016. All rights reserved.
Ansible Network Module
• 標準モジュールとして提供
http://docs.ansible.com/ansible/list_of_network_modules.html
• 各ベンダー機器毎にモジュールを提供
- eos_command – Arista EOSの為の管理コマンド実行
- eos_config – Arista EOSの設定コマンド
- eos_eapi – Arista EOS eAPI管理と設定コマンド
- eos_facts –Arista EOSを実行してるリモートデバイスの情報を収集
- eos_template (D) – Arista EOSデバイスの管理
*重複(D) eos_configを使用する事
9
Copyright © Arista 2016. All rights reserved.
Ansibleデモ
10
>
vEOS1 vEOS2
Management
10.10.1.0/24.100
.1 .2
Copyright © Arista 2016. All rights reserved.
初期状態
11
>
vEOS1 vEOS2
Management
10.10.1.0/24.100
.1 .2
vEOS1#show running-config
! Command: show running-config
! device: vEOS1 (vEOS, EOS-4.16.9M)
!
! boot system flash:/vEOS-lab.swi
!
transceiver qsfp default-mode 4x10G
!
hostname vEOS1
!
spanning-tree mode mstp
!
no aaa root
!
username admin role network-admin secret 5 $1$R/oUJCiz$/Ezl61/NxHyLhyHSfayJj/
!
interface Ethernet1
!
interface Ethernet2
!
interface Management1
ip address 10.10.1.1/24
!
no ip routing
!
management api http-commands
protocol http
no shutdown
!
!
end
• managementの設定のみ
- http/https/sshなどが設定可能
Copyright © Arista 2016. All rights reserved.
初期状態
12
>
vEOS1 vEOS2
Management
10.10.1.0/24.100
.1 .2
vEOS1#show management api http-commands
Enabled: Yes
HTTPS server: running, set to use port 443
HTTP server: running, set to use port 80
Local HTTP server: shutdown, no authentication, set to use port 8080
Unix Socket server: shutdown, no authentication
VRF: default
Hits: 0
Last hit: never
Bytes in: 0
Bytes out: 0
Requests: 0
Commands: 0
Duration: 0.000 seconds
SSL Profile: none
QoS DSCP: 0
URLs
-----------------------------------
Management1 : https://10.10.1.1:443
Management1 : http://10.10.1.1:80
• vlan設定の追加
• インターフェース設定
• OSPF設定
Copyright © Arista 2016. All rights reserved.
Playbook for inventory
13
>
vEOS1 vEOS2
Management
10.10.1.0/24.100
.1 .2
arista@ubuntu:~/eos_central_demo$ more showver.yaml
---
- hosts: pod1_leafs
connection: local
gather_facts: yes
vars:
eos_connection:
host: "{{ inventory_hostname }}"
username: admin
password: admin
tranport: eapi
use_ssl: false
authorize: true
tasks:
- name: Gather info from Show Version
eos_command:
commands:
- show version
provider: '{{ eos_connection }}'
register: result
- debug: var=result
Copyright © Arista 2016. All rights reserved.
Playbook execute
14
>
vEOS1 vEOS2
Management
10.10.1.0/24.100
.1 .2
arista@ubuntu:~/eos_central_demo$ ansible-playbook -i hosts showver.yaml
PLAY [pod1_leafs] **************************************************************
TASK [setup] *******************************************************************
ok: [vEOS2]
ok: [vEOS1]
TASK [Gather info from Show Version] *******************************************
ok: [vEOS2]
ok: [vEOS1]
TASK [debug] *******************************************************************
ok: [vEOS2] => {
"result": {
"changed": false,
"stdout": [
"Arista vEOS¥nHardware version: ¥nSerial number: ¥nSystem MAC address: 0800.2745.50af¥n¥nSoftware image version:
4.16.9M¥nArchitecture: i386¥nInternal build version: 4.16.9M-3799680.4169M¥nInternal build ID: 5dc3cc62-22ea-4df1-b501-
5761ced5f183¥n¥nUptime: 58 minutes¥nTotal memory: 1897540 kB¥nFree memory: 39020 kB¥n"
],
"stdout_lines": [
[
"Arista vEOS",
"Hardware version: ",
"Serial number: ",
"System MAC address: 0800.2745.50af",
"",
"Software image version: 4.16.9M",
"Architecture: i386",
"Internal build version: 4.16.9M-3799680.4169M",
"Internal build ID: 5dc3cc62-22ea-4df1-b501-5761ced5f183",
"",
"Uptime: 58 minutes",
"Total memory: 1897540 kB",
"Free memory: 39020 kB",
"”
Copyright © Arista 2016. All rights reserved.
テンプレートの作り方
15
vEOS1
!
vlan 39
name JANOG39
!
interface Ethernet1
description vEOS1-vEOS2
no switchport
ip address 10.1.1.1/30
!
interface Loopback0
ip address 10.255.255.1/32
!
router ospf 1
network 10.0.0.0/8 area 0.0.0.0
vEOS2
!
vlan 39
name JANOG39
!
interface Ethernet1
description vEOS1-vEOS2
no switchport
ip address 10.1.1.2/30
!
interface Loopback0
ip address 10.255.255.2/32
!
router ospf 1
network 10.0.0.0/8 area 0.0.0.0
vlanテンプレート
インターフェース
テンプレート
Copyright © Arista 2016. All rights reserved.
vlan設定の追加
16
>
vEOS1 vEOS2
.100
.1 .2
!
vlan 39
name JANOG39
!
!
vlan 39
name JANOG39
!
configure_eos.yaml
tasks:
- name: Configure Arista Vlans
eos_template:
src: vlans.j2
provider: "{{ eos_connection }}"
templates/vlans.j2
{% for vlan in vlans %}
vlan {{ vlan.vlanid }}
name {{ vlan.name }}
{% endfor %}
group_vars/pod1_leafs
vlans:
- vlanid: 39
name: JANOG39
やりたい
コンフィグ
共通項目
jinjya2テンプレート
呼び出し
共通項目の読み出し
Copyright © Arista 2016. All rights reserved.
インターフェース設定の追加
17
>
vEOS1 vEOS2
.100
.1 .2
interface Ethernet1
description vEOS1-vEOS2
no switchport
ip address 10.1.1.1/30
interface Ethernet1
description vEOS1-vEOS2
no switchport
ip address 10.1.1.2/30
configure_eos.yaml
- name: ConfigureArista Eth Interfaces
eos_template:
src: intf.j2
provider: "{{ eos_connection }}"
templates/intf.j2
{% for intf in interfaces %}
interface {{ intf.name }}
description {{ intf.description }}
no switchport
ip address {{ intf.address }}
{% endfor %}
host_vars/vEOS1
interfaces:
- name: Ethernet1
description: 'vEOS1-vEOS2'
address: 10.1.1.1/30
ノード毎に差分
jinjya2テンプレート
呼び出し
host_vars/vEOS2
interfaces:
- name: Ethernet1
description: 'vEOS1-vEOS2'
address: 10.1.1.2/30
Copyright © Arista 2016. All rights reserved.
---
- hosts: pod1_leafs
connection: local
gather_facts: no
tasks:
- name: Configure Arista Vlans
eos_template:
src: vlans.j2
provider: "{{ eos_connection }}"
- name: ConfigureArista Eth Interfaces
eos_template:
src: intf.j2
provider: "{{ eos_connection }}"
Playbook
18
誰がプレイをするのか?
./hosts
[pod1_leafs]
vEOS1
vEOS2
groupには誰が所属する
のか?
groupの変数
group_vars/pod1_leafs
vlans:
- vlanid: 39
name: JANOG39
host毎の変数
host_vars/vEOS1
interfaces:
- name: Ethernet1
description: 'vEOS1-vEOS2'
address: 10.1.1.1/30
host_vars/vEOS2
interfaces:
- name: Ethernet1
description: 'vEOS1-vEOS2'
address: 10.1.1.2/30
taskを実行
Copyright © Arista 2016. All rights reserved.
Playbook実行
19
>
vEOS1 vEOS2
Management
10.10.1.0/24.100
.1 .2
arista@ubuntu:~/eos_central_demo$ ansible-playbook -i hosts configure_eos.yaml
PLAY [pod1_leafs] **************************************************************
TASK [Configure Arista Vlans] **************************************************
ok: [vEOS2]
ok: [vEOS1]
TASK [ConfigureArista Eth Interfaces] ******************************************
ok: [vEOS1]
ok: [vEOS2]
TASK [Configure Loopback] ******************************************************
changed: [vEOS2]
changed: [vEOS1]
TASK [Configure Routing] *******************************************************
changed: [vEOS2]
changed: [vEOS1]
PLAY RECAP *********************************************************************
vEOS1 : ok=4 changed=2 unreachable=0 failed=0
vEOS2 : ok=4 changed=2 unreachable=0 failed=0
Copyright © Arista 2016. All rights reserved.
実行後アウトプット
20
>
vEOS1 vEOS2
Management
10.10.1.0/24.100
.1 .2
vEOS1#show management api http-commands
Enabled: Yes
HTTPS server: running, set to use port 443
HTTP server: running, set to use port 80
Local HTTP server: shutdown, no authentication, set to use port 8080
Unix Socket server: shutdown, no authentication
VRF: default
Hits: 34
Last hit: 450 seconds ago
Bytes in: 5700
Bytes out: 10628
Requests: 32
Commands: 103
Duration: 14.547 seconds
SSL Profile: none
QoS DSCP: 0
User Requests Bytes in Bytes out Last hit
----------- -------------- -------------- --------------- ---------------
admin 32 5700 10628 450 seconds ago
URLs
--------------------------------------
Ethernet1 : https://10.1.1.1:443
Ethernet1 : http://10.1.1.1:80
Loopback0 : https://10.255.255.1:443
Loopback0 : http://10.255.255.1:80
Management1 : https://10.10.1.1:443
Management1 : http://10.10.1.1:80
Copyright © Arista 2016. All rights reserved.
実行後アウトプット
21
>
vEOS1 vEOS2
Management
10.10.1.0/24
vEOS1#show ip route
VRF name: default
Codes: C - connected, S - static, K - kernel,
O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1,
E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
N2 - OSPF NSSA external type2, B I - iBGP, B E - eBGP,
R - RIP, I L1 - ISIS level 1, I L2 - ISIS level 2,
A B - BGP Aggregate, A O - OSPF Summary,
NG - Nexthop Group Static Route, V - VXLAN Control Service
Gateway of last resort is not set
C 10.1.1.0/30 is directly connected, Ethernet1
C 10.10.1.0/24 is directly connected, Management1
C 10.255.255.1/32 is directly connected, Loopback0
O 10.255.255.2/32 [110/20] via 10.1.1.2, Ethernet1
vEOS2#show ip route
VRF name: default
Codes: C - connected, S - static, K - kernel,
O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1,
E2 - OSPF external type 2, N1 - OSPF NSSA external type 1,
N2 - OSPF NSSA external type2, B I - iBGP, B E - eBGP,
R - RIP, I L1 - ISIS level 1, I L2 - ISIS level 2,
A B - BGP Aggregate, A O - OSPF Summary,
NG - Nexthop Group Static Route, V - VXLAN Control Service
Gateway of last resort is not set
C 10.1.1.0/30 is directly connected, Ethernet1
C 10.10.1.0/24 is directly connected, Management1
O 10.255.255.1/32 [110/20] via 10.1.1.1, Ethernet1
C 10.255.255.2/32 is directly connected, Loopback0
Copyright © Arista 2016. All rights reserved.
まとめ
• Ansibleは読みやすく、エージェントレス
• ネットワーク機器の対応も幅広くなってきた
• またサーバーやクラウド対応も増え、連携がしやす
い
22
Copyright © Arista 2016. All rights reserved.Copyright © Arista 2016. All rights reserved.
Ansibleハッカソン @沖縄オープンラボ
23
Copyright © Arista 2016. All rights reserved.
イベント情報
• 場所: 沖縄オープンラボ
- http://www.okinawaopenlabs.org/
• 期間:
- 2017年2月9日-11日
• コーディネーター:
- 齊藤 秀喜さん(IIJ)
- 元木 顕弘さん(NEC)
- 西野 大さん(BroadBand Tower)
24
Copyright © Arista 2016. All rights reserved.
参加企業
• Arista Networks
• APCommunications
• BroadBand Tower
• NTT Neomate
• IIGA
• NEC
25
• OKIT
• Temp Stuff Forum
• NTT PC Communications
• NTT Communications
• NEC Solution Innovators
Copyright © Arista 2016. All rights reserved.
Ansibleハッカソン風景
26
Copyright © Arista 2016. All rights reserved.
スケジュール
• 1日目
- Ansibleベーシック by斉藤さん・本木さん
- ラボセットアップ
- Ansibleテスト on Cumulus Linux
• 2日目
- Ansibleテスト on VNF
≫ Arista vEOS
≫ Cisco CSR1000v/IOS-XRv
≫ Juniper vSRX
- 実施内容や失敗談を共有、もしくはその場でトラ
ブルシューティング
≫ ほとんどのケースが環境トラブル
27
• Day3
- Ansible テスト on PNF
≫ Arista 7050TX
≫ Juniper EX4200
≫ IPinfusion OcNOS
- セキュリティについての議論
Copyright © Arista 2016. All rights reserved.
Ansible Network Module
http://docs.ansible.com/ansible/list_of_network_modules.html
28
Vender Arista Cisco Cisco Cumulus Juniper
OS EOS IOS/IOS-XE IOS-XR Cumulus Linux JUNOS
メモ eos_config
はauthorize: true
が必要
設定を保存するた
めにはsave:yes
ios_config
authorize: true が
必要
設定を保存するた
めにはsave:yes
commit がデフォルトで動く
formalコマンドもサポート
インターフェースを変え
た時にはrestartが必
要
localアクションではなく、
リモート
NETCONF
で動作する
ためjunos-
ezncが必要
commit が
デフォルトで
動く
Copyright © Arista 2016. All rights reserved.
connection=local
29
SSH
実行
eAPI(http/https)
CLI(SSH)
Copyright © Arista 2016. All rights reserved.
ベンダー毎の違い
30
shtsuchi:AnsibleHackson shtsuchi$ more arista-
config.yaml
---
- hosts: Arista
connection: local
gather_facts: yes
vars:
eos_connection:
host: "{{ inventory_hostname }}"
username: ool
password: Okinawa2017#
tranport: eapi
use_ssl: false
authorize: true
tasks:
- debug: var=inventory_hostname
- name: loopback config
eos_config:
lines:
- interface loopback 440
- ip address 10.255.255.44/32
- description configure from ansible
provider: '{{ eos_connection }}'
save: yes
register: result
- debug: var=result
shtsuchi:AnsibleHackson shtsuchi$ more junos-
config.yaml
---
- hosts: JUNOS
connection: local
gather_facts: yes
vars:
junos_connection:
host: "{{ inventory_hostname }}"
username: ool
password: Okinawa2017#
tasks:
- debug: var=inventory_hostname
- name: config loopback
junos_config:
lines:
- set interfaces lo0.0 family inet address
10.255.255.44/32
provider: '{{ junos_connection }}'
#register: result
- debug: var=result
shtsuchi:AnsibleHackson shtsuchi$ more xr-config.yaml
---
- hosts: IOS-XR
connection: local
gather_facts: yes
vars:
xr_connection:
host: "{{ inventory_hostname }}"
username: ool
password: Okinawa2017#
tasks:
- debug: var=inventory_hostname
- name: config loopback
iosxr_config:
commands:
- interface loopback440
- description create by ansible
- interface Loopback440 ipv4 address 10.255.255.4/32
provider: '{{ xr_connection }}'
#register: result
- debug: var=result
Copyright © Arista 2016. All rights reserved.
セキュリティtips
• playbooksはusername/passwordを表示してしまう
• ansible-vaultは暗号化出来る
31
shtsuchi:AnsibleHackson shtsuchi$ ansible-vault encrypt arista-config.yaml
Vault password:
Encryption successful
shtsuchi:AnsibleHackson shtsuchi$ more arista-config.yaml
$ANSIBLE_VAULT;1.1;AES256
63356232333930313137393130303563663535303264386630313561336133626565396339333936
3562333238663533356330346436333238333065663636650a393765616662636431613665396238
--
Copyright © Arista 2016. All rights reserved.
議論まとめ
• ほとんどの機器がlocal コネクション
• PNFとVNFの違いはない
• ansible-vaultはパスワード管理に有効
- http://docs.ansible.com/ansible/playbooks_vault.html
32
Copyright © Arista 2016. All rights reserved.
参考URL
• Why Ansible?
https://www.ansible.com/it-automation
• Network Automation with Ansible
https://www.ansible.com/network-automation
• Arista + Ansible – Getting Started
https://eos.arista.com/arista-ansible-getting-started/
33
Copyright © Arista 2016. All rights reserved.Copyright © Arista 2016. All rights reserved.
www.arista.com
Thank You

Weitere ähnliche Inhalte

Was ist angesagt?

show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyakira6592
 
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Tomoya Hibi
 
Mk network programmability-03
Mk network programmability-03Mk network programmability-03
Mk network programmability-03Miya Kohno
 
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
スマホのセンサーでネットワークを操る  ~Ansible TowerによるレガシーNW機器のAPI化~スマホのセンサーでネットワークを操る  ~Ansible TowerによるレガシーNW機器のAPI化~
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~akira6592
 
plotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgplotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgKentaro Ebisawa
 
Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Kikunaga Taishi
 
VIRLとPyATSで実現するネットワークCI
VIRLとPyATSで実現するネットワークCIVIRLとPyATSで実現するネットワークCI
VIRLとPyATSで実現するネットワークCItetsusat
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線Motonori Shindo
 
Lagopus & NFV with Vhost (Tremaday#9)
Lagopus & NFV with Vhost (Tremaday#9)Lagopus & NFV with Vhost (Tremaday#9)
Lagopus & NFV with Vhost (Tremaday#9)Tomoya Hibi
 
st2-docker ことはじめ
st2-docker ことはじめst2-docker ことはじめ
st2-docker ことはじめShu Sugimoto
 
今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOF今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOFVirtualTech Japan Inc.
 
Ansible2とOpenStackの関係
Ansible2とOpenStackの関係Ansible2とOpenStackの関係
Ansible2とOpenStackの関係Hideki Saito
 
OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!Takashi Sogabe
 
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)さくらインターネット株式会社
 
さくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみたさくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみたSAKURA Internet Inc.
 
Container Networking Deep Dive
Container Networking Deep DiveContainer Networking Deep Dive
Container Networking Deep DiveHirofumi Ichihara
 
統合監視ソフトウェア Zabbix新バージョン2.0の紹介
統合監視ソフトウェア Zabbix新バージョン2.0の紹介統合監視ソフトウェア Zabbix新バージョン2.0の紹介
統合監視ソフトウェア Zabbix新バージョン2.0の紹介takanori suzuki
 

Was ist angesagt? (20)

show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudy
 
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
 
Mk network programmability-03
Mk network programmability-03Mk network programmability-03
Mk network programmability-03
 
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
スマホのセンサーでネットワークを操る  ~Ansible TowerによるレガシーNW機器のAPI化~スマホのセンサーでネットワークを操る  ~Ansible TowerによるレガシーNW機器のAPI化~
スマホのセンサーでネットワークを操る ~Ansible TowerによるレガシーNW機器のAPI化~
 
plotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfgplotnetcfg入門 | Introduction to plotnetcfg
plotnetcfg入門 | Introduction to plotnetcfg
 
Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】
 
VIRLとPyATSで実現するネットワークCI
VIRLとPyATSで実現するネットワークCIVIRLとPyATSで実現するネットワークCI
VIRLとPyATSで実現するネットワークCI
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 
Lagopus & NFV with Vhost (Tremaday#9)
Lagopus & NFV with Vhost (Tremaday#9)Lagopus & NFV with Vhost (Tremaday#9)
Lagopus & NFV with Vhost (Tremaday#9)
 
st2-docker ことはじめ
st2-docker ことはじめst2-docker ことはじめ
st2-docker ことはじめ
 
今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOF今さら聞けない人のためのDocker超入門 - KOF
今さら聞けない人のためのDocker超入門 - KOF
 
Openflow超解釈
Openflow超解釈Openflow超解釈
Openflow超解釈
 
Ansible2とOpenStackの関係
Ansible2とOpenStackの関係Ansible2とOpenStackの関係
Ansible2とOpenStackの関係
 
自動化ハンズオン
自動化ハンズオン自動化ハンズオン
自動化ハンズオン
 
OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!
 
VyOSでMPLS
VyOSでMPLSVyOSでMPLS
VyOSでMPLS
 
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
 
さくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみたさくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみた
 
Container Networking Deep Dive
Container Networking Deep DiveContainer Networking Deep Dive
Container Networking Deep Dive
 
統合監視ソフトウェア Zabbix新バージョン2.0の紹介
統合監視ソフトウェア Zabbix新バージョン2.0の紹介統合監視ソフトウェア Zabbix新バージョン2.0の紹介
統合監視ソフトウェア Zabbix新バージョン2.0の紹介
 

Andere mochten auch

API イントロダクション APIC-EM, Prime Infrastructure & CMX
API イントロダクション APIC-EM, Prime Infrastructure & CMXAPI イントロダクション APIC-EM, Prime Infrastructure & CMX
API イントロダクション APIC-EM, Prime Infrastructure & CMXnpsg
 
自動化と画面を考えてみました
自動化と画面を考えてみました自動化と画面を考えてみました
自動化と画面を考えてみましたskipping classes
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよnpsg
 
CDP Indicator
CDP IndicatorCDP Indicator
CDP Indicatornpsg
 
ネットワークプログラマビリティ勉強会 これまでのおさらい
ネットワークプログラマビリティ勉強会 これまでのおさらいネットワークプログラマビリティ勉強会 これまでのおさらい
ネットワークプログラマビリティ勉強会 これまでのおさらいnpsg
 
「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考えるEtsuji Nakai
 
物理ネットワーク受け入れテストの自動化を考える
物理ネットワーク受け入れテストの自動化を考える物理ネットワーク受け入れテストの自動化を考える
物理ネットワーク受け入れテストの自動化を考えるskipping classes
 
いんふらフレンズ
いんふらフレンズいんふらフレンズ
いんふらフレンズMiho Yamamoto
 
Apache Spark+Zeppelinでアドホックなネットワーク解析
Apache Spark+Zeppelinでアドホックなネットワーク解析Apache Spark+Zeppelinでアドホックなネットワーク解析
Apache Spark+Zeppelinでアドホックなネットワーク解析npsg
 
VPP事始め
VPP事始めVPP事始め
VPP事始めnpsg
 
ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会Tomoya Hibi
 
ラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaSラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaSnpsg
 
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Etsuji Nakai
 
ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視npsg
 
Ansible x napalm x nso 解説・比較パネルディスカッション nso
Ansible x napalm x nso 解説・比較パネルディスカッション nsoAnsible x napalm x nso 解説・比較パネルディスカッション nso
Ansible x napalm x nso 解説・比較パネルディスカッション nsoAkira Iwamoto
 
NetOpsCoding#5 introduction
NetOpsCoding#5 introductionNetOpsCoding#5 introduction
NetOpsCoding#5 introductionTaiji Tsuchiya
 
Telemetry事始め
Telemetry事始めTelemetry事始め
Telemetry事始めnpsg
 
ネットワーク運用とIoT
ネットワーク運用とIoTネットワーク運用とIoT
ネットワーク運用とIoTcloretsblack
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyYahoo!デベロッパーネットワーク
 

Andere mochten auch (20)

API イントロダクション APIC-EM, Prime Infrastructure & CMX
API イントロダクション APIC-EM, Prime Infrastructure & CMXAPI イントロダクション APIC-EM, Prime Infrastructure & CMX
API イントロダクション APIC-EM, Prime Infrastructure & CMX
 
自動化と画面を考えてみました
自動化と画面を考えてみました自動化と画面を考えてみました
自動化と画面を考えてみました
 
ラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよラズパイ2で動く Docker PaaSを作ってみたよ
ラズパイ2で動く Docker PaaSを作ってみたよ
 
CDP Indicator
CDP IndicatorCDP Indicator
CDP Indicator
 
ネットワークプログラマビリティ勉強会 これまでのおさらい
ネットワークプログラマビリティ勉強会 これまでのおさらいネットワークプログラマビリティ勉強会 これまでのおさらい
ネットワークプログラマビリティ勉強会 これまでのおさらい
 
「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える「ITエンジニアリングの本質」を考える
「ITエンジニアリングの本質」を考える
 
物理ネットワーク受け入れテストの自動化を考える
物理ネットワーク受け入れテストの自動化を考える物理ネットワーク受け入れテストの自動化を考える
物理ネットワーク受け入れテストの自動化を考える
 
いんふらフレンズ
いんふらフレンズいんふらフレンズ
いんふらフレンズ
 
Apache Spark+Zeppelinでアドホックなネットワーク解析
Apache Spark+Zeppelinでアドホックなネットワーク解析Apache Spark+Zeppelinでアドホックなネットワーク解析
Apache Spark+Zeppelinでアドホックなネットワーク解析
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
 
Contiv
ContivContiv
Contiv
 
ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会ネットワークプログラマビリティ勉強会
ネットワークプログラマビリティ勉強会
 
ラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaSラズパイ2で動く Docker PaaS
ラズパイ2で動く Docker PaaS
 
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
 
ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視ELK ではじめる自宅ネットワーク監視
ELK ではじめる自宅ネットワーク監視
 
Ansible x napalm x nso 解説・比較パネルディスカッション nso
Ansible x napalm x nso 解説・比較パネルディスカッション nsoAnsible x napalm x nso 解説・比較パネルディスカッション nso
Ansible x napalm x nso 解説・比較パネルディスカッション nso
 
NetOpsCoding#5 introduction
NetOpsCoding#5 introductionNetOpsCoding#5 introduction
NetOpsCoding#5 introduction
 
Telemetry事始め
Telemetry事始めTelemetry事始め
Telemetry事始め
 
ネットワーク運用とIoT
ネットワーク運用とIoTネットワーク運用とIoT
ネットワーク運用とIoT
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
 

Ähnlich wie Ansible npstudy-shtsuchi

FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始めtetsusat
 
Trema での Open vSwitch
Trema での Open vSwitchTrema での Open vSwitch
Trema での Open vSwitchkazuyas
 
「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例SAKURA Internet Inc.
 
巨大ポータルを支えるプライベート・クラウド構築事例から学べ!~攻める情シスのためのインフラ構築、その極意とは?~
巨大ポータルを支えるプライベート・クラウド構築事例から学べ!~攻める情シスのためのインフラ構築、その極意とは?~巨大ポータルを支えるプライベート・クラウド構築事例から学べ!~攻める情シスのためのインフラ構築、その極意とは?~
巨大ポータルを支えるプライベート・クラウド構築事例から学べ!~攻める情シスのためのインフラ構築、その極意とは?~Brocade
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
Vyatta: The Virtual Router for Cloud Computing Enviroment
Vyatta: The Virtual Router for Cloud Computing EnviromentVyatta: The Virtual Router for Cloud Computing Enviroment
Vyatta: The Virtual Router for Cloud Computing EnviromentNaoto MATSUMOTO
 
Brocade SDN Controller -Sample Code for Brocade vRouter-
Brocade SDN Controller -Sample Code for Brocade vRouter-Brocade SDN Controller -Sample Code for Brocade vRouter-
Brocade SDN Controller -Sample Code for Brocade vRouter-Brocade
 
20170329 container technight-第一回勉強会
20170329 container technight-第一回勉強会20170329 container technight-第一回勉強会
20170329 container technight-第一回勉強会Minehiko Nohara
 
20170329 container technight-第一回勉強会
20170329 container technight-第一回勉強会20170329 container technight-第一回勉強会
20170329 container technight-第一回勉強会Minehiko Nohara
 
2010 04クラウド技術講座
2010 04クラウド技術講座2010 04クラウド技術講座
2010 04クラウド技術講座sisawa
 
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境yut148atgmaildotcom
 
Bird in show_net
Bird in show_netBird in show_net
Bird in show_netTomoya Hibi
 
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)Tomoya Hibi
 
OpenStack with OpenFlow
OpenStack with OpenFlowOpenStack with OpenFlow
OpenStack with OpenFlowToshiki Tsuboi
 
VlanManagerを使ってみた
VlanManagerを使ってみたVlanManagerを使ってみた
VlanManagerを使ってみたHiroki Ishikawa
 
JOSUG 9th Study
JOSUG 9th StudyJOSUG 9th Study
JOSUG 9th Studyirix_jp
 
Antenna 20180306 AzureのIaaSで構築する、シンプルなWebサーバ環境
Antenna 20180306 AzureのIaaSで構築する、シンプルなWebサーバ環境Antenna 20180306 AzureのIaaSで構築する、シンプルなWebサーバ環境
Antenna 20180306 AzureのIaaSで構築する、シンプルなWebサーバ環境akio doi
 
20150715 xflow kikuta_final
20150715 xflow kikuta_final20150715 xflow kikuta_final
20150715 xflow kikuta_finalKazumasa Ikuta
 
データセンター進化論:SDNは今オープンに ~攻めるITインフラにの絶対条件とは?~
データセンター進化論:SDNは今オープンに ~攻めるITインフラにの絶対条件とは?~ データセンター進化論:SDNは今オープンに ~攻めるITインフラにの絶対条件とは?~
データセンター進化論:SDNは今オープンに ~攻めるITインフラにの絶対条件とは?~ Brocade
 
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Sho Shimizu
 

Ähnlich wie Ansible npstudy-shtsuchi (20)

FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
Trema での Open vSwitch
Trema での Open vSwitchTrema での Open vSwitch
Trema での Open vSwitch
 
「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例
 
巨大ポータルを支えるプライベート・クラウド構築事例から学べ!~攻める情シスのためのインフラ構築、その極意とは?~
巨大ポータルを支えるプライベート・クラウド構築事例から学べ!~攻める情シスのためのインフラ構築、その極意とは?~巨大ポータルを支えるプライベート・クラウド構築事例から学べ!~攻める情シスのためのインフラ構築、その極意とは?~
巨大ポータルを支えるプライベート・クラウド構築事例から学べ!~攻める情シスのためのインフラ構築、その極意とは?~
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
Vyatta: The Virtual Router for Cloud Computing Enviroment
Vyatta: The Virtual Router for Cloud Computing EnviromentVyatta: The Virtual Router for Cloud Computing Enviroment
Vyatta: The Virtual Router for Cloud Computing Enviroment
 
Brocade SDN Controller -Sample Code for Brocade vRouter-
Brocade SDN Controller -Sample Code for Brocade vRouter-Brocade SDN Controller -Sample Code for Brocade vRouter-
Brocade SDN Controller -Sample Code for Brocade vRouter-
 
20170329 container technight-第一回勉強会
20170329 container technight-第一回勉強会20170329 container technight-第一回勉強会
20170329 container technight-第一回勉強会
 
20170329 container technight-第一回勉強会
20170329 container technight-第一回勉強会20170329 container technight-第一回勉強会
20170329 container technight-第一回勉強会
 
2010 04クラウド技術講座
2010 04クラウド技術講座2010 04クラウド技術講座
2010 04クラウド技術講座
 
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
 
Bird in show_net
Bird in show_netBird in show_net
Bird in show_net
 
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
 
OpenStack with OpenFlow
OpenStack with OpenFlowOpenStack with OpenFlow
OpenStack with OpenFlow
 
VlanManagerを使ってみた
VlanManagerを使ってみたVlanManagerを使ってみた
VlanManagerを使ってみた
 
JOSUG 9th Study
JOSUG 9th StudyJOSUG 9th Study
JOSUG 9th Study
 
Antenna 20180306 AzureのIaaSで構築する、シンプルなWebサーバ環境
Antenna 20180306 AzureのIaaSで構築する、シンプルなWebサーバ環境Antenna 20180306 AzureのIaaSで構築する、シンプルなWebサーバ環境
Antenna 20180306 AzureのIaaSで構築する、シンプルなWebサーバ環境
 
20150715 xflow kikuta_final
20150715 xflow kikuta_final20150715 xflow kikuta_final
20150715 xflow kikuta_final
 
データセンター進化論:SDNは今オープンに ~攻めるITインフラにの絶対条件とは?~
データセンター進化論:SDNは今オープンに ~攻めるITインフラにの絶対条件とは?~ データセンター進化論:SDNは今オープンに ~攻めるITインフラにの絶対条件とは?~
データセンター進化論:SDNは今オープンに ~攻めるITインフラにの絶対条件とは?~
 
Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像 Open vSwitchソースコードの全体像
Open vSwitchソースコードの全体像
 

Ansible npstudy-shtsuchi

  • 1. Copyright © Arista 2016. All rights reserved.Copyright © Arista 2016. All rights reserved.1 ネットワーク運用者の為のAnsible Shishio Tsuchiya shtsuchi@arista.com
  • 2. Copyright © Arista 2016. All rights reserved. Agenda • Ansible基礎 • デモ • Ansibleハッカソンイベントレポート 2
  • 3. Copyright © Arista 2016. All rights reserved. 自前 インテグレーションの為の カスタム開発 ソフトウェア開発のリソー スと考え方 DevOps 既存のツールを活用 (Puppet, Chef,Ansibleな ど) スクリプトベースの統合 とカスタマイズ ターンキー 現状は選択肢は少ない レガシー・モデル 顧客はクラウド・オートメーショ ンの為にもターンキー・ソリュー ションが必要 クラウド・ネットワーキングへのアプローチ 大規模クラウド 事業者 先進エンタープライズ / サービスプロバイダー 従来型エンタープライズ / サービスプロバイダー 10,000エンジニア1人あたりネットワーク機器 … … … … … 1,000エンジニア1人あたりネットワーク機器 100エンジニア1人あたりネットワーク機器
  • 4. Copyright © Arista 2016. All rights reserved. Ansibleとは何か? • Red hatのオープンソースの構成管理ツール • 読みやすい - タスク内容を記述するPlaybookはテキスト形式(YAML) • エージェンスレス - Chef/Puppetとは違いクライアントにエージェントが要らない • 他のオープンソースとの連携が可能 4
  • 5. Copyright © Arista 2016. All rights reserved. Playbook • YAML形式で書かれた設定構成ファイル • hosts:ターゲット • tasks:実施する項目 • handlers:変更があった時の動作 5 --- - hosts: webservers vars: http_port: 80 max_clients: 200 remote_user: root tasks: - name: ensure apache is at the latest version yum: name=httpd state=latest - name: write the apache config file template: src=/srv/httpd.j2 dest=/etc/httpd.conf notify: - restart apache - name: ensure apache is running (and enable it at boot) service: name=httpd state=started enabled=yes handlers: - name: restart apache service: name=httpd state=restarted
  • 6. Copyright © Arista 2016. All rights reserved. プレイブック 6 右サイド!すぐ上がって 10番! 裏側に走って シュート打ったら、すぐ戻る!! hosts:右サイド、10番 group:右サイド(7番と5番) tasks:すぐ上がって、裏側走って handler:すぐ戻る
  • 7. Copyright © Arista 2016. All rights reserved. YAML(YAML Ain't a Markup Language) • 読みやすい(インデントで階層構造) • わかりやすい • 一般的な拡張子は.yml 7 --- - hosts: pod1_leafs connection: local gather_facts: no tasks: - name: Configure Arista Vlans eos_template: src: vlans.j2 provider: "{{ eos_connection }}" --- で始まる - で始まる Key: Value ネストの時は半角スペース “{{変数}}”
  • 8. Copyright © Arista 2016. All rights reserved. Ansibleバージョン/その他 • Ansible, Inc をRed hadが買収 2015年10月 • 2.0.0 - Red hatとして初めてのリリース - それまでのコミュニティハブ(Ansible Galaxsy)を保つ • 2.1.0 - ネットワーク機器のサポート拡大 - Cisco/HPE/Juniper/Arista/Cumulus • 2.2.0 - ネットワーク機器サポート拡大(Nokia/Vyos/F5 etc) - Docker/クラウドサービス • 2.3.0 - Netconf追加 - Persistent Connection追加 • Ansible Tower - ユーザインターフェース提供やスケジューリング管理などを行う有料ツール - https://www.ansible.com/tower • Jinjya2 - 組み込みのテンプレートエンジン 8
  • 9. Copyright © Arista 2016. All rights reserved. Ansible Network Module • 標準モジュールとして提供 http://docs.ansible.com/ansible/list_of_network_modules.html • 各ベンダー機器毎にモジュールを提供 - eos_command – Arista EOSの為の管理コマンド実行 - eos_config – Arista EOSの設定コマンド - eos_eapi – Arista EOS eAPI管理と設定コマンド - eos_facts –Arista EOSを実行してるリモートデバイスの情報を収集 - eos_template (D) – Arista EOSデバイスの管理 *重複(D) eos_configを使用する事 9
  • 10. Copyright © Arista 2016. All rights reserved. Ansibleデモ 10 > vEOS1 vEOS2 Management 10.10.1.0/24.100 .1 .2
  • 11. Copyright © Arista 2016. All rights reserved. 初期状態 11 > vEOS1 vEOS2 Management 10.10.1.0/24.100 .1 .2 vEOS1#show running-config ! Command: show running-config ! device: vEOS1 (vEOS, EOS-4.16.9M) ! ! boot system flash:/vEOS-lab.swi ! transceiver qsfp default-mode 4x10G ! hostname vEOS1 ! spanning-tree mode mstp ! no aaa root ! username admin role network-admin secret 5 $1$R/oUJCiz$/Ezl61/NxHyLhyHSfayJj/ ! interface Ethernet1 ! interface Ethernet2 ! interface Management1 ip address 10.10.1.1/24 ! no ip routing ! management api http-commands protocol http no shutdown ! ! end • managementの設定のみ - http/https/sshなどが設定可能
  • 12. Copyright © Arista 2016. All rights reserved. 初期状態 12 > vEOS1 vEOS2 Management 10.10.1.0/24.100 .1 .2 vEOS1#show management api http-commands Enabled: Yes HTTPS server: running, set to use port 443 HTTP server: running, set to use port 80 Local HTTP server: shutdown, no authentication, set to use port 8080 Unix Socket server: shutdown, no authentication VRF: default Hits: 0 Last hit: never Bytes in: 0 Bytes out: 0 Requests: 0 Commands: 0 Duration: 0.000 seconds SSL Profile: none QoS DSCP: 0 URLs ----------------------------------- Management1 : https://10.10.1.1:443 Management1 : http://10.10.1.1:80 • vlan設定の追加 • インターフェース設定 • OSPF設定
  • 13. Copyright © Arista 2016. All rights reserved. Playbook for inventory 13 > vEOS1 vEOS2 Management 10.10.1.0/24.100 .1 .2 arista@ubuntu:~/eos_central_demo$ more showver.yaml --- - hosts: pod1_leafs connection: local gather_facts: yes vars: eos_connection: host: "{{ inventory_hostname }}" username: admin password: admin tranport: eapi use_ssl: false authorize: true tasks: - name: Gather info from Show Version eos_command: commands: - show version provider: '{{ eos_connection }}' register: result - debug: var=result
  • 14. Copyright © Arista 2016. All rights reserved. Playbook execute 14 > vEOS1 vEOS2 Management 10.10.1.0/24.100 .1 .2 arista@ubuntu:~/eos_central_demo$ ansible-playbook -i hosts showver.yaml PLAY [pod1_leafs] ************************************************************** TASK [setup] ******************************************************************* ok: [vEOS2] ok: [vEOS1] TASK [Gather info from Show Version] ******************************************* ok: [vEOS2] ok: [vEOS1] TASK [debug] ******************************************************************* ok: [vEOS2] => { "result": { "changed": false, "stdout": [ "Arista vEOS¥nHardware version: ¥nSerial number: ¥nSystem MAC address: 0800.2745.50af¥n¥nSoftware image version: 4.16.9M¥nArchitecture: i386¥nInternal build version: 4.16.9M-3799680.4169M¥nInternal build ID: 5dc3cc62-22ea-4df1-b501- 5761ced5f183¥n¥nUptime: 58 minutes¥nTotal memory: 1897540 kB¥nFree memory: 39020 kB¥n" ], "stdout_lines": [ [ "Arista vEOS", "Hardware version: ", "Serial number: ", "System MAC address: 0800.2745.50af", "", "Software image version: 4.16.9M", "Architecture: i386", "Internal build version: 4.16.9M-3799680.4169M", "Internal build ID: 5dc3cc62-22ea-4df1-b501-5761ced5f183", "", "Uptime: 58 minutes", "Total memory: 1897540 kB", "Free memory: 39020 kB", "”
  • 15. Copyright © Arista 2016. All rights reserved. テンプレートの作り方 15 vEOS1 ! vlan 39 name JANOG39 ! interface Ethernet1 description vEOS1-vEOS2 no switchport ip address 10.1.1.1/30 ! interface Loopback0 ip address 10.255.255.1/32 ! router ospf 1 network 10.0.0.0/8 area 0.0.0.0 vEOS2 ! vlan 39 name JANOG39 ! interface Ethernet1 description vEOS1-vEOS2 no switchport ip address 10.1.1.2/30 ! interface Loopback0 ip address 10.255.255.2/32 ! router ospf 1 network 10.0.0.0/8 area 0.0.0.0 vlanテンプレート インターフェース テンプレート
  • 16. Copyright © Arista 2016. All rights reserved. vlan設定の追加 16 > vEOS1 vEOS2 .100 .1 .2 ! vlan 39 name JANOG39 ! ! vlan 39 name JANOG39 ! configure_eos.yaml tasks: - name: Configure Arista Vlans eos_template: src: vlans.j2 provider: "{{ eos_connection }}" templates/vlans.j2 {% for vlan in vlans %} vlan {{ vlan.vlanid }} name {{ vlan.name }} {% endfor %} group_vars/pod1_leafs vlans: - vlanid: 39 name: JANOG39 やりたい コンフィグ 共通項目 jinjya2テンプレート 呼び出し 共通項目の読み出し
  • 17. Copyright © Arista 2016. All rights reserved. インターフェース設定の追加 17 > vEOS1 vEOS2 .100 .1 .2 interface Ethernet1 description vEOS1-vEOS2 no switchport ip address 10.1.1.1/30 interface Ethernet1 description vEOS1-vEOS2 no switchport ip address 10.1.1.2/30 configure_eos.yaml - name: ConfigureArista Eth Interfaces eos_template: src: intf.j2 provider: "{{ eos_connection }}" templates/intf.j2 {% for intf in interfaces %} interface {{ intf.name }} description {{ intf.description }} no switchport ip address {{ intf.address }} {% endfor %} host_vars/vEOS1 interfaces: - name: Ethernet1 description: 'vEOS1-vEOS2' address: 10.1.1.1/30 ノード毎に差分 jinjya2テンプレート 呼び出し host_vars/vEOS2 interfaces: - name: Ethernet1 description: 'vEOS1-vEOS2' address: 10.1.1.2/30
  • 18. Copyright © Arista 2016. All rights reserved. --- - hosts: pod1_leafs connection: local gather_facts: no tasks: - name: Configure Arista Vlans eos_template: src: vlans.j2 provider: "{{ eos_connection }}" - name: ConfigureArista Eth Interfaces eos_template: src: intf.j2 provider: "{{ eos_connection }}" Playbook 18 誰がプレイをするのか? ./hosts [pod1_leafs] vEOS1 vEOS2 groupには誰が所属する のか? groupの変数 group_vars/pod1_leafs vlans: - vlanid: 39 name: JANOG39 host毎の変数 host_vars/vEOS1 interfaces: - name: Ethernet1 description: 'vEOS1-vEOS2' address: 10.1.1.1/30 host_vars/vEOS2 interfaces: - name: Ethernet1 description: 'vEOS1-vEOS2' address: 10.1.1.2/30 taskを実行
  • 19. Copyright © Arista 2016. All rights reserved. Playbook実行 19 > vEOS1 vEOS2 Management 10.10.1.0/24.100 .1 .2 arista@ubuntu:~/eos_central_demo$ ansible-playbook -i hosts configure_eos.yaml PLAY [pod1_leafs] ************************************************************** TASK [Configure Arista Vlans] ************************************************** ok: [vEOS2] ok: [vEOS1] TASK [ConfigureArista Eth Interfaces] ****************************************** ok: [vEOS1] ok: [vEOS2] TASK [Configure Loopback] ****************************************************** changed: [vEOS2] changed: [vEOS1] TASK [Configure Routing] ******************************************************* changed: [vEOS2] changed: [vEOS1] PLAY RECAP ********************************************************************* vEOS1 : ok=4 changed=2 unreachable=0 failed=0 vEOS2 : ok=4 changed=2 unreachable=0 failed=0
  • 20. Copyright © Arista 2016. All rights reserved. 実行後アウトプット 20 > vEOS1 vEOS2 Management 10.10.1.0/24.100 .1 .2 vEOS1#show management api http-commands Enabled: Yes HTTPS server: running, set to use port 443 HTTP server: running, set to use port 80 Local HTTP server: shutdown, no authentication, set to use port 8080 Unix Socket server: shutdown, no authentication VRF: default Hits: 34 Last hit: 450 seconds ago Bytes in: 5700 Bytes out: 10628 Requests: 32 Commands: 103 Duration: 14.547 seconds SSL Profile: none QoS DSCP: 0 User Requests Bytes in Bytes out Last hit ----------- -------------- -------------- --------------- --------------- admin 32 5700 10628 450 seconds ago URLs -------------------------------------- Ethernet1 : https://10.1.1.1:443 Ethernet1 : http://10.1.1.1:80 Loopback0 : https://10.255.255.1:443 Loopback0 : http://10.255.255.1:80 Management1 : https://10.10.1.1:443 Management1 : http://10.10.1.1:80
  • 21. Copyright © Arista 2016. All rights reserved. 実行後アウトプット 21 > vEOS1 vEOS2 Management 10.10.1.0/24 vEOS1#show ip route VRF name: default Codes: C - connected, S - static, K - kernel, O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1, E2 - OSPF external type 2, N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type2, B I - iBGP, B E - eBGP, R - RIP, I L1 - ISIS level 1, I L2 - ISIS level 2, A B - BGP Aggregate, A O - OSPF Summary, NG - Nexthop Group Static Route, V - VXLAN Control Service Gateway of last resort is not set C 10.1.1.0/30 is directly connected, Ethernet1 C 10.10.1.0/24 is directly connected, Management1 C 10.255.255.1/32 is directly connected, Loopback0 O 10.255.255.2/32 [110/20] via 10.1.1.2, Ethernet1 vEOS2#show ip route VRF name: default Codes: C - connected, S - static, K - kernel, O - OSPF, IA - OSPF inter area, E1 - OSPF external type 1, E2 - OSPF external type 2, N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type2, B I - iBGP, B E - eBGP, R - RIP, I L1 - ISIS level 1, I L2 - ISIS level 2, A B - BGP Aggregate, A O - OSPF Summary, NG - Nexthop Group Static Route, V - VXLAN Control Service Gateway of last resort is not set C 10.1.1.0/30 is directly connected, Ethernet1 C 10.10.1.0/24 is directly connected, Management1 O 10.255.255.1/32 [110/20] via 10.1.1.1, Ethernet1 C 10.255.255.2/32 is directly connected, Loopback0
  • 22. Copyright © Arista 2016. All rights reserved. まとめ • Ansibleは読みやすく、エージェントレス • ネットワーク機器の対応も幅広くなってきた • またサーバーやクラウド対応も増え、連携がしやす い 22
  • 23. Copyright © Arista 2016. All rights reserved.Copyright © Arista 2016. All rights reserved. Ansibleハッカソン @沖縄オープンラボ 23
  • 24. Copyright © Arista 2016. All rights reserved. イベント情報 • 場所: 沖縄オープンラボ - http://www.okinawaopenlabs.org/ • 期間: - 2017年2月9日-11日 • コーディネーター: - 齊藤 秀喜さん(IIJ) - 元木 顕弘さん(NEC) - 西野 大さん(BroadBand Tower) 24
  • 25. Copyright © Arista 2016. All rights reserved. 参加企業 • Arista Networks • APCommunications • BroadBand Tower • NTT Neomate • IIGA • NEC 25 • OKIT • Temp Stuff Forum • NTT PC Communications • NTT Communications • NEC Solution Innovators
  • 26. Copyright © Arista 2016. All rights reserved. Ansibleハッカソン風景 26
  • 27. Copyright © Arista 2016. All rights reserved. スケジュール • 1日目 - Ansibleベーシック by斉藤さん・本木さん - ラボセットアップ - Ansibleテスト on Cumulus Linux • 2日目 - Ansibleテスト on VNF ≫ Arista vEOS ≫ Cisco CSR1000v/IOS-XRv ≫ Juniper vSRX - 実施内容や失敗談を共有、もしくはその場でトラ ブルシューティング ≫ ほとんどのケースが環境トラブル 27 • Day3 - Ansible テスト on PNF ≫ Arista 7050TX ≫ Juniper EX4200 ≫ IPinfusion OcNOS - セキュリティについての議論
  • 28. Copyright © Arista 2016. All rights reserved. Ansible Network Module http://docs.ansible.com/ansible/list_of_network_modules.html 28 Vender Arista Cisco Cisco Cumulus Juniper OS EOS IOS/IOS-XE IOS-XR Cumulus Linux JUNOS メモ eos_config はauthorize: true が必要 設定を保存するた めにはsave:yes ios_config authorize: true が 必要 設定を保存するた めにはsave:yes commit がデフォルトで動く formalコマンドもサポート インターフェースを変え た時にはrestartが必 要 localアクションではなく、 リモート NETCONF で動作する ためjunos- ezncが必要 commit が デフォルトで 動く
  • 29. Copyright © Arista 2016. All rights reserved. connection=local 29 SSH 実行 eAPI(http/https) CLI(SSH)
  • 30. Copyright © Arista 2016. All rights reserved. ベンダー毎の違い 30 shtsuchi:AnsibleHackson shtsuchi$ more arista- config.yaml --- - hosts: Arista connection: local gather_facts: yes vars: eos_connection: host: "{{ inventory_hostname }}" username: ool password: Okinawa2017# tranport: eapi use_ssl: false authorize: true tasks: - debug: var=inventory_hostname - name: loopback config eos_config: lines: - interface loopback 440 - ip address 10.255.255.44/32 - description configure from ansible provider: '{{ eos_connection }}' save: yes register: result - debug: var=result shtsuchi:AnsibleHackson shtsuchi$ more junos- config.yaml --- - hosts: JUNOS connection: local gather_facts: yes vars: junos_connection: host: "{{ inventory_hostname }}" username: ool password: Okinawa2017# tasks: - debug: var=inventory_hostname - name: config loopback junos_config: lines: - set interfaces lo0.0 family inet address 10.255.255.44/32 provider: '{{ junos_connection }}' #register: result - debug: var=result shtsuchi:AnsibleHackson shtsuchi$ more xr-config.yaml --- - hosts: IOS-XR connection: local gather_facts: yes vars: xr_connection: host: "{{ inventory_hostname }}" username: ool password: Okinawa2017# tasks: - debug: var=inventory_hostname - name: config loopback iosxr_config: commands: - interface loopback440 - description create by ansible - interface Loopback440 ipv4 address 10.255.255.4/32 provider: '{{ xr_connection }}' #register: result - debug: var=result
  • 31. Copyright © Arista 2016. All rights reserved. セキュリティtips • playbooksはusername/passwordを表示してしまう • ansible-vaultは暗号化出来る 31 shtsuchi:AnsibleHackson shtsuchi$ ansible-vault encrypt arista-config.yaml Vault password: Encryption successful shtsuchi:AnsibleHackson shtsuchi$ more arista-config.yaml $ANSIBLE_VAULT;1.1;AES256 63356232333930313137393130303563663535303264386630313561336133626565396339333936 3562333238663533356330346436333238333065663636650a393765616662636431613665396238 --
  • 32. Copyright © Arista 2016. All rights reserved. 議論まとめ • ほとんどの機器がlocal コネクション • PNFとVNFの違いはない • ansible-vaultはパスワード管理に有効 - http://docs.ansible.com/ansible/playbooks_vault.html 32
  • 33. Copyright © Arista 2016. All rights reserved. 参考URL • Why Ansible? https://www.ansible.com/it-automation • Network Automation with Ansible https://www.ansible.com/network-automation • Arista + Ansible – Getting Started https://eos.arista.com/arista-ansible-getting-started/ 33
  • 34. Copyright © Arista 2016. All rights reserved.Copyright © Arista 2016. All rights reserved. www.arista.com Thank You