SlideShare una empresa de Scribd logo
1 de 91
Descargar para leer sin conexión
Ansibleではじめる

NW設定の自動化について
- Cisco(VIRL)編 -
2018/10/12
1
- 非ネットワークエンジニア:

- サーバ・インフラ/アプリケーション側の人
- お仕事柄、NW関係に携わることが多い:
- NWの構成管理,自動設定, SDN etc..
- NW技術が好き
- 最近のつらみ: Java有償化
https://www.facebook.com/yasuyuki.sugai
よろしくお願いしまーす
※この資料の内容は、
個人の見解です
自己紹介
菅井 康之
2




・副題
・VIRLすごいよ! V・I・R・L! V・I・R・L!
・余談
・ngrokまぢ便利
3
4
https://www.slideshare.net/akira6592/ansiblesvnwautomation20181012ssmjp-119201162








5
重くてとても持ってこれません。。。
6






自動化業務する人におすすめ!!


7


8




9


10








11
下手するとNW機器買わずにVIRLだけで

本番のNW組めちゃうけど、それはやっちゃダメ


12








13
下手するとNW機器買わずに(ry
https://learningnetwork.cisco.com/docs/DOC-30476


14








15
http://archive.virl.info/virl.cluster.php
下手すると(ry
今日はAnsibleの話をしないといけないので、
一旦ここまで・・・
18
19
えっ・・・、私のMacBookAir スペック低すぎ!?
20
21




22
23
https://ngrok.com/product
セキュリティには
十分留意ください
見られても良いやつだけ
25
VIRL-NW
172.16.1.0/16
WORK-NW
10.102.0.0/22
my-pc
internet VIRL
VM
172.16.1.250
10.102.3.125
10.102.2.193
static
なぜか/22なのは、うちのマンションの仕様です。。。
26
全部VIRLの上に載っけています
27
28
29
vlan10 vlan20
vlan10 vlan20
30
switch# configure terminal
switch(config)# hostname core-sw
core-sw(config)# no feature ssh
core-sw(config)# ssh key rsa 1024
core-sw(config)# feature ssh
core-sw(config)# vrf context management
core-sw(config-vrf)# ip route 0.0.0.0/0 172.16.1.250
core-sw(config-vrf)# exit
core-sw(config)# interface mgmt0
core-sw(config-if)# ip address 172.16.1.200/16
core-sw(config-if)# no shutdown
core-sw(config-if)# end
core-sw# copy running-config startup-config 
Switch>enable
Switch#configure terminal
Switch(config)#enable secret cisco
Switch(config)#hostname edge-sw-a
edge-sw-a(config)#username cisco password cisco
edge-sw-a(config)#ip domain-name sugawi.jp
edge-sw-a(config)#crypto key generate rsa
How many bits in the modulus [512]: 1024
edge-sw-a(config)#ip ssh version 2
edge-sw-a(config)#line vty 0 4
edge-sw-a(config-line)#transport input telnet ssh
edge-sw-a(config-line)#login local
edge-sw-a(config-line)#exit
edge-sw-a(config)#ip route 0.0.0.0 0.0.0.0 172.16.1.250
edge-sw-a(config)#interface Vlan1
edge-sw-a(config-if)#ip address 172.16.1.210 255.255.0.0
edge-sw-a(config-if)#no shutdown
edge-sw-a(config-if)#end
edge-sw-a#write memory
33
172.16.1.200 core-sw
172.16.1.210 edge-sw-a
172.16.1.220 edge-sw-b
172.16.1.230 edge-sw-c
172.16.1.110 server-1
172.16.1.120 server-2
172.16.1.130 server-3
172.16.1.140 server-4
34
fatal: [172.16.1.30]: FAILED! => {"msg": "paramiko: The authenticity of host 'XXXX' can't be established.nThe ssh-rsa key
fingerprint is XXXX."}
35
[edge-sw_ios]
edge-sw-a
edge-sw-b
edge-sw-c
[core-sw_nxos]
core-sw
[edge-sw_ios:vars]
ansible_connection=network_cli
ansible_network_os=ios
ansible_user=cisco
ansible_ssh_pass=cisco
ansible_become=yes
ansible_become_method=enable
ansible_become_pass=cisco
[core-sw_nxos:vars]
ansible_connection=network_cli
ansible_network_os=nxos
ansible_user=admin
ansible_ssh_pass=admin
ansible_become=no
36


37
https://docs.ansible.com/ansible/2.6/modules/
38
39
https://docs.ansible.com/ansible/2.6/modules/nxos_vlan_module.html
- hosts: core-sw_nxos
tasks:
- name: Create vlan
nxos_vlan:
vlan_id: 120
name: test-vlan
state: present
40
$ ansible-playbook -i inventory vlan_for_nxos.yml -vvv
PLAYBOOK: vlan_for_nxos.yml ************
1 plays in vlan_for_nxos.yml
PLAY [core-sw_nxos] ********************
TASK [Gathering Facts] *****************
ok: [core-sw]
TASK [Create vlan] *********************
changed: [core-sw] => {
"changed": true,
"commands": [
"vlan 120",
"name test-vlan",
"state active",
"no shutdown",
"exit"
],
PLAY RECAP *****************************
core-sw : ok=2 changed=1 unreachable=0 failed=0
41
core-sw# show running-config
:
vlan 1,120
vlan 120
name test-vlan
:
$ ansible-playbook -i inventory vlan_for_nxos.yml -vvv
PLAY RECAP ********************************************************************
core-sw : ok=2 changed=0 unreachable=0 failed=0
42
43




44
- hosts: core-sw_nxos
tasks:
- name: Create vlan v2
nxos_vlan:
vlan_id: 130
name: test-vlan2
interfaces:
- Ethernet3/1
state: present
core-sw# show running-config
:
interface Ethernet3/1
shutdown
no switchport
mac-address 0000.0000.002f
:
45
$ ansible-playbook -i inventory vlan_for_nxos_v2.yml -vvv
PLAYBOOK: vlan_for_nxos_v2.yml ****************************************
1 plays in vlan_for_nxos_v2.yml
PLAY [core-sw_nxos] ***************************************************
TASK [Gathering Facts] ************************************************
ok: [core-sw]
TASK [Create vlan v2] *************************************************
changed: [core-sw] => {
"changed": true,
"commands": [
"vlan 130",
"name test-vlan2",
"state active",
"no shutdown",
"exit",
"interface Ethernet3/1",
"switchport",
"switchport mode access",
"switchport access vlan 130"
],
PLAY RECAP ************************************************************
core-sw : ok=2 changed=1 unreachable=0 failed=0
46
core-sw# show running-config
:
vlan 1,120,130
vlan 120
name test-vlan
vlan 130
name test-vlan2
:
interface Ethernet3/1
shutdown
switchport
switchport access vlan 130
:
47
https://docs.ansible.com/ansible/2.6/modules/nxos_l2_interface_module.html
- hosts: core-sw_nxos
tasks:
- name: mode to tagged port
nxos_l2_interface:
name: Ethernet3/2
mode: trunk
trunk_allowed_vlans: 130
48
$ ansible-playbook -i inventory l2port_for_nxos.yml -vvv
PLAYBOOK: l2port_for_nxos.yml ************************************
1 plays in l2port_for_nxos.yml
PLAY [core-sw_nxos] **********************************************
TASK [Gathering Facts] *******************************************
ok: [core-sw]
TASK [mode to tagged port] ***************************************
fatal: [core-sw]: FAILED! => {
"changed": false,
"msg": "Ensure interface is configured to be a L2nport first before using this module. You can usenthe nxos_interface module for this."
}
PLAY RECAP *******************************************************
core-sw : ok=1 changed=0 unreachable=0 failed=1
49
- hosts: core-sw_nxos
tasks:
- name: mode to layer2
nxos_interface:
name: Ethernet3/2
mode: layer2
- name: mode to tagged port
nxos_l2_interface:
name: Ethernet3/2
mode: trunk
trunk_allowed_vlans: 130
core-sw# show running-config
:
interface Ethernet3/2
shutdown
no switchport
mac-address 0000.0000.002f
:


50
$ ansible-playbook -i inventory l2port_for_nxos_v2.yml -vvv
PLAYBOOK: l2port_for_nxos_v2.yml *****************************************************
1 plays in l2port_for_nxos_v2.yml
PLAY [core-sw_nxos] ******************************************************************
TASK [Gathering Facts] ***************************************************************
ok: [core-sw]
TASK [mode to layer2] ****************************************************************
changed: [core-sw] => {
"changed": true,
"commands": [
"interface Ethernet3/2",
"switchport",
"no shutdown",
"interface Ethernet3/2",
"no shutdown"
],
TASK [mode to tagged port] ***********************************************************
changed: [core-sw] => {
"changed": true,
"commands": [
"interface ethernet3/2",
"switchport mode trunk",
"switchport trunk allowed vlan 130"
],
PLAY RECAP ***************************************************************************
core-sw : ok=3 changed=2 unreachable=0 failed=0
51
core-sw# show running-config
:
interface Ethernet3/2
switchport
switchport mode trunk
switchport trunk allowed vlan 130
no shutdown
:
PLAY RECAP *********************************************************************
core-sw : ok=3 changed=0 unreachable=0 failed=0
52
53
https://docs.ansible.com/ansible/2.6/modules/ios_vlan_module.html
- hosts: edge-sw_ios
tasks:
- name: Create vlan
ios_vlan:
vlan_id: 120
name: test-vlan
interfaces:
- GigabitEthernet0/4
state: present
54
$ ansible-playbook -i inventory vlan_for_ios.yml -vvv
PLAYBOOK: vlan_for_ios.yml **********************************************
1 plays in vlan_for_ios.yml
PLAY [edge-sw_ios] ******************************************************
TASK [Gathering Facts] **************************************************
ok: [edge-sw-a]
TASK [Create vlan] ******************************************************
changed: [edge-sw-a] => {
"changed": true,
"commands": [
"vlan 120",
"name test-vlan",
"interface GigabitEthernet0/4",
"switchport mode access",
"switchport access vlan 120"
],
PLAY RECAP **************************************************************
edge-sw-a : ok=2 changed=1 unreachable=0 failed=0
55
edge-sw-a#show running-config
:
interface GigabitEthernet0/4
switchport access vlan 120
switchport mode access
media-type rj45
negotiation auto
:
PLAY RECAP *************************************************************
edge-sw-a : ok=2 changed=0 unreachable=0 failed=0
interface GigabitEthernet0/4
media-type rj45
negotiation auto
56
57
https://docs.ansible.com/ansible/2.6/modules/ios_l2_interface_module.html
- hosts: edge-sw_ios
tasks:
- name: mode to tagged port
ios_l2_interface:
name: GigabitEthernet0/5
mode: trunk
trunk_allowed_vlans: 120
58
$ ansible-playbook -i inventory l2port_for_ios.yml -vvv
PLAYBOOK: l2port_for_ios.yml
*****************************************************
1 plays in l2port_for_ios.yml
PLAY [edge-sw_ios]
***************************************************************
TASK [Gathering Facts]
***********************************************************
ok: [edge-sw-a]
TASK [mode to tagged port]
*******************************************************
changed: [edge-sw-a] => {
"changed": true,
"commands": [
"interface gigabitethernet0/5",
"switchport mode trunk",
"switchport trunk allowed vlan 120"
],
PLAY RECAP
***********************************************************************
edge-sw-a : ok=2 changed=1 unreachable=0 failed=0
59
edge-sw-a#show running-config
:
interface GigabitEthernet0/5
switchport trunk allowed vlan 120
media-type rj45
negotiation auto
:
60
- hosts: edge-sw_ios
tasks:
- name: encapsulation dot1q
ios_config:
lines:
- switchport trunk encapsulation dot1q
parents: interface GigabitEthernet0/5
- name: mode to tagged port
ios_l2_interface:
name: GigabitEthernet0/5
mode: trunk
trunk_allowed_vlans: 120
61
$ ansible-playbook -i inventory l2port_for_ios_v2.yml -vvv
PLAYBOOK: l2port_for_ios_v2.yml *********************************************
1 plays in l2port_for_ios_v2.yml
PLAY [edge-sw_ios] **********************************************************
TASK [Gathering Facts] ******************************************************
ok: [edge-sw-a]
TASK [encapsulation dot1q] **************************************************
changed: [edge-sw-a] => {
"changed": true,
"commands": [
"interface GigabitEthernet0/5",
"switchport trunk encapsulation dot1q"
],
TASK [mode to tagged port] *************************************************
changed: [edge-sw-a] => {
"changed": true,
"commands": [
"interface gigabitethernet0/5",
"switchport mode trunk"
],
PLAY RECAP *****************************************************************
edge-sw-a : ok=3 changed=2 unreachable=0 failed=0
62
edge-sw-a#show running-config
:
interface GigabitEthernet0/5
switchport trunk allowed vlan 120
switchport trunk encapsulation dot1q
switchport mode trunk
media-type rj45
negotiation auto
:
63
PLAY RECAP
******************************************************************
edge-sw-a : ok=3 changed=0 unreachable=0 failed=0
64
https://qiita.com/akira6592/items/92e6efc478978eb41eac




65
66
67
vlan10 vlan20
vlan10 vlan20




68






もちろんワンタイム的な使い方もあると思っています
69
 一般的なPlaybookの構成ではなく、
最低限のファイルだけ置いてあります
70
[edge-sw_ios]
edge-sw-a
edge-sw-b
edge-sw-c
[core-sw_nxos]
core-sw
[edge-sw_ios:vars]
ansible_connection=network_cli
ansible_network_os=ios
ansible_user=cisco
ansible_ssh_pass=cisco
ansible_become=yes
ansible_become_method=enable
ansible_become_pass=cisco
[core-sw_nxos:vars]
ansible_connection=network_cli
ansible_network_os=nxos
ansible_user=admin
ansible_ssh_pass=admin
ansible_become=no
71


72


73
74


75


76




77
78
$ ansible-playbook -i inventory add_edge_for_edge_sw.yml
PLAY [configuration add edge-sw for edge-sw]
***********************************************************************************************************************************
TASK [Gathering Facts]
******************************************************************************************************************************************************
ok: [edge-sw-a]
ok: [edge-sw-b]
ok: [edge-sw-c]
TASK [Create dummy vlan]
*******************************************************************************************************************************************************
changed: [edge-sw-a]
changed: [edge-sw-b]
changed: [edge-sw-c]
TASK [upport initialize]
*******************************************************************************************************************************************************
changed: [edge-sw-a]
changed: [edge-sw-b]
changed: [edge-sw-c]
TASK [upport mode to tagged port]
**********************************************************************************************************************************************
changed: [edge-sw-a]
changed: [edge-sw-b]
changed: [edge-sw-c]
PLAY RECAP
*******************************************************************************************************************************************************
**************
edge-sw-a : ok=4 changed=3 unreachable=0 failed=0
edge-sw-b : ok=4 changed=3 unreachable=0 failed=0
edge-sw-c : ok=4 changed=3 unreachable=0 failed=0
79
$ ansible-playbook -i inventory add_edge_for_edge_sw.yml
PLAY [configuration add edge-sw for edge-sw]
***********************************************************************************************************************************
TASK [Gathering Facts]
******************************************************************************************************************************************************
ok: [edge-sw-a]
ok: [edge-sw-b]
ok: [edge-sw-c]
TASK [Create dummy vlan]
*******************************************************************************************************************************************************
ok: [edge-sw-a]
ok: [edge-sw-b]
ok: [edge-sw-c]
TASK [upport initialize]
*******************************************************************************************************************************************************
ok: [edge-sw-a]
ok: [edge-sw-b]
ok: [edge-sw-c]
TASK [upport mode to tagged port]
**********************************************************************************************************************************************
ok: [edge-sw-a]
ok: [edge-sw-b]
ok: [edge-sw-c]
PLAY RECAP
*******************************************************************************************************************************************************
**************
edge-sw-a : ok=4 changed=0 unreachable=0 failed=0
edge-sw-b : ok=4 changed=0 unreachable=0 failed=0
edge-sw-c : ok=4 changed=0 unreachable=0 failed=0
冪等性確認
80
$ ansible-playbook -i inventory add_edge_for_core-sw.yml
PLAY [configuration add edge-sw for core-sw]
******************************************************************************************************************
TASK [Gathering Facts]
******************************************************************************************************************
ok: [core-sw]
TASK [Create dummy vlan]
******************************************************************************************************************
changed: [core-sw]
TASK [downport mode to layer2]
******************************************************************************************************************
changed: [core-sw]
PLAY RECAP
******************************************************************************************************************
core-sw : ok=3 changed=2 unreachable=0 failed=0
81
$ ansible-playbook -i inventory add_edge_for_core-sw.yml
PLAY [configuration add edge-sw for core-sw]
******************************************************************************************************************
TASK [Gathering Facts]
******************************************************************************************************************
ok: [core-sw]
TASK [Create dummy vlan]
******************************************************************************************************************
ok: [core-sw]
TASK [downport mode to layer2]
******************************************************************************************************************
ok: [core-sw]
PLAY RECAP
******************************************************************************************************************
core-sw : ok=3 changed=0 unreachable=0 failed=0
冪等性確認
82
$ ansible-playbook -i inventory provisioning_for_edge-sw.yml
PLAY [configuration provisioning for edge-sw] **********************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************************************
ok: [edge-sw-a]
TASK [add vlan] ****************************************************************************************************************************************************************
changed: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}])
changed: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}])
TASK [description server name] *************************************************************************************************************************************************
skipping: [edge-sw-b] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}])
skipping: [edge-sw-b] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}])
changed: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}])
changed: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}])
TASK [allowed trunk vlan] ******************************************************************************************************************************************************
changed: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}])
skipping: [edge-sw-b] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}])
:
PLAY RECAP *********************************************************************************************************************************************************************
edge-sw-a : ok=4 changed=3 unreachable=0 failed=0
数が多いので、1ノード分だけ+一部省略
83
$ ansible-playbook -i inventory provisioning_for_edge-sw.yml
PLAY [configuration provisioning for edge-sw] **********************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************************************
ok: [edge-sw-a]
TASK [add vlan] ****************************************************************************************************************************************************************
ok: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}])
ok: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}])
TASK [description server name] *************************************************************************************************************************************************
skipping: [edge-sw-b] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}])
skipping: [edge-sw-b] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}])
ok: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}])
ok: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}])
TASK [allowed trunk vlan] ******************************************************************************************************************************************************
ok: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}])
skipping: [edge-sw-b] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}])
skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}])
:
PLAY RECAP *********************************************************************************************************************************************************************
edge-sw-a : ok=4 changed=0 unreachable=0 failed=0
冪等性確認
whenで対象にならない変数の組み合わせはskippingされます。
変数見て正しいか目視でも確認可能。
84
$ ansible-playbook -i inventory provisioning_for_core-sw.yml
PLAY [configuration provisioning for core-sw] **********************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************************************
ok: [core-sw]
TASK [add vlan] ****************************************************************************************************************************************************************
changed: [core-sw] => (item={u'vlan': 10, u'name': u'serviceA'})
changed: [core-sw] => (item={u'vlan': 20, u'name': u'serviceB'})
TASK [allowed trunk vlan] ******************************************************************************************************************************************************
changed: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}])
changed: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}])
changed: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}])
changed: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}])
PLAY RECAP *********************************************************************************************************************************************************************
core-sw : ok=3 changed=2 unreachable=0 failed=0
85
$ ansible-playbook -i inventory provisioning_for_core-sw.yml
PLAY [configuration provisioning for core-sw] **********************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************************************
ok: [core-sw]
TASK [add vlan] ****************************************************************************************************************************************************************
ok: [core-sw] => (item={u'vlan': 10, u'name': u'serviceA'})
ok: [core-sw] => (item={u'vlan': 20, u'name': u'serviceB'})
TASK [allowed trunk vlan] ******************************************************************************************************************************************************
ok: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}])
ok: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}])
skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}])
ok: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}])
skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}])
ok: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}])
PLAY RECAP *********************************************************************************************************************************************************************
core-sw : ok=3 changed=0 unreachable=0 failed=0
冪等性確認
86
core-sw#show running-config
:
vlan 1,10,20,99
vlan 10
name Vlan_serviceA"
vlan 20
name Vlan_serviceB"
vlan 99
name dummy-Vlan"
:
interface Ethernet2/1
description connect to edge-sw-a
switchport
switchport mode trunk
switchport trunk allowed vlan 10,20,99
no shutdown
interface Ethernet2/2
description connect to edge-sw-b
switchport
switchport mode trunk
switchport trunk allowed vlan 10,99
no shutdown
interface Ethernet2/3
description connect to edge-sw-c
switchport
switchport mode trunk
switchport trunk allowed vlan 20,99
no shutdown
:
edge-sw-a#show running-config
:
interface GigabitEthernet0/1
description connect to core-sw
switchport trunk allowed vlan 10,20,99
switchport trunk encapsulation dot1q
switchport mode trunk
media-type rj45
negotiation auto
!
interface GigabitEthernet0/2
description connect to server-1
switchport access vlan 10
switchport mode access
media-type rj45
negotiation auto
!
interface GigabitEthernet0/3
description connect to server-2
switchport access vlan 20
switchport mode access
media-type rj45
negotiation auto
!
:
なんだかんだで想定通りに設定できました
edge-sw-b,edge-sw-cは割愛
冪等性まぢ大事
何回か動かしたら分かるレベルの
ヤバさなので、まぁ気づくと思いますが。。。




