NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso ...
Transcript of NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso ...
![Page 1: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/1.jpg)
NETWORK AUTOMATION TUTORIALDavid Barroso <[email protected]>
![Page 2: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/2.jpg)
Press and to change sections. Press and
to move within sections. Press anytime for help.
HOW TO NAVIGATE THIS TUTORIAL?left right up down
?
![Page 3: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/3.jpg)
• Network Systems Engineer at Fastly
• Previously:
- Network Engineer at Spotify
- Network Engineer at NTT
- Network & Systems Engineer at Atlas IT
• Creator of:
-
-
N.A.P.A.L.M.
SDN Internet RouterTwitter | Linkedin | Github@dbarrosop
![Page 4: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/4.jpg)
AGENDA• Lab preparation
• Hello world
• Abstract Vendor Interfaces
• Abstract Vendor Configurations
• Data-Driven Configuration
• Data-Driven Configuration with a Backend
• Abstractions
![Page 5: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/5.jpg)
LAB PREPARATIONLink to the code on github
![Page 6: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/6.jpg)
OBJECTIVES• Install all of the python requirements
• Start the devices on your lab
![Page 7: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/7.jpg)
INSTALLING PYTHON REQUIREMENTS
![Page 8: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/8.jpg)
STARTING THE LAB
![Page 9: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/9.jpg)
1 - HELLO WORLDLink to the code on github
![Page 10: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/10.jpg)
Learn how to connect to different devices, such as
the serial number or the device model and how to
using their respective .
OBJECTIVESgather data
manipulatethe device configuration APIs
![Page 11: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/11.jpg)
![Page 12: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/12.jpg)
JUNOS - RETRIEVING FACTS>>> from jnpr.junos import Device >>> import pprint >>> pp = pprint.PrettyPrinter(indent=4) >>> >>> junos = Device(host='127.0.0.1', user='vagrant', port=12203) >>> junos.open() Device(127.0.0.1) >>> junos_facts = junos.facts >>> pp.pprint(junos_facts) { '2RE': False, 'HOME': '/cf/var/home/vagrant', 'RE0': { 'last_reboot_reason': 'Router rebooted after a normal shutdown.', 'model': 'FIREFLY-PERIMETER RE', 'status': 'Testing', 'up_time': '3 minutes, 36 seconds'}, 'domain': None, 'fqdn': 'vsrx', 'hostname': 'vsrx', 'model': 'FIREFLY-PERIMETER', 'personality': 'SRX_BRANCH', 'serialnumber': '5b2b599a283b', 'srx_cluster': False, 'version': '12.1X47-D20.7', 'version_info': junos.version_info(major=(12, 1), type=X, minor=(47, 'D', 20), build=7), 'virtual': True} >>> junos.close()
![Page 13: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/13.jpg)
EOS - RETRIEVING FACTS>>> import pyeapi >>> import pprint >>> pp = pprint.PrettyPrinter(indent=4) >>> connection = pyeapi.client.connect(transport='https', host='127.0.0.1', username='vagrant', ... password='vagrant', port=12443,) >>> eos = pyeapi.client.Node(connection) >>> eos_facts = eos.run_commands(['show version']) >>> pp.pprint(eos_facts) [ { u'architecture': u'i386', u'bootupTimestamp': 1475859369.15, u'hardwareRevision': u'', u'internalBuildId': u'e796e94c-ba3b-4355-afcf-ef0abfbfaee3', u'internalVersion': u'4.16.6M-3205780.4166M', u'isIntlVersion': False, u'memFree': 56204, u'memTotal': 1897596, u'modelName': u'vEOS', u'serialNumber': u'', u'systemMacAddress': u'08:00:27:52:27:ce', u'version': u'4.16.6M'}]
![Page 14: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/14.jpg)
JUNOS - CHANGING THE HOSTNAME>>> from jnpr.junos import Device >>> from jnpr.junos.utils.config import Config >>> >>> junos = Device(host='127.0.0.1', user='vagrant', port=12203) >>> junos.open() Device(127.0.0.1) >>> >>> print(junos.facts['hostname']) vsrx >>> junos.bind(cu=Config) >>> junos.cu.lock() True >>> junos.cu.load("system {host-name new-hostname;}", format="text", merge=True) >>> junos.cu.commit() True >>> junos.cu.unlock() True >>> junos.facts_refresh() >>> print(junos.facts['hostname']) new-hostname >>> junos.close()
![Page 15: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/15.jpg)
EOS - CHANGING THE HOSTNAME>>> import pyeapi >>> connection = pyeapi.client.connect( ... transport='https', ... host='127.0.0.1', ... username='vagrant', ... password='vagrant', ... port=12443, ... ) >>> eos = pyeapi.client.Node(connection) >>> print(eos.run_commands(['show hostname'])[0]['hostname']) localhost >>> eos.run_commands(['configure', 'hostname a-new-hostname']) [{}, {}] >>> print(eos.run_commands(['show hostname'])[0]['hostname']) a-new-hostname
![Page 16: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/16.jpg)
SUMMARY• Different devices have different APIs
• Different APIs behave differently so code is different
• Similar methods may return similar but different data
structures and with different formats
![Page 17: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/17.jpg)
2 - ABSTRACT VENDOR INTERFACESLink to the code on github
![Page 18: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/18.jpg)
Learn how to use to . The code
we will produce in this section will have the same functionality
as in the previous section, however, it will work across different
vendors.
OBJECTIVESnapalm abstract vendor's APIs
![Page 19: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/19.jpg)
![Page 20: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/20.jpg)
NAPALM - RETRIEVING FACTS>>> from napalm_base import get_network_driver >>> import pprint >>> pp = pprint.PrettyPrinter(indent=4) >>> >>> junos_driver = get_network_driver('junos') >>> eos_driver = get_network_driver('eos') >>> >>> junos_configuration = { ... 'hostname': '127.0.0.1', ... 'username': 'vagrant', ... 'password': '', ... 'optional_args': {'port': 12203} ... } >>> >>> eos_configuration = { ... 'hostname': '127.0.0.1', ... 'username': 'vagrant', ... 'password': 'vagrant', ... 'optional_args': {'port': 12443} ... } >>>
>>> with junos_driver(**junos_configuration) as junos: ... pp.pprint(junos.get_facts()) ... { 'fqdn': u'new-hostname', 'hostname': u'new-hostname', 'interface_list': [ 'ge-0/0/0', 'gr-0/0/0', 'lt-0/0/0', 'mt-0/0/0', 'vlan'], 'model': u'FIREFLY-PERIMETER', 'os_version': u'12.1X47-D20.7',
'serial_number': u'5b2b599a283b', 'uptime': 1080, 'vendor': u'Juniper'} >>> >>> with eos_driver(**eos_configuration) as eos: ... pp.pprint(eos.get_facts()) ... { 'fqdn': u'a-new-hostname', 'hostname': u'a-new-hostname', 'interface_list': [u'Ethernet1', u'Ethernet2', u'Management1'], 'model': u'vEOS', 'os_version': u'4.16.6M-3205780.4166M', 'serial_number': u'', 'uptime': 1217, 'vendor': u'Arista'}
![Page 21: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/21.jpg)
NAPALM - CHANGING THE HOSTNAME>>> from napalm_base import get_network_driver >>> junos_driver = get_network_driver('junos') >>> eos_driver = get_network_driver('eos') >>> >>> junos_configuration = { ... 'hostname': '127.0.0.1', ... 'username': 'vagrant', ... 'password': '', ... 'optional_args': {'port': 12203} ... } >>> >>> eos_configuration = { ... 'hostname': '127.0.0.1', ... 'username': 'vagrant', ... 'password': 'vagrant', ... 'optional_args': {'port': 12443} ... } >>> >>> def change_configuration(device, configuration): ... device.load_merge_candidate(config=configuration) ... print(device.compare_config()) ... device.commit_config() ... >>>
![Page 22: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/22.jpg)
NAPALM - CHANGING THE HOSTNAME (CONT'D)>>> with junos_driver(**junos_configuration) as junos: ... change_configuration( ... junos, ... "system {host-name yet-another-hostname;}"... ) ... [edit system] - host-name new-hostname; + host-name yet-another-hostname; >>> >>> with junos_driver(**junos_configuration) as junos: ... change_configuration( ... junos, ... "system {host-name yet-another-hostname;}"... ) ... >>>
>>> with eos_driver(**eos_configuration) as eos: ... change_configuration( ... eos, ... 'hostname yet-another-hostname' ... )
... @@ -8,7 +8,7 @@ ! transceiver qsfp default-mode 4x10G ! -hostname a-new-hostname +hostname yet-another-hostname ! spanning-tree mode mstp ! >>> >>> with eos_driver(**eos_configuration) as eos: ... change_configuration( ... eos, ... 'hostname yet-another-hostname' ... ) ... >>>
Changes are idempotent
![Page 23: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/23.jpg)
SUMMARY• NAPALM allows you to write code that works across
vendors; workflows and data retrieval are unified across
platforms
• Configuration syntax is still vendor dependent (YANG
support is under progress)
• Configuration changes are idempotent
![Page 24: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/24.jpg)
3 - ABSTRACT VENDORCONFIGURATIONSLink to the code on github
![Page 25: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/25.jpg)
Learn how to use and templates to
and focus on the parameters to change
OBJECTIVESansible jinja2 abstract
configuration syntax
![Page 26: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/26.jpg)
![Page 27: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/27.jpg)
ANSIBLE - GETTING INFORMATION - PLAYBOOK--- - name: "Get facts" hosts: all connection: local gather_facts: no vars: tasks: - name: "get facts from device" napalm_get_facts: hostname: "{{ host }}" username: "{{ user }}" dev_os: "{{ os }}" password: "{{ password }}" optional_args: port: "{{ port }}" filter: ['facts'] register: napalm_facts - name: Facts debug: msg: "{{ napalm_facts.ansible_facts.facts|to_nice_json }}" tags: [print_action]
![Page 28: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/28.jpg)
ANSIBLE - GETTING INFORMATION - RUN (1)
![Page 29: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/29.jpg)
ANSIBLE - GETTING INFORMATION - RUN (2)
![Page 30: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/30.jpg)
ANSIBLE - CHANGING CONFIG - DATA➜ cat hosts[all] rtr00 os=eos host=127.0.0.1 user=vagrant password=vagrant port=12443 rtr01 os=junos host=127.0.0.1 user=vagrant password="" port=12203
➜ cat group_vars/all.yml--- ansible_python_interpreter: "/usr/bin/env python" domain: acme.com
➜ cat host_vars/rtr00.yml--- hostname: thehostnama
➜ cat host_vars/rtr01.yml--- hostname: another-host
![Page 31: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/31.jpg)
ANSIBLE - CHANGING CONFIG - TEMPLATES➜ cat templates/eos/simple.j2hostname {{ hostname }} ip domain-name {{ domain }}
➜ cat templates/junos/simple.j2system { host-name {{ hostname}}; domain-name {{ domain }}; }
![Page 32: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/32.jpg)
ANSIBLE - CHANGING CONFIG - PLAYBOOK--- tasks: - name: A simple template with some configuration template: src: "{{ os }}/simple.j2" dest: "{{ host_dir }}/simple.conf" changed_when: False when: commit_changes == 0 - name: Load configuration into the device napalm_install_config: hostname: "{{ host }}" username: "{{ user }}" dev_os: "{{ os }}" password: "{{ password }}" optional_args: port: "{{ port }}" config_file: "{{ host_dir }}/simple.conf" commit_changes: "{{ commit_changes }}" replace_config: false get_diffs: True diff_file: "{{ host_dir }}/diff" tags: [print_action]
![Page 33: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/33.jpg)
ANSIBLE - CHANGING CONFIG - DRY-RUN
![Page 34: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/34.jpg)
ANSIBLE - CHANGING CONFIG - COMMIT
![Page 35: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/35.jpg)
ANSIBLE - CHANGING CONFIG - COMMIT (2)
Changes are idempotent
![Page 36: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/36.jpg)
SUMMARY1. We used ansible as our framework to build our configuration
management system
2. We stored variables in YAML3. We used jinja2 templates to translate variables into device
configuration
4. We leveraged on NAPALM to seamlessly deploy the resulting
configuration and to gather information
![Page 37: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/37.jpg)
4 - DATA-DRIVEN CONFIGURATIONLink to the code on github
![Page 38: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/38.jpg)
We are going to leverage on what we have learnt so far to build
an IP fabric using to drive the
configuration.
OBJECTIVES
vendor-agnostic data
![Page 39: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/39.jpg)
![Page 40: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/40.jpg)
D-D - CHANGING CONFIG - DATA➜ cat host_vars/rtr00.yml--- hostname: rtr00 asn: 65000 router_id: "1.1.1.100" interfaces: - name: "lo0" ip_address: "2001:db8:b33f::100/128" - name: "et1" ip_address: "2001:db8:caf3:1::/127" - name: "et2" ip_address: "2001:db8:caf3:2::/127" peers: - ip: "2001:db8:caf3:1::1" asn: 65001 - ip: "2001:db8:caf3:2::1" asn: 65001
➜ cat host_vars/rtr01.yml--- hostname: rtr01 asn: 65001 router_id: "1.1.1.101" interfaces: - name: "lo0" ip_address: "2001:db8:b33f::101/128" - name: "ge-0/0/1"
ip_address: "2001:db8:caf3:1::1/127" - name: "ge-0/0/2" ip_address: "2001:db8:caf3:2::1/127" peers: - ip: "2001:db8:caf3:1::" asn: 65000 - ip: "2001:db8:caf3:2::" asn: 65000
➜ cat hosts[all] rtr00 os=eos host=127.0.0.1 user=vagrant password=vagrant port=12443 rtr01 os=junos host=127.0.0.1 user=vagrant password="" port=12203
![Page 41: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/41.jpg)
D-D CHANGING CONFIG - TEMPLATES➜ cat (...)/templates/eos/ipfabric.j2ipv6 unicast-routing {% for interface in interfaces %} default interface {{ interface.name }} interface {{ interface.name }} {{ 'no switchport' if not interface.name.startswith("lo") else "" }} ipv6 address {{ interface.ip_address }} {% endfor %} route-map EXPORT-LO0 permit 10 match interface Loopback0 no router bgp router bgp {{ asn }} router-id {{ router_id }} redistribute connected route-map EXPORT-LO0 {% for peer in peers %} neighbor {{ peer.ip }} remote-as {{ peer.asn }} address-family ipv6 neighbor {{ peer.ip }} activate {% endfor %}
➜ cat (...)/templates/junos/ipfabric.j2{% for interface in interfaces %} interfaces { replace: {{ interface.name }} { unit 0 { family inet6 { address {{ interface.ip_address }}; } } } } {% endfor %} routing-options { router-id {{ router_id }}; autonomous-system {{ asn }}; } policy-options { policy-statement EXPORT_LO0 { from interface lo0.0; then accept; } policy-statement PERMIT_ALL { from protocol bgp; then accept; } }
![Page 42: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/42.jpg)
D-D CHANGING CONFIG - PLAYBOOK... - name: Basic Configuration hosts: all connection: local roles: - base - name: Fabric Configuration hosts: all connection: local roles: - ipfabric ...
➜ tree roles ├── base │ ├── tasks │ │ └── main.yml │ └── templates │ ├── eos │ │ └── simple.j2 │ └── junos │ └── simple.j2 └── ipfabric ├── tasks │ └── main.yml └── templates ├── eos │ └── ipfabric.j2
└── junos └── ipfabric.j2
![Page 43: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/43.jpg)
D-D CHANGING CONFIG - RUN (1)
![Page 44: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/44.jpg)
D-D CHANGING CONFIG - RUN (2)
![Page 45: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/45.jpg)
D-D CHANGING CONFIG - RUN (3)
![Page 46: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/46.jpg)
D-D CHANGING CONFIG - RUN (4)
![Page 47: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/47.jpg)
D-D VERIFYING BGP STATE - PLAYBOOK- name: "get facts from device" napalm_get_facts: hostname: "{{ host }}" username: "{{ user }}" dev_os: "{{ os }}" password: "{{ password }}" optional_args: port: "{{ port }}" filter: ['bgp_neighbors'] register: napalm_facts - name: "Check BGP sessions are healthy" assert: that: - item.value.is_up msg: "{{ item.key }} is down" with_dict: "{{ napalm_facts.ansible_facts.bgp_neighbors.global.peers }}" - name: "Check BGP sessions are receiving prefixes" assert: that: - item.value.address_family.ipv6.received_prefixes > 0 msg: "{{ item.key }} is not receiving any prefixes" with_dict: "{{ napalm_facts.ansible_facts.bgp_neighbors.global.peers }}"
![Page 48: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/48.jpg)
D-D VERIFYING BGP STATE - RUN (1)
![Page 49: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/49.jpg)
D-D VERIFYING BGP STATE - RUN (2)
Maybe a faulty policy or missing communities?
![Page 50: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/50.jpg)
D-D VERIFYING BGP STATE - RUN (3)
Most probably a faulty link
![Page 51: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/51.jpg)
D-D VERIFYING BGP STATE - RUN (4)
Looks fine but it is not, there is a link with no BGP session configured
![Page 52: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/52.jpg)
SUMMARY• We leveraged on what we learnt so far to build something
more complex
• Storing data in static files makes them hard to manipulate
but it's great for mocking new services or for data that
doesn't change often or doesn't need to be queried
• We verified state of the network using the network as
source of truth rather than using our knowledge about the
network
![Page 53: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/53.jpg)
5 - DATA DRIVEN CONFIGURATION WITHA BACKEND
Link to the code on github
![Page 54: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/54.jpg)
Similar to the previous scenario, however, this time we will use
a backend to store and manipulate the data.
OBJECTIVES
![Page 55: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/55.jpg)
![Page 56: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/56.jpg)
DDB - BEFORE WE BEGIN - START NSOT VM
![Page 57: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/57.jpg)
DDB - BEFORE WE BEGIN - START NSOT
![Page 58: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/58.jpg)
DDB - BEFORE WE BEGIN - GATHER NSOT TOKEN
![Page 59: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/59.jpg)
DDB - BEFORE WE BEGIN - NSOT CLIENT CONF~/.pynsotrc[pynsot] url = http://localhost:8990/api secret_key = 3AvRKqff0uuFT0d44ecqHIman31HPAcQ_nTLcF0m_uA= # Token auth_method = auth_token email = [email protected]
Make sure you replace the secret_key with the token you gathered in the previous step.
![Page 60: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/60.jpg)
DDB - BEFORE WE BEGIN - CREATE THE DATA
![Page 61: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/61.jpg)
DDB - BEFORE WE BEGIN - VERIFY THE DATA (1)
![Page 62: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/62.jpg)
DDB - BEFORE WE BEGIN - VERIFY THE DATA (2)
![Page 63: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/63.jpg)
DDB - BACKEND INTEGRATION - INVENTORY
![Page 64: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/64.jpg)
DDB - BACKEND INTEGRATION - SMARTER DATA
{% for iface, iface_data in ifaces.items() if iface_data.attributes.link_type == "fabric" %} {% set peer =iface_data.attributes.connects_to_device %} {% set peer_iface =iface_data.attributes.connects_to_iface %} {% set peer_ip = hostvars[peer]['interfaces'][peer_iface]['ipv6'][0].split('/')[0] %} {% set peer_asn = hostvars[peer]['asn'] %} neighbor {{ peer_ip }} remote-as {{ peer_asn }} neighbor {{ peer_ip }} description {{ peer }}:{{ peer_iface }} address-family ipv6 neighbor {{ peer_ip }} activate {% endfor %}
![Page 65: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/65.jpg)
DDB - CONFIGURATION - RUN (1)
![Page 66: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/66.jpg)
DDB - CONFIGURATION - RUN (2)
![Page 67: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/67.jpg)
DDB - CONFIGURATION - RUN (3)
![Page 68: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/68.jpg)
DDB - VERIFYING - PLAYBOOK (1)- name: "Get facts from device" napalm_get_facts: hostname: "{{ host }}" username: "{{ user }}" dev_os: "{{ os }}" password: "{{ password }}" optional_args: port: "{{ port }}" filter: ['bgp_neighbors'] register: napalm_facts
![Page 69: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/69.jpg)
DDB - VERIFYING - PLAYBOOK (2)- name: "Check all BGP sessions are configured" assert: that: - hostvars[item.value.attributes.connects_to_device]['interfaces'][item.value.attributes.connects_to_iface][ msg: "{{ '{}:{}'.format(item.value.attributes.connects_to_iface, item.value.attributes.connects_to_device) }} with_dict: "{{ interfaces }}" when: "{{ item.value.attributes.link_type == 'fabric' }}" tags: [print_action]
Let's take a look:
hostvars[item.value.attributes.connects_to_device]['interfaces']\ [item.value.attributes.connects_to_iface]['ipv6'][0].split('/')[0]\ in napalm_facts.ansible_facts.bgp_neighbors.global.peers item.value # interface interface.attributes.connects_to_device # peer interface.attributes.connects_to_iface # peer_iface napalm_facts.ansible_facts.bgp_neighbors.global.peers # my_configured_peers hostvars[peer]['interfaces'][peer_iface]['ipv6'] in my_configured_peers
![Page 70: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/70.jpg)
DDB - VERIFYING - PLAYBOOK (3)- name: "Check BGP sessions are healthy" assert: that: - napalm_facts.ansible_facts.bgp_neighbors.global.peers[hostvars[item.value.attributes.connects_to_device][ msg: "{{ '{}:{}'.format(item.value.attributes.connects_to_iface, item.value.attributes.connects_to_device) }} with_dict: "{{ interfaces }}" when: "{{ item.value.attributes.link_type == 'fabric' }}" tags: [print_action] - name: "Chack BGP sessions are receiving prefixes" assert: that: - napalm_facts.ansible_facts.bgp_neighbors.global.peers[hostvars[item.value.attributes.connects_to_device][ msg: "{{ '{}:{}'.format(item.value.attributes.connects_to_iface, item.value.attributes.connects_to_device) }} with_dict: "{{ interfaces }}" when: "{{ item.value.attributes.link_type == 'fabric' }}" tags: [print_action]
DDB - VERIFYING - RUN (1)
![Page 71: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/71.jpg)
DDB - VERIFYING - RUN (1)
We verify links, not BGP sessions
![Page 72: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/72.jpg)
DDB - VERIFYING - RUN (2)
We can correlate BGP sessions with interfaces easily. That might allows us to infer the reason behind theerrors. For example, in the picture above it's easy to identify that the reason why 2001:db8:caf3:: is
down in rtr01 it's because 2001:db8:caf3::1 is not configured in rtr00.
![Page 73: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/73.jpg)
SUMMARY• We replaced all those YAML files with a backend (nsot)
• We added richer data to nsot that we previously had
• We leveraged on the richer data to build the configurations
with less information (BGP peers were inferred)
• We leveraged on the richer data to help diagnose problems
![Page 74: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/74.jpg)
6 - ABSTRACTIONSLink to the code on github
![Page 75: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/75.jpg)
We are going to simplify operations. Sites and services will be
abstracted and defined in simple definition files and added to
the backend using an easy to use tool. Finally, ansible will be
hidden behind the same tool.
OBJECTIVES
![Page 76: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/76.jpg)
![Page 77: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/77.jpg)
ABSTRATIONS - SITE DEFINITION - ACMEdata/acme/devices.yml--- devices: rtr00: os: eos host: 127.0.0.1 domain: acme.com user: vagrant password: vagrant port: '12443' asn: '65001' router_id: 10.1.1.1 rtr01: os: junos host: 127.0.0.1 domain: acme.com user: vagrant password: '' port: '12203' asn: '65002' router_id: 10.1.1.2
data/acme/attributes.yml--- attributes: Device: os: {} host: {} user: {} password: constraints:
allow_empty: true port: {} asn: {} router_id: {} domain: {} Network: type: {} service: {} Interface: link_type: {} connects_to_device: {} connects_to_iface: {}
data/acme/services.yml--- loopbacks: network_ranges: loopbacks: 2001:db8:feed::/48 definition: {} ipfabric: network_ranges: fabric_links: 2001:db8:cafe::/48 definition: links: - left_device: rtr00 left_iface: et1 right_device: rtr01 right_iface: ge-0/0/1 - left_device: rtr00 left_iface: et2 right_device: rtr01 right_iface: ge-0/0/2
![Page 78: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/78.jpg)
ABSTRATIONS - SITE DEFINITION - EVILdata/acme/devices.yml--- devices: evil00: os: eos host: 127.0.0.1 domain: evilcorp.com user: vagrant password: vagrant port: '12443' asn: '65666' router_id: 10.6.66.1 evil01: os: junos host: 127.0.0.1 domain: evil.com user: vagrant password: '' port: '12203' asn: '65666' router_id: 10.6.66.2
data/acme/attributes.yml--- attributes: Device: os: {} host: {} user: {} password: constraints:
allow_empty: true port: {} asn: {} router_id: {} domain: {} Network: type: {} service: {} Interface: link_type: {} connects_to_device: {} connects_to_iface: {}
data/acme/services.yml--- loopbacks: network_ranges: loopbacks: 2001:db8:dead::/48 definition: {} ipfabric: network_ranges: fabric_links: 2001:db8:c0ff::/48 definition: links: - left_device: rtr00 left_iface: et1 right_device: rtr01 right_iface: ge-0/0/1 - left_device: rtr00 left_iface: et2 right_device: rtr01 right_iface: ge-0/0/2
![Page 79: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/79.jpg)
ABSTRACTIONS - COMMAND-LINE
![Page 80: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/80.jpg)
ABSTRACTIONS - CREATING THE SITES - ACME(1)
![Page 81: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/81.jpg)
ABSTRACTIONS - CREATING THE SITES - ACME(2)
![Page 82: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/82.jpg)
ABSTRACTIONS - CREATING THE SITES - EVIL inv site.create --name evil inv site.add_atribbutes -s evil -f data/evil/attributes.yml inv site.add_devices -s evil -f data/evil/devices.yml inv serivce.loopbacks -s evil -f data/evil/services.yml inv serivce.ipfabric -s evil -f data/evil/services.yml
![Page 83: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/83.jpg)
ABSTRACTIONS - VERIFY DATA - ACME
For demonstrational purposes ;)
![Page 84: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/84.jpg)
ABSTRACTIONS - VERIFY DATA - EVIL
For demonstrational purposes ;)
![Page 85: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/85.jpg)
ABSTRACTIONS - DEPLOY SITE - ACME (1)
![Page 86: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/86.jpg)
ABSTRACTIONS - DEPLOY SITE - ACME (2)
![Page 87: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/87.jpg)
ABSTRACTIONS - DEPLOY SITE - ACME (3)
![Page 88: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/88.jpg)
ABSTRACTIONS - DEPLOY SITE - ACME (4)
![Page 89: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/89.jpg)
ABSTRACTIONS - DEPLOY SITE - ACME (5)
![Page 90: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/90.jpg)
ABSTRACTIONS - VERIFY SITE - ACME
![Page 91: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/91.jpg)
![Page 92: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/92.jpg)
ABSTRACTIONS - DEPLOY SITE - EVIL (1)
![Page 93: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/93.jpg)
ABSTRACTIONS - DEPLOY SITE - EVIL (2)
![Page 94: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/94.jpg)
ABSTRACTIONS - DEPLOY SITE - EVIL (3)
![Page 95: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/95.jpg)
ABSTRACTIONS - DEPLOY SITE - EVIL (4)
![Page 96: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/96.jpg)
ABSTRACTIONS - DEPLOY SITE - EVIL (5)
![Page 97: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/97.jpg)
ABSTRACTIONS - VERIFY SITE - EVIL
![Page 98: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/98.jpg)
![Page 99: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/99.jpg)
SUMMARY• We built a tool that focused on services
• The tool would read simple defintion files that users can
easily create/manipulate and do the necessary changes in the
backend.
• As the tool is very simple and easy to use, it can be used by
any type of user, not only by network engineers
• Tool could be a web form rather than a cli tool
![Page 100: NETWORK AUTOMATION TUTORIAL - RIPE 73 · 2016-10-10 · NETWORK AUTOMATION TUTORIAL David Barroso Press and to change sections. ... the serial number](https://reader034.fdocuments.in/reader034/viewer/2022042219/5ec56639fd680a5105410425/html5/thumbnails/100.jpg)
Slides - Code -
https://www.dravetech.com/presos/network_automation_tutorial.htmlhttps://github.com/dravetech/network-tutorials