From c3075dd22ca5aa58d73dc82fca3867cd06e28a37 Mon Sep 17 00:00:00 2001 From: Karl Newell Date: Wed, 15 Aug 2018 14:42:07 -0400 Subject: [PATCH] Lab includes vMX and vEOS and supports segment routing --- .gitignore | 2 + .../ansible-veos5_config.2018-08-14@17:27:35 | 29 +++++ .../ansible-veos6_config.2018-08-14@17:27:35 | 29 +++++ core-deploy.yml | 50 +++++--- core/core-model.yml | 71 +++++++++-- core/core-to-nodes.j2 | 18 ++- core_config/ansible-veos5-config.txt | 84 +++++++++++++ core_config/ansible-veos6-config.txt | 84 +++++++++++++ core_config/ansible-vmx1-config.txt | 64 +++++++--- core_config/ansible-vmx2-config.txt | 73 +++++++++-- core_config/ansible-vmx3-config.txt | 73 +++++++++-- core_config/ansible-vmx4-config.txt | 82 +++++++++++-- diff/ansible-vmx1-diff.txt | 23 ---- diff/ansible-vmx4-diff.txt | 20 --- eos.yml | 12 ++ eos/core.j2 | 116 ++++++++++++++++++ facts.retry | 3 - facts.yml | 11 +- facts_napalm.retry | 3 - group_vars/eos | 8 ++ group_vars/junos | 3 +- hosts | 8 ++ hosts.vmx => hosts_lab | 0 iosxr/core.j2 | 97 +++++++++++++++ junos.yml | 10 ++ junos/core.j2 | 41 ++++++- nodes.yml | 87 ++++++++++--- 27 files changed, 946 insertions(+), 155 deletions(-) create mode 100644 backup/ansible-veos5_config.2018-08-14@17:27:35 create mode 100644 backup/ansible-veos6_config.2018-08-14@17:27:35 create mode 100644 core_config/ansible-veos5-config.txt create mode 100644 core_config/ansible-veos6-config.txt create mode 100644 eos.yml create mode 100644 eos/core.j2 delete mode 100644 facts.retry delete mode 100644 facts_napalm.retry create mode 100644 group_vars/eos rename hosts.vmx => hosts_lab (100%) create mode 100644 iosxr/core.j2 create mode 100644 junos.yml diff --git a/.gitignore b/.gitignore index 467bae8..5471ccc 100644 --- a/.gitignore +++ b/.gitignore @@ -102,3 +102,5 @@ pip-selfcheck.json .ropeproject *.retry *.swp + +.retry diff --git a/backup/ansible-veos5_config.2018-08-14@17:27:35 b/backup/ansible-veos5_config.2018-08-14@17:27:35 new file mode 100644 index 0000000..5f99981 --- /dev/null +++ b/backup/ansible-veos5_config.2018-08-14@17:27:35 @@ -0,0 +1,29 @@ +! Command: show running-config +! device: ansible-veos5 (vEOS, EOS-4.20.1F) +! +! boot system flash:/vEOS-lab.swi +! +transceiver qsfp default-mode 4x10G +! +hostname ansible-veos5 +! +spanning-tree mode mstp +! +no aaa root +! +username admin privilege 15 role network-admin secret sha512 $6$QooVHYszFBY655A/$WnVBzmLe2LsWQ2kF01jtWff4L9xlxIfCpB0/rS7nWB70dFEoIbIYPRf1LHGg/jSGcR6VdecKvweJxry2vttCR1 +username salt privilege 15 role network-admin secret sha512 $6$gNfDGxuNqAufb7SS$XuBAZwDyHEX6Bt6zgDBA0zkJLhOm.5aJ8cwy2wd21DVr9yWr.gqwYBx7NUntbvSjTlKDQBg.XsMIIYRwqU10u1 +username salt sshkey ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCjxY2hLZ+ju5wdK4GYNhKGgnS8EWLBoEVpo+xQkhDzkTiBx3HGAnmARcVV0B9MqrHZl1omdnirJeygWzVbVY4yPUqGgEcUsTTq9fvK4AjTwtaoB5txAosaOnZq0zewmuZ6EMi6E3RND6A3FGXkf1Il2jg3I8k/dGqdyFI80B7sWy90fk+EqsGMPxVc+l5vAtY2jm84ellxxzBsulxfCSKPH86hZ1GqZ8A1ZBWITu15NjQw0aGssSYGMMTa1T8eFyY4hHWqqdwgOlODg9mZwwP1JdJH79SRoTOjqGGixuAFDGAgH3fNX6u8wTmYya/z7WXH6B2XwiiaZYdcyEbMLPZt knewell@ubuntu +! +interface Ethernet1 +! +interface Ethernet2 +! +interface Management1 + ip address 10.39.0.55/20 +! +ip route 0.0.0.0/0 10.39.0.1 +! +ip routing +! +end \ No newline at end of file diff --git a/backup/ansible-veos6_config.2018-08-14@17:27:35 b/backup/ansible-veos6_config.2018-08-14@17:27:35 new file mode 100644 index 0000000..2c7e042 --- /dev/null +++ b/backup/ansible-veos6_config.2018-08-14@17:27:35 @@ -0,0 +1,29 @@ +! Command: show running-config +! device: ansible-veos6 (vEOS, EOS-4.20.1F) +! +! boot system flash:/vEOS-lab.swi +! +transceiver qsfp default-mode 4x10G +! +hostname ansible-veos6 +! +spanning-tree mode mstp +! +no aaa root +! +username admin privilege 15 role network-admin secret sha512 $6$/7bApigLDgtwdZn4$8zr7AxxO2Lj2CXoV.fFWzmjrsusPfN453qwG/y76NCT7TNokv7XAZhJtgH6m82hwO14Y3W/zqyN4pHKitK1kO1 +username salt privilege 15 role network-admin secret sha512 $6$dUVSZEiQz8f5/ZTP$SMN1MWMaOLpyyUuBNjex/rVJL5WLw0SHi1MfOpdDAgPz1Fu7MMrHmJZ8.jU4kUjqC8xY.9VSp47m9MdqZl2Ck/ +username salt sshkey ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCjxY2hLZ+ju5wdK4GYNhKGgnS8EWLBoEVpo+xQkhDzkTiBx3HGAnmARcVV0B9MqrHZl1omdnirJeygWzVbVY4yPUqGgEcUsTTq9fvK4AjTwtaoB5txAosaOnZq0zewmuZ6EMi6E3RND6A3FGXkf1Il2jg3I8k/dGqdyFI80B7sWy90fk+EqsGMPxVc+l5vAtY2jm84ellxxzBsulxfCSKPH86hZ1GqZ8A1ZBWITu15NjQw0aGssSYGMMTa1T8eFyY4hHWqqdwgOlODg9mZwwP1JdJH79SRoTOjqGGixuAFDGAgH3fNX6u8wTmYya/z7WXH6B2XwiiaZYdcyEbMLPZt knewell@ubuntu +! +interface Ethernet1 +! +interface Ethernet2 +! +interface Management1 + ip address 10.39.0.56/20 +! +ip route 0.0.0.0/0 10.39.0.1 +! +ip routing +! +end \ No newline at end of file diff --git a/core-deploy.yml b/core-deploy.yml index 4511099..6d06d00 100644 --- a/core-deploy.yml +++ b/core-deploy.yml @@ -18,13 +18,12 @@ tags: [ template ] tasks: - include_vars: "./nodes.yml" - - name: Get facts for napalm_os_version - napalm_get_facts: - hostname: "{{ ansible_host }}" - username: "{{ ansible_user }}" - dev_os: "{{ ansible_network_os }}" - optional_args: - key_file: "{{ ansible_ssh_private_key_file }}" + - name: Gather facts (eos) + eos_facts: + when: ansible_network_os == 'eos' + - name: Gather facts (junos) + junos_facts: + when: ansible_network_os == 'junos' - name: create the directory for the configuration file: path=core_config state=directory run_once: true @@ -44,15 +43,28 @@ - include_vars: "./nodes.yml" - file: path=diff state=directory run_once: true - - name: load the configuration to the devices - napalm_install_config: - hostname: "{{ ansible_host }}" - username: "{{ ansible_user }}" - dev_os: "{{ ansible_network_os }}" - optional_args: - key_file: "{{ ansible_ssh_private_key_file }}" - config_file: core_config/{{inventory_hostname}}-config.txt - commit_changes: "{{commit}}" - replace_config: "{{replace_config|default('0')}}" - diff_file: diff/{{inventory_hostname}}-diff.txt - when: "inventory_hostname in nodes.keys()" + + - name: Load config (junos) + junos_config: + src: core_config/{{inventory_hostname}}-config.txt + update: replace + comment: Ansible config update + when: ansible_network_os == 'junos' + + - name: Load config (eos) + eos_config: + src: core_config/{{inventory_hostname}}-config.txt + when: ansible_network_os == 'eos' + +# - name: load the configuration to the devices +# napalm_install_config: +# hostname: "{{ ansible_host }}" +# username: "{{ ansible_user }}" +# dev_os: "{{ ansible_network_os }}" +# optional_args: +# key_file: "{{ ansible_ssh_private_key_file }}" +# config_file: core_config/{{inventory_hostname}}-config.txt +# commit_changes: "{{commit}}" +# replace_config: "{{replace_config|default('0')}}" +# diff_file: diff/{{inventory_hostname}}-diff.txt +# when: "inventory_hostname in nodes.keys()" diff --git a/core/core-model.yml b/core/core-model.yml index 5b8fec2..61575ad 100644 --- a/core/core-model.yml +++ b/core/core-model.yml @@ -7,31 +7,81 @@ nodes: - name: ansible-vmx1 mgmt: 10.39.0.41 rid: 10.39.8.41 + sid: 10 + iso: 49.0001.0010.0100.1001.00 - name: ansible-vmx2 mgmt: 10.39.0.42 rid: 10.39.8.42 - + sid: 20 + iso: 49.0001.0010.0100.1002.00 + - name: ansible-vmx3 mgmt: 10.39.0.43 rid: 10.39.8.43 + sid: 30 + iso: 49.0001.0010.0100.1003.00 - name: ansible-vmx4 mgmt: 10.39.0.44 rid: 10.39.8.44 + sid: 40 + iso: 49.0001.0010.0100.1004.00 + + - name: ansible-veos5 + mgmt: 10.39.0.55 + rid: 10.39.8.55 + sid: 50 + iso: 49.0001.0010.0100.1005.00 + lu: 163.253.39.165 + + - name: ansible-veos6 + mgmt: 10.39.0.56 + rid: 10.39.8.56 + sid: 60 + iso: 49.0001.0010.0100.1006.00 + lu: 163.253.39.165 links: - {left: ansible-vmx1, left_port: ge-0/0/0, left_ip: 172.10.12.1, - right: ansible-vmx2, right_port: ge-0/0/0, right_ip: 172.10.12.2, cost: 10 } + right: ansible-vmx2, right_port: ge-0/0/0, right_ip: 172.10.12.2, + cost: 10, mpls: True, iso: True } - {left: ansible-vmx1, left_port: ge-0/0/1, left_ip: 172.10.13.1, - right: ansible-vmx3, right_port: ge-0/0/0, right_ip: 172.10.13.3, cost: 10 } + right: ansible-vmx3, right_port: ge-0/0/0, right_ip: 172.10.13.3, + cost: 10, mpls: True, iso: True } + + - {left: ansible-vmx1, left_port: ge-0/0/2, left_ip: 172.10.14.1, + right: ansible-vmx4, right_port: ge-0/0/0, right_ip: 172.10.14.4, + cost: 10, mpls: True, iso: True } + + - {left: ansible-vmx1, left_port: ge-0/0/3, left_ip: 172.10.15.1, + right: ansible-veos5, right_port: Ethernet1, right_ip: 172.10.15.5, + cost: 10, mpls: True, iso: True } - {left: ansible-vmx2, left_port: ge-0/0/1, left_ip: 172.10.23.2, - right: ansible-vmx3, right_port: ge-0/0/1, right_ip: 172.10.23.3, cost: 10 } + right: ansible-vmx3, right_port: ge-0/0/1, right_ip: 172.10.23.3, + cost: 10, mpls: True, iso: True } - - {left: ansible-vmx1, left_port: ge-0/0/2, left_ip: 172.10.14.1, - right: ansible-vmx4, right_port: ge-0/0/0, right_ip: 172.10.14.4, cost: 10 } + - {left: ansible-vmx2, left_port: ge-0/0/2, left_ip: 172.10.24.2, + right: ansible-vmx4, right_port: ge-0/0/1, right_ip: 172.10.24.4, + cost: 10, mpls: True, iso: True } + + - {left: ansible-vmx2, left_port: ge-0/0/3, left_ip: 172.10.25.2, + right: ansible-veos5, right_port: Ethernet2, right_ip: 172.10.25.5, + cost: 10, mpls: True, iso: True } + + - {left: ansible-vmx3, left_port: ge-0/0/2, left_ip: 172.10.34.3, + right: ansible-vmx4, right_port: ge-0/0/2, right_ip: 172.10.34.4, + cost: 10, mpls: True, iso: True } + + - {left: ansible-vmx3, left_port: ge-0/0/3, left_ip: 172.10.36.3, + right: ansible-veos6, right_port: Ethernet1, right_ip: 172.10.36.6, + cost: 10, mpls: True, iso: True } + + - {left: ansible-vmx4, left_port: ge-0/0/3, left_ip: 172.10.46.4, + right: ansible-veos6, right_port: Ethernet2, right_ip: 172.10.46.6, + cost: 10, mpls: True, iso: True } bgp: rr: [10.39.8.41] @@ -39,8 +89,11 @@ bgp: af: - inet - inet-vpn + - inet-lu -ospf: - area: 0 - network: p2p +#ospf: +# area: 0 +# network: p2p +isis: + network: p2p diff --git a/core/core-to-nodes.j2 b/core/core-to-nodes.j2 index 656d0f6..529c361 100644 --- a/core/core-to-nodes.j2 +++ b/core/core-to-nodes.j2 @@ -1,8 +1,8 @@ # # Nodes in the network # -{% macro core_link(name,ip,cost,vlan,remote) %} -{{name}}.{{vlan}}: { ip: {{ip}}, remote: {{remote}} {% if cost %}, cost: {{cost}}{% endif %} {% if vlan %}, vlan: {{vlan}}{% endif %}}{% endmacro %} +{% macro core_link(name,ip,cost,vlan,remote,mpls,iso) %} +{{name}}.{{vlan}}: { ip: {{ip}}, remote: {{remote}} {% if cost %}, cost: {{cost}}{% endif %} {% if vlan %}, vlan: {{vlan}}{% endif %} {% if mpls %}, mpls: {{mpls}}{% endif %} {% if iso %}, iso: {{iso}}{% endif %}}{% endmacro %} --- @@ -15,12 +15,14 @@ nodes: {{ node.name }}: mgmt: {{ node.mgmt }} rid: {{ node.rid }} + sid: {{ node.sid }} + iso: {{ node.iso }} links: {% for link in links %} {% if link.left == node.name %} - {{ core_link(link.left_port,link.left_ip,link.cost|default(''),link.vlan|default('0'),link.right) }} + {{ core_link(link.left_port,link.left_ip,link.cost|default(''),link.vlan|default('0'),link.right,link.mpls|default(''),link.iso|default('')) }} {% elif link.right == node.name %} - {{ core_link(link.right_port,link.right_ip, link.cost|default(''),link.vlan|default('0'),link.left) }} + {{ core_link(link.right_port,link.right_ip, link.cost|default(''),link.vlan|default('0'),link.left,link.mpls|default(''),link.iso|default('')) }} {% endif %} {% endfor %} {% if bgp is defined %} @@ -38,6 +40,9 @@ nodes: - {{ peer }} {% endfor %} {% endif %} +{% if node.lu is defined %} + - {{ node.lu }} +{% endif %} af: {% for af in bgp.af %} - {{ af }} @@ -48,5 +53,8 @@ nodes: area: {{ospf.area}} network: {{ospf.network}} {% endif %} +{% if isis is defined %} + isis: + network: {{isis.network}} +{% endif %} {% endfor %} - diff --git a/core_config/ansible-veos5-config.txt b/core_config/ansible-veos5-config.txt new file mode 100644 index 0000000..471d4a5 --- /dev/null +++ b/core_config/ansible-veos5-config.txt @@ -0,0 +1,84 @@ +! +no schedule tech-support +! +transceiver qsfp default-mode 4x10G +! +hostname ansible-veos5 +! +spanning-tree mode mstp +! +no aaa root +! +username admin privilege 15 role network-admin secret sha512 $6$QooVHYszFBY655A/$WnVBzmLe2LsWQ2kF01jtWff4L9xlxIfCpB0/rS7nWB70dFEoIbIYPRf1LHGg/jSGcR6VdecKvweJxry2vttCR1 +username salt privilege 15 role network-admin secret sha512 $6$gNfDGxuNqAufb7SS$XuBAZwDyHEX6Bt6zgDBA0zkJLhOm.5aJ8cwy2wd21DVr9yWr.gqwYBx7NUntbvSjTlKDQBg.XsMIIYRwqU10u1 +username salt sshkey ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCjxY2hLZ+ju5wdK4GYNhKGgnS8EWLBoEVpo+xQkhDzkTiBx3HGAnmARcVV0B9MqrHZl1omdnirJeygWzVbVY4yPUqGgEcUsTTq9fvK4AjTwtaoB5txAosaOnZq0zewmuZ6EMi6E3RND6A3FGXkf1Il2jg3I8k/dGqdyFI80B7sWy90fk+EqsGMPxVc+l5vAtY2jm84ellxxzBsulxfCSKPH86hZ1GqZ8A1ZBWITu15NjQw0aGssSYGMMTa1T8eFyY4hHWqqdwgOlODg9mZwwP1JdJH79SRoTOjqGGixuAFDGAgH3fNX6u8wTmYya/z7WXH6B2XwiiaZYdcyEbMLPZt knewell@ubuntu +! +interface Ethernet1 + no switchport + ip address 172.10.15.5/24 + isis enable sr_instance + isis network point-to-point +! +! +interface Ethernet2 + no switchport + ip address 172.10.25.5/24 + isis enable sr_instance + isis network point-to-point +! +! +! +interface Loopback0 + ip address 10.39.8.55/32 + isis enable sr_instance + node-segment ipv4 index 50 +! +interface Management1 + ip address 10.39.0.55/22 +! +ip route 0.0.0.0/0 10.39.0.1 +! +ip routing +! +ipv6 unicast-routing +! +! +mpls ip +! +mpls label range isis-sr 800000 4096 +! +router bgp 65000 + router-id 10.39.8.55 + ! + neighbor 10.39.8.41 remote-as 65000 + neighbor 10.39.8.41 update-source Management1 + ! + address-family ipv4 labeled-unicast + neighbor 10.39.8.41 activate + ! + neighbor 163.253.39.165 remote-as 65000 + neighbor 163.253.39.165 update-source Management1 + ! + address-family ipv4 labeled-unicast + neighbor 163.253.39.165 activate + ! + ! +! +! +! +router isis sr_instance + net 49.0001.0010.0100.1005.00 + is-type level-2 + log-adjacency-changes + ! + address-family ipv4 unicast + ! + segment-routing mpls + router-id 10.39.8.55 + no shutdown + ! +! +management api http-commands + protocol http + no shutdown +! diff --git a/core_config/ansible-veos6-config.txt b/core_config/ansible-veos6-config.txt new file mode 100644 index 0000000..67745ab --- /dev/null +++ b/core_config/ansible-veos6-config.txt @@ -0,0 +1,84 @@ +! +no schedule tech-support +! +transceiver qsfp default-mode 4x10G +! +hostname ansible-veos6 +! +spanning-tree mode mstp +! +no aaa root +! +username admin privilege 15 role network-admin secret sha512 $6$QooVHYszFBY655A/$WnVBzmLe2LsWQ2kF01jtWff4L9xlxIfCpB0/rS7nWB70dFEoIbIYPRf1LHGg/jSGcR6VdecKvweJxry2vttCR1 +username salt privilege 15 role network-admin secret sha512 $6$gNfDGxuNqAufb7SS$XuBAZwDyHEX6Bt6zgDBA0zkJLhOm.5aJ8cwy2wd21DVr9yWr.gqwYBx7NUntbvSjTlKDQBg.XsMIIYRwqU10u1 +username salt sshkey ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCjxY2hLZ+ju5wdK4GYNhKGgnS8EWLBoEVpo+xQkhDzkTiBx3HGAnmARcVV0B9MqrHZl1omdnirJeygWzVbVY4yPUqGgEcUsTTq9fvK4AjTwtaoB5txAosaOnZq0zewmuZ6EMi6E3RND6A3FGXkf1Il2jg3I8k/dGqdyFI80B7sWy90fk+EqsGMPxVc+l5vAtY2jm84ellxxzBsulxfCSKPH86hZ1GqZ8A1ZBWITu15NjQw0aGssSYGMMTa1T8eFyY4hHWqqdwgOlODg9mZwwP1JdJH79SRoTOjqGGixuAFDGAgH3fNX6u8wTmYya/z7WXH6B2XwiiaZYdcyEbMLPZt knewell@ubuntu +! +interface Ethernet1 + no switchport + ip address 172.10.36.6/24 + isis enable sr_instance + isis network point-to-point +! +! +interface Ethernet2 + no switchport + ip address 172.10.46.6/24 + isis enable sr_instance + isis network point-to-point +! +! +! +interface Loopback0 + ip address 10.39.8.56/32 + isis enable sr_instance + node-segment ipv4 index 60 +! +interface Management1 + ip address 10.39.0.56/22 +! +ip route 0.0.0.0/0 10.39.0.1 +! +ip routing +! +ipv6 unicast-routing +! +! +mpls ip +! +mpls label range isis-sr 800000 4096 +! +router bgp 65000 + router-id 10.39.8.56 + ! + neighbor 10.39.8.41 remote-as 65000 + neighbor 10.39.8.41 update-source Management1 + ! + address-family ipv4 labeled-unicast + neighbor 10.39.8.41 activate + ! + neighbor 163.253.39.165 remote-as 65000 + neighbor 163.253.39.165 update-source Management1 + ! + address-family ipv4 labeled-unicast + neighbor 163.253.39.165 activate + ! + ! +! +! +! +router isis sr_instance + net 49.0001.0010.0100.1006.00 + is-type level-2 + log-adjacency-changes + ! + address-family ipv4 unicast + ! + segment-routing mpls + router-id 10.39.8.56 + no shutdown + ! +! +management api http-commands + protocol http + no shutdown +! diff --git a/core_config/ansible-vmx1-config.txt b/core_config/ansible-vmx1-config.txt index 0c1f6ea..1cd49c9 100644 --- a/core_config/ansible-vmx1-config.txt +++ b/core_config/ansible-vmx1-config.txt @@ -22,7 +22,7 @@ system { ssh; traceoptions { file nc.txt size 1m world-readable; - flag incoming; + flag all; } } } @@ -47,6 +47,8 @@ interfaces { family inet { address 172.10.12.1/24 } + family mpls; + family iso; } } @@ -56,6 +58,8 @@ interfaces { family inet { address 172.10.13.1/24 } + family mpls; + family iso; } } @@ -65,6 +69,19 @@ interfaces { family inet { address 172.10.14.1/24 } + family mpls; + family iso; + } + } + + ge-0/0/3 { + description "ansible-veos5" + unit 0 { + family inet { + address 172.10.15.1/24 + } + family mpls; + family iso; } } @@ -81,6 +98,10 @@ interfaces { family inet { address 10.39.8.41/32; } + family iso { + address 49.0001.0010.0100.1001.00; + } + } } } @@ -112,44 +133,53 @@ protocols { neighbor 10.39.8.44; } } - ospf { - area 0 { - interface ge-0/0/0.0 { - interface-type p2p; - metric 10; - } - interface ge-0/0/1.0 { - interface-type p2p; - metric 10; - } - interface ge-0/0/2.0 { - interface-type p2p; - metric 10; - } - interface lo0.0 { - passive; + isis { + no-ipv6-routing; + source-packet-routing { + node-segment { + ipv4-index 10; } } + level 1 disable; + interface ge-0/0/0.0 { + point-to-point; + } + interface ge-0/0/1.0 { + point-to-point; + } + interface ge-0/0/2.0 { + point-to-point; + } + interface ge-0/0/3.0 { + point-to-point; + } + interface lo0.0 { + passive; + } } ldp { interface ge-0/0/0.0; interface ge-0/0/1.0; interface ge-0/0/2.0; + interface ge-0/0/3.0; interface lo0.0; } rsvp { interface ge-0/0/0.0; interface ge-0/0/1.0; interface ge-0/0/2.0; + interface ge-0/0/3.0; } mpls { interface ge-0/0/0.0; interface ge-0/0/1.0; interface ge-0/0/2.0; + interface ge-0/0/3.0; } lldp { interface ge-0/0/0; interface ge-0/0/1; interface ge-0/0/2; + interface ge-0/0/3; } } diff --git a/core_config/ansible-vmx2-config.txt b/core_config/ansible-vmx2-config.txt index d99a813..019fe57 100644 --- a/core_config/ansible-vmx2-config.txt +++ b/core_config/ansible-vmx2-config.txt @@ -22,7 +22,7 @@ system { ssh; traceoptions { file nc.txt size 1m world-readable; - flag incoming; + flag all; } } } @@ -47,6 +47,8 @@ interfaces { family inet { address 172.10.12.2/24 } + family mpls; + family iso; } } @@ -56,6 +58,30 @@ interfaces { family inet { address 172.10.23.2/24 } + family mpls; + family iso; + } + } + + ge-0/0/2 { + description "ansible-vmx4" + unit 0 { + family inet { + address 172.10.24.2/24 + } + family mpls; + family iso; + } + } + + ge-0/0/3 { + description "ansible-veos5" + unit 0 { + family inet { + address 172.10.25.2/24 + } + family mpls; + family iso; } } @@ -72,6 +98,10 @@ interfaces { family inet { address 10.39.8.42/32; } + family iso { + address 49.0001.0010.0100.1002.00; + } + } } } @@ -101,37 +131,54 @@ protocols { neighbor 10.39.8.41; } } - ospf { - area 0 { - interface ge-0/0/0.0 { - interface-type p2p; - metric 10; - } - interface ge-0/0/1.0 { - interface-type p2p; - metric 10; - } - interface lo0.0 { - passive; + isis { + no-ipv6-routing; + source-packet-routing { + node-segment { + ipv4-index 20; } } + level 1 disable; + interface ge-0/0/0.0 { + point-to-point; + } + interface ge-0/0/1.0 { + point-to-point; + } + interface ge-0/0/2.0 { + point-to-point; + } + interface ge-0/0/3.0 { + point-to-point; + } + interface lo0.0 { + passive; + } } ldp { interface ge-0/0/0.0; interface ge-0/0/1.0; + interface ge-0/0/2.0; + interface ge-0/0/3.0; interface lo0.0; } rsvp { interface ge-0/0/0.0; interface ge-0/0/1.0; + interface ge-0/0/2.0; + interface ge-0/0/3.0; } mpls { interface ge-0/0/0.0; interface ge-0/0/1.0; + interface ge-0/0/2.0; + interface ge-0/0/3.0; } lldp { interface ge-0/0/0; interface ge-0/0/1; + interface ge-0/0/2; + interface ge-0/0/3; } } policy-options { diff --git a/core_config/ansible-vmx3-config.txt b/core_config/ansible-vmx3-config.txt index 075dad4..a4c691a 100644 --- a/core_config/ansible-vmx3-config.txt +++ b/core_config/ansible-vmx3-config.txt @@ -22,7 +22,7 @@ system { ssh; traceoptions { file nc.txt size 1m world-readable; - flag incoming; + flag all; } } } @@ -47,6 +47,8 @@ interfaces { family inet { address 172.10.13.3/24 } + family mpls; + family iso; } } @@ -56,6 +58,30 @@ interfaces { family inet { address 172.10.23.3/24 } + family mpls; + family iso; + } + } + + ge-0/0/2 { + description "ansible-vmx4" + unit 0 { + family inet { + address 172.10.34.3/24 + } + family mpls; + family iso; + } + } + + ge-0/0/3 { + description "ansible-veos6" + unit 0 { + family inet { + address 172.10.36.3/24 + } + family mpls; + family iso; } } @@ -72,6 +98,10 @@ interfaces { family inet { address 10.39.8.43/32; } + family iso { + address 49.0001.0010.0100.1003.00; + } + } } } @@ -101,37 +131,54 @@ protocols { neighbor 10.39.8.41; } } - ospf { - area 0 { - interface ge-0/0/0.0 { - interface-type p2p; - metric 10; - } - interface ge-0/0/1.0 { - interface-type p2p; - metric 10; - } - interface lo0.0 { - passive; + isis { + no-ipv6-routing; + source-packet-routing { + node-segment { + ipv4-index 30; } } + level 1 disable; + interface ge-0/0/0.0 { + point-to-point; + } + interface ge-0/0/1.0 { + point-to-point; + } + interface ge-0/0/2.0 { + point-to-point; + } + interface ge-0/0/3.0 { + point-to-point; + } + interface lo0.0 { + passive; + } } ldp { interface ge-0/0/0.0; interface ge-0/0/1.0; + interface ge-0/0/2.0; + interface ge-0/0/3.0; interface lo0.0; } rsvp { interface ge-0/0/0.0; interface ge-0/0/1.0; + interface ge-0/0/2.0; + interface ge-0/0/3.0; } mpls { interface ge-0/0/0.0; interface ge-0/0/1.0; + interface ge-0/0/2.0; + interface ge-0/0/3.0; } lldp { interface ge-0/0/0; interface ge-0/0/1; + interface ge-0/0/2; + interface ge-0/0/3; } } policy-options { diff --git a/core_config/ansible-vmx4-config.txt b/core_config/ansible-vmx4-config.txt index 65691cc..9e8ea07 100644 --- a/core_config/ansible-vmx4-config.txt +++ b/core_config/ansible-vmx4-config.txt @@ -22,7 +22,7 @@ system { ssh; traceoptions { file nc.txt size 1m world-readable; - flag incoming; + flag all; } } } @@ -47,6 +47,41 @@ interfaces { family inet { address 172.10.14.4/24 } + family mpls; + family iso; + } + } + + ge-0/0/1 { + description "ansible-vmx2" + unit 0 { + family inet { + address 172.10.24.4/24 + } + family mpls; + family iso; + } + } + + ge-0/0/2 { + description "ansible-vmx3" + unit 0 { + family inet { + address 172.10.34.4/24 + } + family mpls; + family iso; + } + } + + ge-0/0/3 { + description "ansible-veos6" + unit 0 { + family inet { + address 172.10.46.4/24 + } + family mpls; + family iso; } } @@ -63,6 +98,10 @@ interfaces { family inet { address 10.39.8.44/32; } + family iso { + address 49.0001.0010.0100.1004.00; + } + } } } @@ -92,29 +131,54 @@ protocols { neighbor 10.39.8.41; } } - ospf { - area 0 { - interface ge-0/0/0.0 { - interface-type p2p; - metric 10; - } - interface lo0.0 { - passive; + isis { + no-ipv6-routing; + source-packet-routing { + node-segment { + ipv4-index 40; } } + level 1 disable; + interface ge-0/0/0.0 { + point-to-point; + } + interface ge-0/0/1.0 { + point-to-point; + } + interface ge-0/0/2.0 { + point-to-point; + } + interface ge-0/0/3.0 { + point-to-point; + } + interface lo0.0 { + passive; + } } ldp { interface ge-0/0/0.0; + interface ge-0/0/1.0; + interface ge-0/0/2.0; + interface ge-0/0/3.0; interface lo0.0; } rsvp { interface ge-0/0/0.0; + interface ge-0/0/1.0; + interface ge-0/0/2.0; + interface ge-0/0/3.0; } mpls { interface ge-0/0/0.0; + interface ge-0/0/1.0; + interface ge-0/0/2.0; + interface ge-0/0/3.0; } lldp { interface ge-0/0/0; + interface ge-0/0/1; + interface ge-0/0/2; + interface ge-0/0/3; } } policy-options { diff --git a/diff/ansible-vmx1-diff.txt b/diff/ansible-vmx1-diff.txt index b3e493c..e69de29 100644 --- a/diff/ansible-vmx1-diff.txt +++ b/diff/ansible-vmx1-diff.txt @@ -1,23 +0,0 @@ -[edit protocols rsvp] - interface ge-0/0/1.0 { ... } -+ interface ge-0/0/2.0; -- interface ge-0/0/2.40; -[edit protocols mpls] - interface ge-0/0/1.0 { ... } -+ interface ge-0/0/2.0; -- interface ge-0/0/2.40; -[edit protocols ospf area 0.0.0.0] - interface ge-0/0/1.0 { ... } -+ interface ge-0/0/2.0 { -+ interface-type p2p; -+ metric 10; -+ } - interface lo0.0 { ... } -[edit protocols ospf area 0.0.0.0] -- interface ge-0/0/2.40 { -- interface-type p2p; -- metric 10; -- } -[edit protocols ldp] -+ interface ge-0/0/2.0; -- interface ge-0/0/2.40; \ No newline at end of file diff --git a/diff/ansible-vmx4-diff.txt b/diff/ansible-vmx4-diff.txt index 8fdd771..e69de29 100644 --- a/diff/ansible-vmx4-diff.txt +++ b/diff/ansible-vmx4-diff.txt @@ -1,20 +0,0 @@ -[edit protocols rsvp] -+ interface ge-0/0/0.0; -- interface ge-0/0/0.40; -[edit protocols mpls] -+ interface ge-0/0/0.0; -- interface ge-0/0/0.40; -[edit protocols ospf area 0.0.0.0] -+ interface ge-0/0/0.0 { -+ interface-type p2p; -+ metric 10; -+ } - interface lo0.0 { ... } -[edit protocols ospf area 0.0.0.0] -- interface ge-0/0/0.40 { -- interface-type p2p; -- metric 10; -- } -[edit protocols ldp] -+ interface ge-0/0/0.0; -- interface ge-0/0/0.40; \ No newline at end of file diff --git a/eos.yml b/eos.yml new file mode 100644 index 0000000..b9687d4 --- /dev/null +++ b/eos.yml @@ -0,0 +1,12 @@ +--- +- hosts: veos + + tasks: + - name: Backup current switch config (eos) + eos_config: + backup: yes + register: backup_eos_location + when: ansible_network_os == 'eos' + - name: Debug + debug: + msg: "{{backup_eos_location}}" diff --git a/eos/core.j2 b/eos/core.j2 new file mode 100644 index 0000000..3a79921 --- /dev/null +++ b/eos/core.j2 @@ -0,0 +1,116 @@ +{% set node = nodes[inventory_hostname] %} +! +no schedule tech-support +! +transceiver qsfp default-mode 4x10G +! +hostname {{inventory_hostname}} +! +spanning-tree mode mstp +! +no aaa root +! +username admin privilege 15 role network-admin secret sha512 $6$QooVHYszFBY655A/$WnVBzmLe2LsWQ2kF01jtWff4L9xlxIfCpB0/rS7nWB70dFEoIbIYPRf1LHGg/jSGcR6VdecKvweJxry2vttCR1 +username salt privilege 15 role network-admin secret sha512 $6$gNfDGxuNqAufb7SS$XuBAZwDyHEX6Bt6zgDBA0zkJLhOm.5aJ8cwy2wd21DVr9yWr.gqwYBx7NUntbvSjTlKDQBg.XsMIIYRwqU10u1 +username salt sshkey ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCjxY2hLZ+ju5wdK4GYNhKGgnS8EWLBoEVpo+xQkhDzkTiBx3HGAnmARcVV0B9MqrHZl1omdnirJeygWzVbVY4yPUqGgEcUsTTq9fvK4AjTwtaoB5txAosaOnZq0zewmuZ6EMi6E3RND6A3FGXkf1Il2jg3I8k/dGqdyFI80B7sWy90fk+EqsGMPxVc+l5vAtY2jm84ellxxzBsulxfCSKPH86hZ1GqZ8A1ZBWITu15NjQw0aGssSYGMMTa1T8eFyY4hHWqqdwgOlODg9mZwwP1JdJH79SRoTOjqGGixuAFDGAgH3fNX6u8wTmYya/z7WXH6B2XwiiaZYdcyEbMLPZt knewell@ubuntu +! +{% for intf,intf_attr in node.links.items() %} +interface {{intf.split('.')[0]}} + no switchport +{% if intf_attr.vlan is undefined or intf_attr.vlan == 0 %} + ip address {{intf_attr.ip}}/{{intf_attr.mask|default('24')}} +{% endif %} + isis enable sr_instance + isis network point-to-point +! +{% if intf_attr.vlan is defined and intf_attr.vlan != 0 %} +interface {{intf}} + ip address {{intf_attr.ip}}/{{intf_attr.mask|default('24')}} + encapsulation dot1q {{intf_attr.vlan}} +{% endif %} +! +{% endfor %} +! +interface Loopback0 + ip address {{node.rid}}/32 + isis enable sr_instance + node-segment ipv4 index {{node.sid}} +! +interface Management1 + ip address {{node.mgmt}}/22 +! +ip route 0.0.0.0/0 10.39.0.1 +! +ip routing +! +ipv6 unicast-routing +! +{% if node.ospf is defined %} +router ospf 1 + address-family ipv4 unicast + area {{node.ospf.area}} + interface Loopback0 + passive enable + ! +{% for intf, intf_attr in node.links.items()|sort %} + interface {{intf}} + cost {{intf_attr.cost}} + network point-to-point + ! +{% endfor %} + ! + mpls traffic-eng router-id Loopback0 +{% endif %} +! +mpls ip +! +mpls label range isis-sr 800000 4096 +! +router bgp {{common.bgp_asn}} + router-id {{node.rid}} + ! +{% for peer in node.bgp.ibgp.peers %} + neighbor {{peer}} remote-as {{common.bgp_asn}} + neighbor {{peer}} update-source Management1 + ! +{% if 'inet-lu' in node.bgp.ibgp.af %} + address-family ipv4 labeled-unicast + neighbor {{peer}} activate +{% endif %} + ! +{% endfor %} + ! +! +{# +rsvp +{% for intf, intf_attr in node.links.items()|sort %} + interface {{intf}} +{% endfor %} + ! +#} +! +{# +mpls ldp +{% for intf, intf_attr in node.links.items()|sort %} + interface {{intf}} +{% endfor %} +#} +! +{% if node.isis is defined %} +router isis sr_instance + net {{node.iso}} + is-type level-2 + log-adjacency-changes + ! + address-family ipv4 unicast + ! + segment-routing mpls + router-id {{node.rid}} + no shutdown + ! +{% endif %} +! +management api http-commands + protocol http + no shutdown +! diff --git a/facts.retry b/facts.retry deleted file mode 100644 index 510628f..0000000 --- a/facts.retry +++ /dev/null @@ -1,3 +0,0 @@ -ansible-vmx2 -ansible-vmx3 -ansible-vmx4 diff --git a/facts.yml b/facts.yml index 6d2d219..51559b5 100644 --- a/facts.yml +++ b/facts.yml @@ -1,11 +1,18 @@ --- - name: Network Getting Started First Playbook - hosts: vmx + hosts: all gather_facts: false tasks: + - name: Gather facts (eos) + eos_facts: + when: ansible_network_os == 'eos' + register: results + + - name: Display facts + debug: var=results - - name: Get config for JunOS devices + - name: Gather facts (junos) junos_facts: when: ansible_network_os == 'junos' register: results diff --git a/facts_napalm.retry b/facts_napalm.retry deleted file mode 100644 index 11a615c..0000000 --- a/facts_napalm.retry +++ /dev/null @@ -1,3 +0,0 @@ -ansible-vmx1 -ansible-vmx2 -ansible-vmx3 diff --git a/group_vars/eos b/group_vars/eos new file mode 100644 index 0000000..879feb4 --- /dev/null +++ b/group_vars/eos @@ -0,0 +1,8 @@ +--- +ansible_connection: network_cli +#ansible_connection: netconf +ansible_network_os: eos +ansible_user: salt +ansible_ssh_private_key_file: /srv/salt/ssh/id_rsa +ansible_become: yes +ansible_become_method: enable diff --git a/group_vars/junos b/group_vars/junos index fc22728..8d6ff1f 100644 --- a/group_vars/junos +++ b/group_vars/junos @@ -1,5 +1,6 @@ --- -ansible_connection: network_cli +#ansible_connection: network_cli +ansible_connection: netconf ansible_network_os: junos ansible_user: salt ansible_ssh_private_key_file: /srv/salt/ssh/id_rsa diff --git a/hosts b/hosts index 11df7e0..d385d4f 100644 --- a/hosts +++ b/hosts @@ -13,3 +13,11 @@ all: ansible_host: 10.39.0.43 ansible-vmx4: ansible_host: 10.39.0.44 + eos: + children: + veos: + hosts: + ansible-veos5: + ansible_host: 10.39.0.55 + ansible-veos6: + ansible_host: 10.39.0.56 diff --git a/hosts.vmx b/hosts_lab similarity index 100% rename from hosts.vmx rename to hosts_lab diff --git a/iosxr/core.j2 b/iosxr/core.j2 new file mode 100644 index 0000000..79eca04 --- /dev/null +++ b/iosxr/core.j2 @@ -0,0 +1,97 @@ +{% set node = nodes[inventory_hostname] %} +! +hostname {{inventory_hostname}} +telnet vrf default ipv4 server max-servers 100 +username netconf + group sysadmin + group root-system + group cisco-support + password 7 151C0E1807252522796166 +! +username vagrant + group root-lr + group cisco-support + password 7 120F0410000A0210 +! +interface Loopback0 + ipv4 address {{node.rid}} 255.255.255.255 +! +interface MgmtEth0/0/CPU0/0 + ipv4 address {{node.mgmt}} 255.255.255.0 +! +{% for intf,intf_attr in node.links.items() %} +interface {{intf.split('.')[0]}} + no shutdown +{% if intf_attr.vlan is undefined or intf_attr.vlan == 0 %} + ipv4 address {{intf_attr.ip}}/{{intf_attr.mask|default('24')}} +{% endif %} +! +{% if intf_attr.vlan is defined and intf_attr.vlan != 0 %} +interface {{intf}} + ipv4 address {{intf_attr.ip}}/{{intf_attr.mask|default('24')}} + encapsulation dot1q {{intf_attr.vlan}} +{% endif %} +! +{% endfor %} +! +router ospf 1 + address-family ipv4 unicast + area {{node.ospf.area}} + interface Loopback0 + passive enable + ! +{% for intf, intf_attr in node.links.items()|sort %} + interface {{intf}} + cost {{intf_attr.cost}} + network point-to-point + ! +{% endfor %} + ! + mpls traffic-eng router-id Loopback0 +! +router bgp {{common.bgp_asn}} +{% if 'inet' in node.bgp.ibgp.af %} + address-family ipv4 unicast +{% endif %} + ! +{% if 'inet-vpn' in node.bgp.ibgp.af %} + address-family vpnv4 unicast +{% endif %} + ! +{% for peer in node.bgp.ibgp.peers %} + neighbor {{peer}} + remote-as {{common.bgp_asn}} + local address {{node.rid}} +{% if 'inet' in node.bgp.ibgp.af %} + address-family ipv4 unicast +{% endif %} + ! +{% if 'inet-vpn' in node.bgp.ibgp.af %} + address-family vpnv4 unicast +{% endif %} + ! +{% endfor %} + ! +! +rsvp +{% for intf, intf_attr in node.links.items()|sort %} + interface {{intf}} +{% endfor %} + ! +! +mpls traffic-eng +{% for intf, intf_attr in node.links.items()|sort %} + interface {{intf}} +{% endfor %} +! +mpls ldp +{% for intf, intf_attr in node.links.items()|sort %} + interface {{intf}} +{% endfor %} +! +lldp + subinterfaces enable +! +xml agent tty + iteration off +! diff --git a/junos.yml b/junos.yml new file mode 100644 index 0000000..a2a67a5 --- /dev/null +++ b/junos.yml @@ -0,0 +1,10 @@ +--- +- name: Config junos + gather_facts: no + hosts: vmx + tasks: + - name: load config + junos_config: + src: core_config/{{inventory_hostname}}-config.txt + update: replace + comment: Ansible config update diff --git a/junos/core.j2 b/junos/core.j2 index be93459..e4aec30 100644 --- a/junos/core.j2 +++ b/junos/core.j2 @@ -5,7 +5,7 @@ ### System configuration ###### ************************************************** #} -version {{napalm_os_version}} +version {{ansible_net_version}} system { host-name {{inventory_hostname}}; no-redirects; @@ -28,7 +28,7 @@ system { ssh; traceoptions { file nc.txt size 1m world-readable; - flag incoming; + flag all; } } } @@ -75,6 +75,9 @@ interfaces { } {% if intf_attr.mpls is defined %} family mpls; +{% endif %} +{% if intf_attr.iso is defined %} + family iso; {% endif %} } } @@ -93,6 +96,11 @@ interfaces { family inet { address {{node.rid}}/32; } +{% if node.iso is defined %} + family iso { + address {{node.iso}}; + } +{% endif %} } } } @@ -178,6 +186,35 @@ protocols { {% endif %} {# ************************************************** +### ISIS Variables ###### +************************************************** +#} +{% if node.isis is defined %} + isis { + no-ipv6-routing; + source-packet-routing { + node-segment { + ipv4-index {{ node.sid }}; + } + } + level 1 disable; +{% for intf, intf_attr in node.links.items()|sort %} + interface {{ intf }} { + point-to-point; +{# +{% if intf_attr.cost is defined %} + metric {{intf_attr.cost }}; +{% endif %} +#} + } +{% endfor %} + interface lo0.0 { + passive; + } + } +{% endif %} +{# +************************************************** ### LDP Variables ###### ************************************************** #} diff --git a/nodes.yml b/nodes.yml index 9725470..b0bfebb 100644 --- a/nodes.yml +++ b/nodes.yml @@ -12,10 +12,13 @@ nodes: ansible-vmx1: mgmt: 10.39.0.41 rid: 10.39.8.41 + sid: 10 + iso: 49.0001.0010.0100.1001.00 links: - ge-0/0/0.0: { ip: 172.10.12.1, remote: ansible-vmx2 , cost: 10 , vlan: 0} - ge-0/0/1.0: { ip: 172.10.13.1, remote: ansible-vmx3 , cost: 10 , vlan: 0} - ge-0/0/2.0: { ip: 172.10.14.1, remote: ansible-vmx4 , cost: 10 , vlan: 0} + ge-0/0/0.0: { ip: 172.10.12.1, remote: ansible-vmx2 , cost: 10 , vlan: 0 , mpls: True , iso: True} + ge-0/0/1.0: { ip: 172.10.13.1, remote: ansible-vmx3 , cost: 10 , vlan: 0 , mpls: True , iso: True} + ge-0/0/2.0: { ip: 172.10.14.1, remote: ansible-vmx4 , cost: 10 , vlan: 0 , mpls: True , iso: True} + ge-0/0/3.0: { ip: 172.10.15.1, remote: ansible-veos5 , cost: 10 , vlan: 0 , mpls: True , iso: True} bgp: ibgp: rr: true @@ -26,16 +29,20 @@ nodes: af: - inet - inet-vpn - ospf: - area: 0 + - inet-lu + isis: network: p2p ansible-vmx2: mgmt: 10.39.0.42 rid: 10.39.8.42 + sid: 20 + iso: 49.0001.0010.0100.1002.00 links: - ge-0/0/0.0: { ip: 172.10.12.2, remote: ansible-vmx1 , cost: 10 , vlan: 0} - ge-0/0/1.0: { ip: 172.10.23.2, remote: ansible-vmx3 , cost: 10 , vlan: 0} + ge-0/0/0.0: { ip: 172.10.12.2, remote: ansible-vmx1 , cost: 10 , vlan: 0 , mpls: True , iso: True} + ge-0/0/1.0: { ip: 172.10.23.2, remote: ansible-vmx3 , cost: 10 , vlan: 0 , mpls: True , iso: True} + ge-0/0/2.0: { ip: 172.10.24.2, remote: ansible-vmx4 , cost: 10 , vlan: 0 , mpls: True , iso: True} + ge-0/0/3.0: { ip: 172.10.25.2, remote: ansible-veos5 , cost: 10 , vlan: 0 , mpls: True , iso: True} bgp: ibgp: peers: @@ -43,16 +50,20 @@ nodes: af: - inet - inet-vpn - ospf: - area: 0 + - inet-lu + isis: network: p2p ansible-vmx3: mgmt: 10.39.0.43 rid: 10.39.8.43 + sid: 30 + iso: 49.0001.0010.0100.1003.00 links: - ge-0/0/0.0: { ip: 172.10.13.3, remote: ansible-vmx1 , cost: 10 , vlan: 0} - ge-0/0/1.0: { ip: 172.10.23.3, remote: ansible-vmx2 , cost: 10 , vlan: 0} + ge-0/0/0.0: { ip: 172.10.13.3, remote: ansible-vmx1 , cost: 10 , vlan: 0 , mpls: True , iso: True} + ge-0/0/1.0: { ip: 172.10.23.3, remote: ansible-vmx2 , cost: 10 , vlan: 0 , mpls: True , iso: True} + ge-0/0/2.0: { ip: 172.10.34.3, remote: ansible-vmx4 , cost: 10 , vlan: 0 , mpls: True , iso: True} + ge-0/0/3.0: { ip: 172.10.36.3, remote: ansible-veos6 , cost: 10 , vlan: 0 , mpls: True , iso: True} bgp: ibgp: peers: @@ -60,15 +71,20 @@ nodes: af: - inet - inet-vpn - ospf: - area: 0 + - inet-lu + isis: network: p2p ansible-vmx4: mgmt: 10.39.0.44 rid: 10.39.8.44 + sid: 40 + iso: 49.0001.0010.0100.1004.00 links: - ge-0/0/0.0: { ip: 172.10.14.4, remote: ansible-vmx1 , cost: 10 , vlan: 0} + ge-0/0/0.0: { ip: 172.10.14.4, remote: ansible-vmx1 , cost: 10 , vlan: 0 , mpls: True , iso: True} + ge-0/0/1.0: { ip: 172.10.24.4, remote: ansible-vmx2 , cost: 10 , vlan: 0 , mpls: True , iso: True} + ge-0/0/2.0: { ip: 172.10.34.4, remote: ansible-vmx3 , cost: 10 , vlan: 0 , mpls: True , iso: True} + ge-0/0/3.0: { ip: 172.10.46.4, remote: ansible-veos6 , cost: 10 , vlan: 0 , mpls: True , iso: True} bgp: ibgp: peers: @@ -76,7 +92,46 @@ nodes: af: - inet - inet-vpn - ospf: - area: 0 + - inet-lu + isis: network: p2p + ansible-veos5: + mgmt: 10.39.0.55 + rid: 10.39.8.55 + sid: 50 + iso: 49.0001.0010.0100.1005.00 + links: + Ethernet1.0: { ip: 172.10.15.5, remote: ansible-vmx1 , cost: 10 , vlan: 0 , mpls: True , iso: True} + Ethernet2.0: { ip: 172.10.25.5, remote: ansible-vmx2 , cost: 10 , vlan: 0 , mpls: True , iso: True} + bgp: + ibgp: + peers: + - 10.39.8.41 + - 163.253.39.165 + af: + - inet + - inet-vpn + - inet-lu + isis: + network: p2p + + ansible-veos6: + mgmt: 10.39.0.56 + rid: 10.39.8.56 + sid: 60 + iso: 49.0001.0010.0100.1006.00 + links: + Ethernet1.0: { ip: 172.10.36.6, remote: ansible-vmx3 , cost: 10 , vlan: 0 , mpls: True , iso: True} + Ethernet2.0: { ip: 172.10.46.6, remote: ansible-vmx4 , cost: 10 , vlan: 0 , mpls: True , iso: True} + bgp: + ibgp: + peers: + - 10.39.8.41 + - 163.253.39.165 + af: + - inet + - inet-vpn + - inet-lu + isis: + network: p2p