89
NW機器もサーバ側もAnsibleでまとめて設定、
動作確認を実施することができます






90
おわり。
91

Más contenido relacionado

La actualidad más candente

JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性
JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性
JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性Taiji Tsuchiya
 
Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)akira6592
 
大規模DCのネットワークデザイン
大規模DCのネットワークデザイン大規模DCのネットワークデザイン
大規模DCのネットワークデザインMasayuki Kobayashi
 
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いたAkihiro Kuwano
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Taro Hirose
 
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみたakira6592
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理Takuya ASADA
 
監視 Overview
監視 Overview監視 Overview
監視 OverviewIIJ
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始めtetsusat
 
インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造Taiji Tsuchiya
 
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌LINE Corporation
 
[db tech showcase Tokyo 2016] C32: 世界一速いPostgreSQLを目指せ!インメモリカラムナの実現 by 富士通株式会...
[db tech showcase Tokyo 2016] C32: 世界一速いPostgreSQLを目指せ!インメモリカラムナの実現 by 富士通株式会...[db tech showcase Tokyo 2016] C32: 世界一速いPostgreSQLを目指せ!インメモリカラムナの実現 by 富士通株式会...
[db tech showcase Tokyo 2016] C32: 世界一速いPostgreSQLを目指せ!インメモリカラムナの実現 by 富士通株式会...Insight Technology, Inc.
 
VyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 BridgeVyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 BridgeKLab Inc. / Tech
 
明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化Taiji Tsuchiya
 
100 G超通信時代の安定した高品質な伝送インフラ構築づくり
100 G超通信時代の安定した高品質な伝送インフラ構築づくり100 G超通信時代の安定した高品質な伝送インフラ構築づくり
100 G超通信時代の安定した高品質な伝送インフラ構築づくりTomohiro Sakamoto(Onodera)
 
IPv6マルチプレフィックスの話
IPv6マルチプレフィックスの話IPv6マルチプレフィックスの話
IPv6マルチプレフィックスの話YasunobuToyota
 
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜Taiji Tsuchiya
 
KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話imurata8203
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Ryuichi Sakamoto
 
L2 over L3 ecnaspsulations
L2 over L3 ecnaspsulationsL2 over L3 ecnaspsulations
L2 over L3 ecnaspsulationsMotonori Shindo
 

La actualidad más candente (20)

JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性
JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性
JSNAPyとPyEZで作る次世代ネットワークオペレーションの可能性
 
Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)
 
大規模DCのネットワークデザイン
大規模DCのネットワークデザイン大規模DCのネットワークデザイン
大規模DCのネットワークデザイン
 
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
 
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
私たちはRESTCONFでネットワーク自動化的に何が嬉しくなるのか考えてみた
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
 
監視 Overview
監視 Overview監視 Overview
監視 Overview
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造インターネットの仕組みとISPの構造
インターネットの仕組みとISPの構造
 
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌
 
[db tech showcase Tokyo 2016] C32: 世界一速いPostgreSQLを目指せ!インメモリカラムナの実現 by 富士通株式会...
[db tech showcase Tokyo 2016] C32: 世界一速いPostgreSQLを目指せ!インメモリカラムナの実現 by 富士通株式会...[db tech showcase Tokyo 2016] C32: 世界一速いPostgreSQLを目指せ!インメモリカラムナの実現 by 富士通株式会...
[db tech showcase Tokyo 2016] C32: 世界一速いPostgreSQLを目指せ!インメモリカラムナの実現 by 富士通株式会...
 
VyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 BridgeVyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 Bridge
 
明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化
 
100 G超通信時代の安定した高品質な伝送インフラ構築づくり
100 G超通信時代の安定した高品質な伝送インフラ構築づくり100 G超通信時代の安定した高品質な伝送インフラ構築づくり
100 G超通信時代の安定した高品質な伝送インフラ構築づくり
 
IPv6マルチプレフィックスの話
IPv6マルチプレフィックスの話IPv6マルチプレフィックスの話
IPv6マルチプレフィックスの話
 
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
ルータコンフィグのGit管理のススメ 〜Git管理以外を自動化してみた〜
 
KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話
 
Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装Slurmのジョブスケジューリングと実装
Slurmのジョブスケジューリングと実装
 
L2 over L3 ecnaspsulations
L2 over L3 ecnaspsulationsL2 over L3 ecnaspsulations
L2 over L3 ecnaspsulations
 

Similar a AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -

Remote Baremetal Deployments Using Bifrost
Remote Baremetal Deployments Using BifrostRemote Baremetal Deployments Using Bifrost
Remote Baremetal Deployments Using BifrostJames Denton
 
DEF CON 27 - GRICHTER - reverse engineering 4g hotspots for fun bugs net fina...
DEF CON 27 - GRICHTER - reverse engineering 4g hotspots for fun bugs net fina...DEF CON 27 - GRICHTER - reverse engineering 4g hotspots for fun bugs net fina...
DEF CON 27 - GRICHTER - reverse engineering 4g hotspots for fun bugs net fina...Felipe Prado
 
3/4G USB modem Cheat Sheet
3/4G USB modem Cheat Sheet3/4G USB modem Cheat Sheet
3/4G USB modem Cheat SheetNaoto MATSUMOTO
 
Filip palian mateuszkocielski. simplest ownage human observed… routers
Filip palian mateuszkocielski. simplest ownage human observed… routersFilip palian mateuszkocielski. simplest ownage human observed… routers
Filip palian mateuszkocielski. simplest ownage human observed… routersYury Chemerkin
 
Simplest-Ownage-Human-Observed… - Routers
 Simplest-Ownage-Human-Observed… - Routers Simplest-Ownage-Human-Observed… - Routers
Simplest-Ownage-Human-Observed… - RoutersLogicaltrust pl
 
Oracle applications r12.2.0 installation on linux
Oracle applications r12.2.0 installation on linuxOracle applications r12.2.0 installation on linux
Oracle applications r12.2.0 installation on linuxRavi Kumar Lanke
 
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !Pierre-jean Texier
 
Основные понятия и аспекты построения отказоустойчивых Site-to-Site VPN на ASA
Основные понятия и аспекты построения отказоустойчивых Site-to-Site VPN на ASAОсновные понятия и аспекты построения отказоустойчивых Site-to-Site VPN на ASA
Основные понятия и аспекты построения отказоустойчивых Site-to-Site VPN на ASACisco Russia
 
Armboot process zeelogic
Armboot process zeelogicArmboot process zeelogic
Armboot process zeelogicAleem Shariff
 
Firmware hacking, slash the pineapple for fun
Firmware hacking, slash the pineapple for funFirmware hacking, slash the pineapple for fun
Firmware hacking, slash the pineapple for funidsecconf
 
hacking-embedded-devices.pptx
hacking-embedded-devices.pptxhacking-embedded-devices.pptx
hacking-embedded-devices.pptxssuserfcf43f
 
Securing the network for VMs or Containers
Securing the network for VMs or ContainersSecuring the network for VMs or Containers
Securing the network for VMs or ContainersMarian Marinov
 
Linux On V Mware ESXi
Linux On V Mware ESXiLinux On V Mware ESXi
Linux On V Mware ESXiMasafumi Ohta
 
Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !Dobrica Pavlinušić
 
04 - I love my OS, he protects me (sometimes, in specific circumstances)
04 - I love my OS, he protects me (sometimes, in specific circumstances)04 - I love my OS, he protects me (sometimes, in specific circumstances)
04 - I love my OS, he protects me (sometimes, in specific circumstances)Alexandre Moneger
 
Sweet fx readme
Sweet fx readmeSweet fx readme
Sweet fx readmeMLGGS
 
An Easy way to build a server cluster without top of rack switches (MEMO)
An Easy way to build a server cluster without top of rack switches (MEMO)An Easy way to build a server cluster without top of rack switches (MEMO)
An Easy way to build a server cluster without top of rack switches (MEMO)Naoto MATSUMOTO
 

Similar a AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 - (20)

Remote Baremetal Deployments Using Bifrost
Remote Baremetal Deployments Using BifrostRemote Baremetal Deployments Using Bifrost
Remote Baremetal Deployments Using Bifrost
 
DEF CON 27 - GRICHTER - reverse engineering 4g hotspots for fun bugs net fina...
DEF CON 27 - GRICHTER - reverse engineering 4g hotspots for fun bugs net fina...DEF CON 27 - GRICHTER - reverse engineering 4g hotspots for fun bugs net fina...
DEF CON 27 - GRICHTER - reverse engineering 4g hotspots for fun bugs net fina...
 
3/4G USB modem Cheat Sheet
3/4G USB modem Cheat Sheet3/4G USB modem Cheat Sheet
3/4G USB modem Cheat Sheet
 
Filip palian mateuszkocielski. simplest ownage human observed… routers
Filip palian mateuszkocielski. simplest ownage human observed… routersFilip palian mateuszkocielski. simplest ownage human observed… routers
Filip palian mateuszkocielski. simplest ownage human observed… routers
 
Simplest-Ownage-Human-Observed… - Routers
 Simplest-Ownage-Human-Observed… - Routers Simplest-Ownage-Human-Observed… - Routers
Simplest-Ownage-Human-Observed… - Routers
 
Configure Switch Nortel 8600
Configure Switch Nortel 8600Configure Switch Nortel 8600
Configure Switch Nortel 8600
 
Oracle applications r12.2.0 installation on linux
Oracle applications r12.2.0 installation on linuxOracle applications r12.2.0 installation on linux
Oracle applications r12.2.0 installation on linux
 
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
 
Основные понятия и аспекты построения отказоустойчивых Site-to-Site VPN на ASA
Основные понятия и аспекты построения отказоустойчивых Site-to-Site VPN на ASAОсновные понятия и аспекты построения отказоустойчивых Site-to-Site VPN на ASA
Основные понятия и аспекты построения отказоустойчивых Site-to-Site VPN на ASA
 
Armboot process zeelogic
Armboot process zeelogicArmboot process zeelogic
Armboot process zeelogic
 
Firmware hacking, slash the pineapple for fun
Firmware hacking, slash the pineapple for funFirmware hacking, slash the pineapple for fun
Firmware hacking, slash the pineapple for fun
 
hacking-embedded-devices.pptx
hacking-embedded-devices.pptxhacking-embedded-devices.pptx
hacking-embedded-devices.pptx
 
portfolio2
portfolio2portfolio2
portfolio2
 
Securing the network for VMs or Containers
Securing the network for VMs or ContainersSecuring the network for VMs or Containers
Securing the network for VMs or Containers
 
Linux On V Mware ESXi
Linux On V Mware ESXiLinux On V Mware ESXi
Linux On V Mware ESXi
 
Alcatel vm
Alcatel vmAlcatel vm
Alcatel vm
 
Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !
 
04 - I love my OS, he protects me (sometimes, in specific circumstances)
04 - I love my OS, he protects me (sometimes, in specific circumstances)04 - I love my OS, he protects me (sometimes, in specific circumstances)
04 - I love my OS, he protects me (sometimes, in specific circumstances)
 
Sweet fx readme
Sweet fx readmeSweet fx readme
Sweet fx readme
 
An Easy way to build a server cluster without top of rack switches (MEMO)
An Easy way to build a server cluster without top of rack switches (MEMO)An Easy way to build a server cluster without top of rack switches (MEMO)
An Easy way to build a server cluster without top of rack switches (MEMO)
 

Más de Yasuyuki Sugai

業務システムで使える可視化テクニック - Apache HTTP編 -
業務システムで使える可視化テクニック - Apache HTTP編 -業務システムで使える可視化テクニック - Apache HTTP編 -
業務システムで使える可視化テクニック - Apache HTTP編 -Yasuyuki Sugai
 
Caffeの特徴と最近の動向 -CNN、そしてRNNへ-
Caffeの特徴と最近の動向 -CNN、そしてRNNへ-Caffeの特徴と最近の動向 -CNN、そしてRNNへ-
Caffeの特徴と最近の動向 -CNN、そしてRNNへ-Yasuyuki Sugai
 
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-Yasuyuki Sugai
 
第三回デジタルガジェット祭り! LT「ペットとセンサー編」
第三回デジタルガジェット祭り! LT「ペットとセンサー編」第三回デジタルガジェット祭り! LT「ペットとセンサー編」
第三回デジタルガジェット祭り! LT「ペットとセンサー編」Yasuyuki Sugai
 
AITCオープンラボ IoTx総まとめ「IoTxロボット・AI開発をはじめよう!」
AITCオープンラボ IoTx総まとめ「IoTxロボット・AI開発をはじめよう!」AITCオープンラボ IoTx総まとめ「IoTxロボット・AI開発をはじめよう!」
AITCオープンラボ IoTx総まとめ「IoTxロボット・AI開発をはじめよう!」Yasuyuki Sugai
 
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」Yasuyuki Sugai
 
IoTとDeep Learningで自宅警備員を育ててみる
IoTとDeep Learningで自宅警備員を育ててみるIoTとDeep Learningで自宅警備員を育ててみる
IoTとDeep Learningで自宅警備員を育ててみるYasuyuki Sugai
 
IoTハンズオン勉強会 「センサーデータをクラウドに蓄積してみよう」
IoTハンズオン勉強会 「センサーデータをクラウドに蓄積してみよう」IoTハンズオン勉強会 「センサーデータをクラウドに蓄積してみよう」
IoTハンズオン勉強会 「センサーデータをクラウドに蓄積してみよう」Yasuyuki Sugai
 
IoT勉強会「IoTデバイス Intel Edison編」
IoT勉強会「IoTデバイス Intel Edison編」IoT勉強会「IoTデバイス Intel Edison編」
IoT勉強会「IoTデバイス Intel Edison編」Yasuyuki Sugai
 
IoT勉強会「littleBitsとIFTTTで超お手軽IoTクッキング」
IoT勉強会「littleBitsとIFTTTで超お手軽IoTクッキング」IoT勉強会「littleBitsとIFTTTで超お手軽IoTクッキング」
IoT勉強会「littleBitsとIFTTTで超お手軽IoTクッキング」Yasuyuki Sugai
 
IoT勉強会「とりあえずIoT的なものを作ってみた ~センサーデータの測定・収集・蓄積・分析・出力まで~」
IoT勉強会「とりあえずIoT的なものを作ってみた ~センサーデータの測定・収集・蓄積・分析・出力まで~」IoT勉強会「とりあえずIoT的なものを作ってみた ~センサーデータの測定・収集・蓄積・分析・出力まで~」
IoT勉強会「とりあえずIoT的なものを作ってみた ~センサーデータの測定・収集・蓄積・分析・出力まで~」Yasuyuki Sugai
 
AITCクラウド部会 2014年度 これまでの振り返りとこれから
AITCクラウド部会 2014年度 これまでの振り返りとこれからAITCクラウド部会 2014年度 これまでの振り返りとこれから
AITCクラウド部会 2014年度 これまでの振り返りとこれからYasuyuki Sugai
 
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜Yasuyuki Sugai
 
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-Yasuyuki Sugai
 
Hack For Japan 気象データ勉強会
Hack For Japan 気象データ勉強会Hack For Japan 気象データ勉強会
Hack For Japan 気象データ勉強会Yasuyuki Sugai
 
rChartsによるインタラクティブな可視化表現
rChartsによるインタラクティブな可視化表現rChartsによるインタラクティブな可視化表現
rChartsによるインタラクティブな可視化表現Yasuyuki Sugai
 
Yahoo Open Hack Day Japan 2
Yahoo Open Hack Day Japan 2Yahoo Open Hack Day Japan 2
Yahoo Open Hack Day Japan 2Yasuyuki Sugai
 
Vagrant勉強会 チュートリアル編
Vagrant勉強会 チュートリアル編Vagrant勉強会 チュートリアル編
Vagrant勉強会 チュートリアル編Yasuyuki Sugai
 
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜Yasuyuki Sugai
 
RとJavaScript Visualizationを俯瞰しよう
RとJavaScript Visualizationを俯瞰しようRとJavaScript Visualizationを俯瞰しよう
RとJavaScript Visualizationを俯瞰しようYasuyuki Sugai
 

Más de Yasuyuki Sugai (20)

業務システムで使える可視化テクニック - Apache HTTP編 -
業務システムで使える可視化テクニック - Apache HTTP編 -業務システムで使える可視化テクニック - Apache HTTP編 -
業務システムで使える可視化テクニック - Apache HTTP編 -
 
Caffeの特徴と最近の動向 -CNN、そしてRNNへ-
Caffeの特徴と最近の動向 -CNN、そしてRNNへ-Caffeの特徴と最近の動向 -CNN、そしてRNNへ-
Caffeの特徴と最近の動向 -CNN、そしてRNNへ-
 
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
第3回機械学習勉強会「色々なNNフレームワークを動かしてみよう」-Keras編-
 
第三回デジタルガジェット祭り! LT「ペットとセンサー編」
第三回デジタルガジェット祭り! LT「ペットとセンサー編」第三回デジタルガジェット祭り! LT「ペットとセンサー編」
第三回デジタルガジェット祭り! LT「ペットとセンサー編」
 
AITCオープンラボ IoTx総まとめ「IoTxロボット・AI開発をはじめよう!」
AITCオープンラボ IoTx総まとめ「IoTxロボット・AI開発をはじめよう!」AITCオープンラボ IoTx総まとめ「IoTxロボット・AI開発をはじめよう!」
AITCオープンラボ IoTx総まとめ「IoTxロボット・AI開発をはじめよう!」
 
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
 
IoTとDeep Learningで自宅警備員を育ててみる
IoTとDeep Learningで自宅警備員を育ててみるIoTとDeep Learningで自宅警備員を育ててみる
IoTとDeep Learningで自宅警備員を育ててみる
 
IoTハンズオン勉強会 「センサーデータをクラウドに蓄積してみよう」
IoTハンズオン勉強会 「センサーデータをクラウドに蓄積してみよう」IoTハンズオン勉強会 「センサーデータをクラウドに蓄積してみよう」
IoTハンズオン勉強会 「センサーデータをクラウドに蓄積してみよう」
 
IoT勉強会「IoTデバイス Intel Edison編」
IoT勉強会「IoTデバイス Intel Edison編」IoT勉強会「IoTデバイス Intel Edison編」
IoT勉強会「IoTデバイス Intel Edison編」
 
IoT勉強会「littleBitsとIFTTTで超お手軽IoTクッキング」
IoT勉強会「littleBitsとIFTTTで超お手軽IoTクッキング」IoT勉強会「littleBitsとIFTTTで超お手軽IoTクッキング」
IoT勉強会「littleBitsとIFTTTで超お手軽IoTクッキング」
 
IoT勉強会「とりあえずIoT的なものを作ってみた ~センサーデータの測定・収集・蓄積・分析・出力まで~」
IoT勉強会「とりあえずIoT的なものを作ってみた ~センサーデータの測定・収集・蓄積・分析・出力まで~」IoT勉強会「とりあえずIoT的なものを作ってみた ~センサーデータの測定・収集・蓄積・分析・出力まで~」
IoT勉強会「とりあえずIoT的なものを作ってみた ~センサーデータの測定・収集・蓄積・分析・出力まで~」
 
AITCクラウド部会 2014年度 これまでの振り返りとこれから
AITCクラウド部会 2014年度 これまでの振り返りとこれからAITCクラウド部会 2014年度 これまでの振り返りとこれから
AITCクラウド部会 2014年度 これまでの振り返りとこれから
 
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
 
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-
 
Hack For Japan 気象データ勉強会
Hack For Japan 気象データ勉強会Hack For Japan 気象データ勉強会
Hack For Japan 気象データ勉強会
 
rChartsによるインタラクティブな可視化表現
rChartsによるインタラクティブな可視化表現rChartsによるインタラクティブな可視化表現
rChartsによるインタラクティブな可視化表現
 
Yahoo Open Hack Day Japan 2
Yahoo Open Hack Day Japan 2Yahoo Open Hack Day Japan 2
Yahoo Open Hack Day Japan 2
 
Vagrant勉強会 チュートリアル編
Vagrant勉強会 チュートリアル編Vagrant勉強会 チュートリアル編
Vagrant勉強会 チュートリアル編
 
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜
 
RとJavaScript Visualizationを俯瞰しよう
RとJavaScript Visualizationを俯瞰しようRとJavaScript Visualizationを俯瞰しよう
RとJavaScript Visualizationを俯瞰しよう
 

Último

Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfAarwolf Industries LLC
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentMahmoud Rabie
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Karmanjay Verma
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
QMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfQMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfROWELL MARQUINA
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
WomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyoneWomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyoneUiPathCommunity
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 

Último (20)

Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 
Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career Development
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
QMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdfQMMS Lesson 2 - Using MS Excel Formula.pdf
QMMS Lesson 2 - Using MS Excel Formula.pdf
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
WomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyoneWomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyone
 
Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 

AnsibleではじめるNW設定の自動化について - Cisco(VIRL)編 -

  • 2. - 非ネットワークエンジニア:
 - サーバ・インフラ/アプリケーション側の人 - お仕事柄、NW関係に携わることが多い: - NWの構成管理,自動設定, SDN etc.. - NW技術が好き - 最近のつらみ: Java有償化 https://www.facebook.com/yasuyuki.sugai よろしくお願いしまーす ※この資料の内容は、 個人の見解です 自己紹介 菅井 康之 2
  • 17.
  • 18. 18
  • 20. 20
  • 22. 22
  • 24.
  • 27. 27
  • 28. 28
  • 30. 30
  • 33. 33 172.16.1.200 core-sw 172.16.1.210 edge-sw-a 172.16.1.220 edge-sw-b 172.16.1.230 edge-sw-c 172.16.1.110 server-1 172.16.1.120 server-2 172.16.1.130 server-3 172.16.1.140 server-4
  • 34. 34 fatal: [172.16.1.30]: FAILED! => {"msg": "paramiko: The authenticity of host 'XXXX' can't be established.nThe ssh-rsa key fingerprint is XXXX."}
  • 38. 38
  • 39. 39 https://docs.ansible.com/ansible/2.6/modules/nxos_vlan_module.html - hosts: core-sw_nxos tasks: - name: Create vlan nxos_vlan: vlan_id: 120 name: test-vlan state: present
  • 40. 40 $ ansible-playbook -i inventory vlan_for_nxos.yml -vvv PLAYBOOK: vlan_for_nxos.yml ************ 1 plays in vlan_for_nxos.yml PLAY [core-sw_nxos] ******************** TASK [Gathering Facts] ***************** ok: [core-sw] TASK [Create vlan] ********************* changed: [core-sw] => { "changed": true, "commands": [ "vlan 120", "name test-vlan", "state active", "no shutdown", "exit" ], PLAY RECAP ***************************** core-sw : ok=2 changed=1 unreachable=0 failed=0
  • 41. 41 core-sw# show running-config : vlan 1,120 vlan 120 name test-vlan : $ ansible-playbook -i inventory vlan_for_nxos.yml -vvv PLAY RECAP ******************************************************************** core-sw : ok=2 changed=0 unreachable=0 failed=0
  • 42. 42
  • 44. 44 - hosts: core-sw_nxos tasks: - name: Create vlan v2 nxos_vlan: vlan_id: 130 name: test-vlan2 interfaces: - Ethernet3/1 state: present core-sw# show running-config : interface Ethernet3/1 shutdown no switchport mac-address 0000.0000.002f :
  • 45. 45 $ ansible-playbook -i inventory vlan_for_nxos_v2.yml -vvv PLAYBOOK: vlan_for_nxos_v2.yml **************************************** 1 plays in vlan_for_nxos_v2.yml PLAY [core-sw_nxos] *************************************************** TASK [Gathering Facts] ************************************************ ok: [core-sw] TASK [Create vlan v2] ************************************************* changed: [core-sw] => { "changed": true, "commands": [ "vlan 130", "name test-vlan2", "state active", "no shutdown", "exit", "interface Ethernet3/1", "switchport", "switchport mode access", "switchport access vlan 130" ], PLAY RECAP ************************************************************ core-sw : ok=2 changed=1 unreachable=0 failed=0
  • 46. 46 core-sw# show running-config : vlan 1,120,130 vlan 120 name test-vlan vlan 130 name test-vlan2 : interface Ethernet3/1 shutdown switchport switchport access vlan 130 :
  • 47. 47 https://docs.ansible.com/ansible/2.6/modules/nxos_l2_interface_module.html - hosts: core-sw_nxos tasks: - name: mode to tagged port nxos_l2_interface: name: Ethernet3/2 mode: trunk trunk_allowed_vlans: 130
  • 48. 48 $ ansible-playbook -i inventory l2port_for_nxos.yml -vvv PLAYBOOK: l2port_for_nxos.yml ************************************ 1 plays in l2port_for_nxos.yml PLAY [core-sw_nxos] ********************************************** TASK [Gathering Facts] ******************************************* ok: [core-sw] TASK [mode to tagged port] *************************************** fatal: [core-sw]: FAILED! => { "changed": false, "msg": "Ensure interface is configured to be a L2nport first before using this module. You can usenthe nxos_interface module for this." } PLAY RECAP ******************************************************* core-sw : ok=1 changed=0 unreachable=0 failed=1
  • 49. 49 - hosts: core-sw_nxos tasks: - name: mode to layer2 nxos_interface: name: Ethernet3/2 mode: layer2 - name: mode to tagged port nxos_l2_interface: name: Ethernet3/2 mode: trunk trunk_allowed_vlans: 130 core-sw# show running-config : interface Ethernet3/2 shutdown no switchport mac-address 0000.0000.002f : 

  • 50. 50 $ ansible-playbook -i inventory l2port_for_nxos_v2.yml -vvv PLAYBOOK: l2port_for_nxos_v2.yml ***************************************************** 1 plays in l2port_for_nxos_v2.yml PLAY [core-sw_nxos] ****************************************************************** TASK [Gathering Facts] *************************************************************** ok: [core-sw] TASK [mode to layer2] **************************************************************** changed: [core-sw] => { "changed": true, "commands": [ "interface Ethernet3/2", "switchport", "no shutdown", "interface Ethernet3/2", "no shutdown" ], TASK [mode to tagged port] *********************************************************** changed: [core-sw] => { "changed": true, "commands": [ "interface ethernet3/2", "switchport mode trunk", "switchport trunk allowed vlan 130" ], PLAY RECAP *************************************************************************** core-sw : ok=3 changed=2 unreachable=0 failed=0
  • 51. 51 core-sw# show running-config : interface Ethernet3/2 switchport switchport mode trunk switchport trunk allowed vlan 130 no shutdown : PLAY RECAP ********************************************************************* core-sw : ok=3 changed=0 unreachable=0 failed=0
  • 52. 52
  • 53. 53 https://docs.ansible.com/ansible/2.6/modules/ios_vlan_module.html - hosts: edge-sw_ios tasks: - name: Create vlan ios_vlan: vlan_id: 120 name: test-vlan interfaces: - GigabitEthernet0/4 state: present
  • 54. 54 $ ansible-playbook -i inventory vlan_for_ios.yml -vvv PLAYBOOK: vlan_for_ios.yml ********************************************** 1 plays in vlan_for_ios.yml PLAY [edge-sw_ios] ****************************************************** TASK [Gathering Facts] ************************************************** ok: [edge-sw-a] TASK [Create vlan] ****************************************************** changed: [edge-sw-a] => { "changed": true, "commands": [ "vlan 120", "name test-vlan", "interface GigabitEthernet0/4", "switchport mode access", "switchport access vlan 120" ], PLAY RECAP ************************************************************** edge-sw-a : ok=2 changed=1 unreachable=0 failed=0
  • 55. 55 edge-sw-a#show running-config : interface GigabitEthernet0/4 switchport access vlan 120 switchport mode access media-type rj45 negotiation auto : PLAY RECAP ************************************************************* edge-sw-a : ok=2 changed=0 unreachable=0 failed=0 interface GigabitEthernet0/4 media-type rj45 negotiation auto
  • 56. 56
  • 57. 57 https://docs.ansible.com/ansible/2.6/modules/ios_l2_interface_module.html - hosts: edge-sw_ios tasks: - name: mode to tagged port ios_l2_interface: name: GigabitEthernet0/5 mode: trunk trunk_allowed_vlans: 120
  • 58. 58 $ ansible-playbook -i inventory l2port_for_ios.yml -vvv PLAYBOOK: l2port_for_ios.yml ***************************************************** 1 plays in l2port_for_ios.yml PLAY [edge-sw_ios] *************************************************************** TASK [Gathering Facts] *********************************************************** ok: [edge-sw-a] TASK [mode to tagged port] ******************************************************* changed: [edge-sw-a] => { "changed": true, "commands": [ "interface gigabitethernet0/5", "switchport mode trunk", "switchport trunk allowed vlan 120" ], PLAY RECAP *********************************************************************** edge-sw-a : ok=2 changed=1 unreachable=0 failed=0
  • 59. 59 edge-sw-a#show running-config : interface GigabitEthernet0/5 switchport trunk allowed vlan 120 media-type rj45 negotiation auto :
  • 60. 60 - hosts: edge-sw_ios tasks: - name: encapsulation dot1q ios_config: lines: - switchport trunk encapsulation dot1q parents: interface GigabitEthernet0/5 - name: mode to tagged port ios_l2_interface: name: GigabitEthernet0/5 mode: trunk trunk_allowed_vlans: 120
  • 61. 61 $ ansible-playbook -i inventory l2port_for_ios_v2.yml -vvv PLAYBOOK: l2port_for_ios_v2.yml ********************************************* 1 plays in l2port_for_ios_v2.yml PLAY [edge-sw_ios] ********************************************************** TASK [Gathering Facts] ****************************************************** ok: [edge-sw-a] TASK [encapsulation dot1q] ************************************************** changed: [edge-sw-a] => { "changed": true, "commands": [ "interface GigabitEthernet0/5", "switchport trunk encapsulation dot1q" ], TASK [mode to tagged port] ************************************************* changed: [edge-sw-a] => { "changed": true, "commands": [ "interface gigabitethernet0/5", "switchport mode trunk" ], PLAY RECAP ***************************************************************** edge-sw-a : ok=3 changed=2 unreachable=0 failed=0
  • 62. 62 edge-sw-a#show running-config : interface GigabitEthernet0/5 switchport trunk allowed vlan 120 switchport trunk encapsulation dot1q switchport mode trunk media-type rj45 negotiation auto :
  • 66. 66
  • 73. 73
  • 77. 77
  • 78. 78 $ ansible-playbook -i inventory add_edge_for_edge_sw.yml PLAY [configuration add edge-sw for edge-sw] *********************************************************************************************************************************** TASK [Gathering Facts] ****************************************************************************************************************************************************** ok: [edge-sw-a] ok: [edge-sw-b] ok: [edge-sw-c] TASK [Create dummy vlan] ******************************************************************************************************************************************************* changed: [edge-sw-a] changed: [edge-sw-b] changed: [edge-sw-c] TASK [upport initialize] ******************************************************************************************************************************************************* changed: [edge-sw-a] changed: [edge-sw-b] changed: [edge-sw-c] TASK [upport mode to tagged port] ********************************************************************************************************************************************** changed: [edge-sw-a] changed: [edge-sw-b] changed: [edge-sw-c] PLAY RECAP ******************************************************************************************************************************************************* ************** edge-sw-a : ok=4 changed=3 unreachable=0 failed=0 edge-sw-b : ok=4 changed=3 unreachable=0 failed=0 edge-sw-c : ok=4 changed=3 unreachable=0 failed=0
  • 79. 79 $ ansible-playbook -i inventory add_edge_for_edge_sw.yml PLAY [configuration add edge-sw for edge-sw] *********************************************************************************************************************************** TASK [Gathering Facts] ****************************************************************************************************************************************************** ok: [edge-sw-a] ok: [edge-sw-b] ok: [edge-sw-c] TASK [Create dummy vlan] ******************************************************************************************************************************************************* ok: [edge-sw-a] ok: [edge-sw-b] ok: [edge-sw-c] TASK [upport initialize] ******************************************************************************************************************************************************* ok: [edge-sw-a] ok: [edge-sw-b] ok: [edge-sw-c] TASK [upport mode to tagged port] ********************************************************************************************************************************************** ok: [edge-sw-a] ok: [edge-sw-b] ok: [edge-sw-c] PLAY RECAP ******************************************************************************************************************************************************* ************** edge-sw-a : ok=4 changed=0 unreachable=0 failed=0 edge-sw-b : ok=4 changed=0 unreachable=0 failed=0 edge-sw-c : ok=4 changed=0 unreachable=0 failed=0 冪等性確認
  • 80. 80 $ ansible-playbook -i inventory add_edge_for_core-sw.yml PLAY [configuration add edge-sw for core-sw] ****************************************************************************************************************** TASK [Gathering Facts] ****************************************************************************************************************** ok: [core-sw] TASK [Create dummy vlan] ****************************************************************************************************************** changed: [core-sw] TASK [downport mode to layer2] ****************************************************************************************************************** changed: [core-sw] PLAY RECAP ****************************************************************************************************************** core-sw : ok=3 changed=2 unreachable=0 failed=0
  • 81. 81 $ ansible-playbook -i inventory add_edge_for_core-sw.yml PLAY [configuration add edge-sw for core-sw] ****************************************************************************************************************** TASK [Gathering Facts] ****************************************************************************************************************** ok: [core-sw] TASK [Create dummy vlan] ****************************************************************************************************************** ok: [core-sw] TASK [downport mode to layer2] ****************************************************************************************************************** ok: [core-sw] PLAY RECAP ****************************************************************************************************************** core-sw : ok=3 changed=0 unreachable=0 failed=0 冪等性確認
  • 82. 82 $ ansible-playbook -i inventory provisioning_for_edge-sw.yml PLAY [configuration provisioning for edge-sw] ********************************************************************************************************************************** TASK [Gathering Facts] ********************************************************************************************************************************************************* ok: [edge-sw-a] TASK [add vlan] **************************************************************************************************************************************************************** changed: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}]) changed: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}]) TASK [description server name] ************************************************************************************************************************************************* skipping: [edge-sw-b] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}]) skipping: [edge-sw-b] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}]) changed: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}]) changed: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}]) TASK [allowed trunk vlan] ****************************************************************************************************************************************************** changed: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}]) skipping: [edge-sw-b] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}]) : PLAY RECAP ********************************************************************************************************************************************************************* edge-sw-a : ok=4 changed=3 unreachable=0 failed=0 数が多いので、1ノード分だけ+一部省略
  • 83. 83 $ ansible-playbook -i inventory provisioning_for_edge-sw.yml PLAY [configuration provisioning for edge-sw] ********************************************************************************************************************************** TASK [Gathering Facts] ********************************************************************************************************************************************************* ok: [edge-sw-a] TASK [add vlan] **************************************************************************************************************************************************************** ok: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}]) ok: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}]) TASK [description server name] ************************************************************************************************************************************************* skipping: [edge-sw-b] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}]) skipping: [edge-sw-b] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}]) ok: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}]) ok: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}]) TASK [allowed trunk vlan] ****************************************************************************************************************************************************** ok: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}]) skipping: [edge-sw-b] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}]) skipping: [edge-sw-a] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}]) : PLAY RECAP ********************************************************************************************************************************************************************* edge-sw-a : ok=4 changed=0 unreachable=0 failed=0 冪等性確認 whenで対象にならない変数の組み合わせはskippingされます。 変数見て正しいか目視でも確認可能。
  • 84. 84 $ ansible-playbook -i inventory provisioning_for_core-sw.yml PLAY [configuration provisioning for core-sw] ********************************************************************************************************************************** TASK [Gathering Facts] ********************************************************************************************************************************************************* ok: [core-sw] TASK [add vlan] **************************************************************************************************************************************************************** changed: [core-sw] => (item={u'vlan': 10, u'name': u'serviceA'}) changed: [core-sw] => (item={u'vlan': 20, u'name': u'serviceB'}) TASK [allowed trunk vlan] ****************************************************************************************************************************************************** changed: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}]) changed: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}]) changed: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}]) changed: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}]) PLAY RECAP ********************************************************************************************************************************************************************* core-sw : ok=3 changed=2 unreachable=0 failed=0
  • 85. 85 $ ansible-playbook -i inventory provisioning_for_core-sw.yml PLAY [configuration provisioning for core-sw] ********************************************************************************************************************************** TASK [Gathering Facts] ********************************************************************************************************************************************************* ok: [core-sw] TASK [add vlan] **************************************************************************************************************************************************************** ok: [core-sw] => (item={u'vlan': 10, u'name': u'serviceA'}) ok: [core-sw] => (item={u'vlan': 20, u'name': u'serviceB'}) TASK [allowed trunk vlan] ****************************************************************************************************************************************************** ok: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}]) ok: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}]) skipping: [core-sw] => (item=[{u'vlan': 10, u'name': u'serviceA'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-1', u'service': u'serviceA', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}]) ok: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/3', u'name': u'server-2', u'service': u'serviceB', u'edge_sw': u'edge-sw-a'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-3', u'service': u'serviceA', u'edge_sw': u'edge-sw-b'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/1', u'edge_sw': u'edge-sw-a'}]) skipping: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/2', u'edge_sw': u'edge-sw-b'}]) ok: [core-sw] => (item=[{u'vlan': 20, u'name': u'serviceB'}, {u'port': u'GigabitEthernet0/2', u'name': u'server-4', u'service': u'serviceB', u'edge_sw': u'edge-sw-c'}, {u'port': u'Ethernet2/3', u'edge_sw': u'edge-sw-c'}]) PLAY RECAP ********************************************************************************************************************************************************************* core-sw : ok=3 changed=0 unreachable=0 failed=0 冪等性確認
  • 86. 86 core-sw#show running-config : vlan 1,10,20,99 vlan 10 name Vlan_serviceA" vlan 20 name Vlan_serviceB" vlan 99 name dummy-Vlan" : interface Ethernet2/1 description connect to edge-sw-a switchport switchport mode trunk switchport trunk allowed vlan 10,20,99 no shutdown interface Ethernet2/2 description connect to edge-sw-b switchport switchport mode trunk switchport trunk allowed vlan 10,99 no shutdown interface Ethernet2/3 description connect to edge-sw-c switchport switchport mode trunk switchport trunk allowed vlan 20,99 no shutdown : edge-sw-a#show running-config : interface GigabitEthernet0/1 description connect to core-sw switchport trunk allowed vlan 10,20,99 switchport trunk encapsulation dot1q switchport mode trunk media-type rj45 negotiation auto ! interface GigabitEthernet0/2 description connect to server-1 switchport access vlan 10 switchport mode access media-type rj45 negotiation auto ! interface GigabitEthernet0/3 description connect to server-2 switchport access vlan 20 switchport mode access media-type rj45 negotiation auto ! : なんだかんだで想定通りに設定できました edge-sw-b,edge-sw-cは割愛