VPP/IPv6 SR VIRL topology file

From fd.io
< VPP
Jump to: navigation, search

The following example is a VIRL topology description that can be used as a topology file for an IPv6 segment routing network.

Copy the following text into a plain text file and save with the .virl extension.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<topology xmlns="http://www.cisco.com/VIRL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="0.9" xsi:schemaLocation="http://www.cisco.com/VIRL https://raw.github.com/CiscoVIRL/schema/v0.9/virl.xsd">
    <extensions>
        <entry key="management_network" type="String">flat</entry>
        <entry key="AutoNetkit.address_family" type="String">dual_stack</entry>
        <entry key="AutoNetkit.enable_routing" type="Boolean">false</entry>
    </extensions>
    <node name="iosv-1" type="SIMPLE" subtype="IOSv" location="195,78" vmImage="IOSv-unlimited [f04cda9c-35d2-4afb-9dd1-a2bc6e6dd292]" ipv4="192.168.0.2" ipv6="::b:1:0:0:2">
        <extensions>
            <entry key="config" type="string">!
! Last configuration change at 16:41:18 UTC Fri Mar 27 2015
!
version 15.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname iosv-1
!
boot-start-marker
boot-end-marker
!
!
enable password cisco
!
no aaa new-model
!
!
!
mmi polling-interval 60
no mmi auto-configure
no mmi pvc
mmi snmp-timeout 180
!
!
!
!
!
!
!
!
!
!
!
!
!
no ip domain lookup
ip cef
ipv6 unicast-routing
ipv6 cef
!
multilink bundle-name authenticated
!
!
cts logging verbose
!
!
!
redundancy
!
!
! 
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 description Loopback
 ip address 192.168.0.2 255.255.255.255
 ipv6 address ::B:1:0:0:2/128
!
interface GigabitEthernet0/0
 description OOB Management
 ip address 172.16.1.193 255.255.255.0
 duplex auto
 speed auto
 media-type rj45
!
interface GigabitEthernet0/1
 description to vpp-1
 ip address 10.0.0.5 255.255.255.252
 duplex auto
 speed auto
 media-type rj45
 ipv6 address ::A:1:1:0:6/126
!
ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
!
! route to iosv-2
ipv6 route ::A:1:1:0:16/128 ::A:1:1:0:7
! route to iosv-4
ipv6 route ::A:1:1:0:22/128 ::A:1:1:0:7
!
!
!
control-plane
!
banner exec `
**************************************************************************
* IOSv is strictly limited to use for evaluation, demonstration and IOS  *
* education. IOSv is provided as-is and is not supported by Cisco's      *
* Technical Advisory Center. Any use or disclosure, in whole or in part, *
* of the IOSv Software or Documentation to any third party for any       *
* purposes is expressly prohibited except as otherwise authorized by     *
* Cisco in writing.                                                      *
**************************************************************************`
banner incoming `
**************************************************************************
* IOSv is strictly limited to use for evaluation, demonstration and IOS  *
* education. IOSv is provided as-is and is not supported by Cisco's      *
* Technical Advisory Center. Any use or disclosure, in whole or in part, *
* of the IOSv Software or Documentation to any third party for any       *
* purposes is expressly prohibited except as otherwise authorized by     *
* Cisco in writing.                                                      *
**************************************************************************`
banner login `
**************************************************************************
* IOSv is strictly limited to use for evaluation, demonstration and IOS  *
* education. IOSv is provided as-is and is not supported by Cisco's      *
* Technical Advisory Center. Any use or disclosure, in whole or in part, *
* of the IOSv Software or Documentation to any third party for any       *
* purposes is expressly prohibited except as otherwise authorized by     *
* Cisco in writing.                                                      *
**************************************************************************`
!
line con 0
 password cisco
line aux 0
line vty 0 4
 exec-timeout 720 0
 password cisco
 login
 transport input telnet ssh
!
no scheduler allocate
!
end</entry>
            <entry key="AutoNetkit.mgmt_ip" type="string"></entry>
        </extensions>
        <interface id="0" name="GigabitEthernet0/1" ipv4="10.0.0.5" ipv6="::a:1:1:0:6" netPrefixLenV4="30" netPrefixLenV6="126"/>
    </node>
    <node name="iosv-2" type="SIMPLE" subtype="IOSv" location="667,82" vmImage="IOSv-unlimited [f04cda9c-35d2-4afb-9dd1-a2bc6e6dd292]" ipv4="192.168.0.3" ipv6="::b:1:0:0:3">
        <extensions>
            <entry key="config" type="string">!
! Last configuration change at 16:41:10 UTC Fri Mar 27 2015
!
version 15.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname iosv-2
!
boot-start-marker
boot-end-marker
!
!
enable password cisco
!
no aaa new-model
!
!
!
mmi polling-interval 60
no mmi auto-configure
no mmi pvc
mmi snmp-timeout 180
!
!
!
!
!
!
!
!
!
!
!
!
!
no ip domain lookup
ip cef
ipv6 unicast-routing
ipv6 cef
!
multilink bundle-name authenticated
!
!
cts logging verbose
!
!
!
redundancy
!
!
! 
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 description Loopback
 ip address 192.168.0.3 255.255.255.255
 ipv6 address ::B:1:0:0:3/128
!
interface GigabitEthernet0/0
 description OOB Management
 ip address 172.16.1.191 255.255.255.0
 duplex auto
 speed auto
 media-type rj45
!
interface GigabitEthernet0/1
 description to vpp-2
 ip address 10.0.0.21 255.255.255.252
 duplex auto
 speed auto
 media-type rj45
 ipv6 address ::A:1:1:0:16/126
!
ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
!
ipv6 route ::A:1:1:0:6/128 ::A:1:1:0:17
!
!
!
control-plane
!
banner exec `
**************************************************************************
* IOSv is strictly limited to use for evaluation, demonstration and IOS  *
* education. IOSv is provided as-is and is not supported by Cisco's      *
* Technical Advisory Center. Any use or disclosure, in whole or in part, *
* of the IOSv Software or Documentation to any third party for any       *
* purposes is expressly prohibited except as otherwise authorized by     *
* Cisco in writing.                                                      *
**************************************************************************`
banner incoming `
**************************************************************************
* IOSv is strictly limited to use for evaluation, demonstration and IOS  *
* education. IOSv is provided as-is and is not supported by Cisco's      *
* Technical Advisory Center. Any use or disclosure, in whole or in part, *
* of the IOSv Software or Documentation to any third party for any       *
* purposes is expressly prohibited except as otherwise authorized by     *
* Cisco in writing.                                                      *
**************************************************************************`
banner login `
**************************************************************************
* IOSv is strictly limited to use for evaluation, demonstration and IOS  *
* education. IOSv is provided as-is and is not supported by Cisco's      *
* Technical Advisory Center. Any use or disclosure, in whole or in part, *
* of the IOSv Software or Documentation to any third party for any       *
* purposes is expressly prohibited except as otherwise authorized by     *
* Cisco in writing.                                                      *
**************************************************************************`
!
line con 0
 password cisco
line aux 0
line vty 0 4
 exec-timeout 720 0
 password cisco
 login
 transport input telnet ssh
!
no scheduler allocate
!
end</entry>
            <entry key="AutoNetkit.mgmt_ip" type="string"></entry>
        </extensions>
        <interface id="0" name="GigabitEthernet0/1" ipv4="10.0.0.21" ipv6="::a:1:1:0:16" netPrefixLenV4="30" netPrefixLenV6="126"/>
    </node>
    <node name="iosv-3" type="SIMPLE" subtype="IOSv" location="194,186" vmImage="IOSv-unlimited [f04cda9c-35d2-4afb-9dd1-a2bc6e6dd292]" ipv4="192.168.0.6" ipv6="::b:1:0:0:4">
        <extensions>
            <entry key="config" type="string">!
! Last configuration change at 16:27:43 UTC Fri Mar 27 2015
!
version 15.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname iosv-3
!
boot-start-marker
boot-end-marker
!
!
enable password cisco
!
no aaa new-model
!
!
!
mmi polling-interval 60
no mmi auto-configure
no mmi pvc
mmi snmp-timeout 180
!
!
!
!
!
!
!
!
!
!
!
!
!
no ip domain lookup
ip cef
ipv6 unicast-routing
ipv6 cef
!
multilink bundle-name authenticated
!
!
cts logging verbose
!
!
!
redundancy
!
!
! 
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 description Loopback
 ip address 192.168.0.6 255.255.255.255
 ipv6 address ::B:1:0:0:4/128
!
interface GigabitEthernet0/0
 description OOB Management
 ip address 172.16.1.192 255.255.255.0
 duplex auto
 speed auto
 media-type rj45
!
interface GigabitEthernet0/1
 description to vpp-1
 ip address 10.0.0.9 255.255.255.252
 duplex auto
 speed auto
 media-type rj45
 ipv6 address ::A:1:1:0:A/126
!
ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
!
!
!
!
control-plane
!
banner exec `
**************************************************************************
* IOSv is strictly limited to use for evaluation, demonstration and IOS  *
* education. IOSv is provided as-is and is not supported by Cisco's      *
* Technical Advisory Center. Any use or disclosure, in whole or in part, *
* of the IOSv Software or Documentation to any third party for any       *
* purposes is expressly prohibited except as otherwise authorized by     *
* Cisco in writing.                                                      *
**************************************************************************`
banner incoming `
**************************************************************************
* IOSv is strictly limited to use for evaluation, demonstration and IOS  *
* education. IOSv is provided as-is and is not supported by Cisco's      *
* Technical Advisory Center. Any use or disclosure, in whole or in part, *
* of the IOSv Software or Documentation to any third party for any       *
* purposes is expressly prohibited except as otherwise authorized by     *
* Cisco in writing.                                                      *
**************************************************************************`
banner login `
**************************************************************************
* IOSv is strictly limited to use for evaluation, demonstration and IOS  *
* education. IOSv is provided as-is and is not supported by Cisco's      *
* Technical Advisory Center. Any use or disclosure, in whole or in part, *
* of the IOSv Software or Documentation to any third party for any       *
* purposes is expressly prohibited except as otherwise authorized by     *
* Cisco in writing.                                                      *
**************************************************************************`
!
line con 0
 password cisco
line aux 0
line vty 0 4
 exec-timeout 720 0
 password cisco
 login
 transport input telnet ssh
!
no scheduler allocate
!
end</entry>
            <entry key="AutoNetkit.mgmt_ip" type="string"></entry>
        </extensions>
        <interface id="0" name="GigabitEthernet0/1" ipv4="10.0.0.9" ipv6="::a:1:1:0:a" netPrefixLenV4="30" netPrefixLenV6="126"/>
    </node>
    <node name="iosv-4" type="SIMPLE" subtype="IOSv" location="668,193" vmImage="IOSv-unlimited [f04cda9c-35d2-4afb-9dd1-a2bc6e6dd292]" ipv4="192.168.0.8" ipv6="::b:1:0:0:5">
        <extensions>
            <entry key="config" type="string">!
! Last configuration change at 16:27:43 UTC Fri Mar 27 2015
!
version 15.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname iosv-4
!
boot-start-marker
boot-end-marker
!
!
enable password cisco
!
no aaa new-model
!
!
!
mmi polling-interval 60
no mmi auto-configure
no mmi pvc
mmi snmp-timeout 180
!
!
!
!
!
!
!
!
!
!
!
!
!
no ip domain lookup
ip cef
ipv6 unicast-routing
ipv6 cef
!
multilink bundle-name authenticated
!
!
cts logging verbose
!
!
!
redundancy
!
!
! 
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 description Loopback
 ip address 192.168.0.8 255.255.255.255
 ipv6 address ::B:1:0:0:5/128
!
interface GigabitEthernet0/0
 description OOB Management
 ip address 172.16.1.194 255.255.255.0
 duplex auto
 speed auto
 media-type rj45
!
interface GigabitEthernet0/1
 description to vpp-2
 ip address 10.0.0.33 255.255.255.252
 duplex auto
 speed auto
 media-type rj45
 ipv6 address ::A:1:1:0:22/126
!
! Route to iosv-1
ipv6 route ::A:1:1:0:6/128 ::A:1:1:0:23
ip forward-protocol nd
!
!
no ip http server
no ip http secure-server
!
!
!
!
control-plane
!
banner exec `
**************************************************************************
* IOSv is strictly limited to use for evaluation, demonstration and IOS  *
* education. IOSv is provided as-is and is not supported by Cisco's      *
* Technical Advisory Center. Any use or disclosure, in whole or in part, *
* of the IOSv Software or Documentation to any third party for any       *
* purposes is expressly prohibited except as otherwise authorized by     *
* Cisco in writing.                                                      *
**************************************************************************`
banner incoming `
**************************************************************************
* IOSv is strictly limited to use for evaluation, demonstration and IOS  *
* education. IOSv is provided as-is and is not supported by Cisco's      *
* Technical Advisory Center. Any use or disclosure, in whole or in part, *
* of the IOSv Software or Documentation to any third party for any       *
* purposes is expressly prohibited except as otherwise authorized by     *
* Cisco in writing.                                                      *
**************************************************************************`
banner login `
**************************************************************************
* IOSv is strictly limited to use for evaluation, demonstration and IOS  *
* education. IOSv is provided as-is and is not supported by Cisco's      *
* Technical Advisory Center. Any use or disclosure, in whole or in part, *
* of the IOSv Software or Documentation to any third party for any       *
* purposes is expressly prohibited except as otherwise authorized by     *
* Cisco in writing.                                                      *
**************************************************************************`
!
line con 0
 password cisco
line aux 0
line vty 0 4
 exec-timeout 720 0
 password cisco
 login
 transport input telnet ssh
!
no scheduler allocate
!
end</entry>
            <entry key="AutoNetkit.mgmt_ip" type="string"></entry>
        </extensions>
        <interface id="0" name="GigabitEthernet0/1" ipv4="10.0.0.33" ipv6="::a:1:1:0:22" netPrefixLenV4="30" netPrefixLenV6="126"/>
    </node>
    <node name="vpp-1" type="SIMPLE" subtype="vPP" location="302,140" vmImage="vPP-open-hack [6729f745-45b4-47b2-8021-3b3c0beb5c5f]">
        <extensions>
            <entry key="config" type="string">#cloud-config
bootcmd:
- ln -s -t /etc/rc.d /etc/rc.local
hostname: vpp-1
manage_etc_hosts: true
runcmd:
- start ttyS0
- systemctl start getty@ttyS0.service
- systemctl start rc-local
- sed -i '/^\s*PasswordAuthentication\s\+no/d' /etc/ssh/sshd_config
- echo "UseDNS no" >> /etc/ssh/sshd_config
- service ssh restart
- service sshd restart
- sed -i 's/no-pci//' /opt/cisco/vpe/etc/qn.conf
- sed -i 's/1024/1024 decimal-interface-names/g' /opt/cisco/vpe/etc/qn.conf
users:
- default
- gecos: User configured by VIRL Configuration Engine 0.15.3
  lock-passwd: false
  name: cisco
  plain-text-passwd: cisco
  shell: /bin/bash
  ssh-authorized-keys:
  - VIRL-USER-SSH-PUBLIC-KEY
  sudo: ALL=(ALL) ALL
write_files:
- path: /etc/init/ttyS0.conf
  owner: root:root
  content: |
    # ttyS0 - getty
    # This service maintains a getty on ttyS0 from the point the system is
    # started until it is shut down again.
    start on stopped rc or RUNLEVEL=[12345]
    stop on runlevel [!12345]
    respawn
    exec /sbin/getty -L 115200 ttyS0 vt102
  permissions: '0644'
- path: /etc/systemd/system/dhclient@.service
  content: |
    [Unit]
    Description=Run dhclient on %i interface
    After=network.target
    [Service]
    Type=oneshot
    ExecStart=/sbin/dhclient %i -pf /var/run/dhclient.%i.pid -lf /var/lib/dhclient/dhclient.%i.lease
    RemainAfterExit=yes
  owner: root:root
  permissions: '0644'
- path: /opt/cisco/vpe/etc/vpp-server.conf
  owner: root:root
  permissions: '0644'
  content: |-
    set interface ip address GigabitEthernet0/4/0 10.0.0.6/30
    set interface ip address GigabitEthernet0/4/0 ::a:1:1:0:7/126
    set interface state GigabitEthernet0/4/0 up
    set interface ip address GigabitEthernet0/5/0 10.0.0.10/30
    set interface ip address GigabitEthernet0/5/0 ::a:1:1:0:b/126
    set interface state GigabitEthernet0/5/0 up
    set interface ip address GigabitEthernet0/6/0 10.0.0.13/30
    set interface ip address GigabitEthernet0/6/0 ::a:1:1:0:e/126
    set interface state GigabitEthernet0/6/0 up
    set interface ip address GigabitEthernet0/7/0 10.0.0.17/30
    set interface ip address GigabitEthernet0/7/0 ::a:1:1:0:12/126
    set interface state GigabitEthernet0/7/0 up
    sr tunnel src 0::a:1:1:0:6 dst 0::a:1:1:0:16/128 next 0::a:1:1:0:f next 0::a:1:1:0:1a next 0::a:1:1:0:16 tag 0::a:1:1:0:7 InPE 1 clean
    sr tunnel src 0::a:1:1:0:6 dst 0::a:1:1:0:22/128 next 0::a:1:1:0:f next 0::a:1:1:0:1a next 0::a:1:1:0:22 tag 0::a:1:1:0:7 InPE 1 clean
</entry>
        </extensions>
        <interface id="0" name="GigabitEthernet0/4/0" ipv4="10.0.0.6" ipv6="::a:1:1:0:7" netPrefixLenV4="30" netPrefixLenV6="126"/>
        <interface id="1" name="GigabitEthernet0/5/0" ipv4="10.0.0.10" ipv6="::a:1:1:0:b" netPrefixLenV4="30" netPrefixLenV6="126"/>
        <interface id="2" name="GigabitEthernet0/6/0" ipv4="10.0.0.13" ipv6="::a:1:1:0:e" netPrefixLenV4="30" netPrefixLenV6="126"/>
        <interface id="3" name="GigabitEthernet0/7/0" ipv4="10.0.0.17" ipv6="::a:1:1:0:12" netPrefixLenV4="30" netPrefixLenV6="126"/>
    </node>
    <node name="vpp-2" type="SIMPLE" subtype="vPP" location="541,147" vmImage="vPP-open-hack [6729f745-45b4-47b2-8021-3b3c0beb5c5f]">
        <extensions>
            <entry key="config" type="string">#cloud-config
bootcmd:
- ln -s -t /etc/rc.d /etc/rc.local
hostname: vpp-2
manage_etc_hosts: true
runcmd:
- start ttyS0
- systemctl start getty@ttyS0.service
- systemctl start rc-local
- sed -i '/^\s*PasswordAuthentication\s\+no/d' /etc/ssh/sshd_config
- echo "UseDNS no" >> /etc/ssh/sshd_config
- service ssh restart
- service sshd restart
- sed -i 's/no-pci//' /opt/cisco/vpe/etc/qn.conf
- sed -i 's/1024/1024 decimal-interface-names/g' /opt/cisco/vpe/etc/qn.conf
users:
- default
- gecos: User configured by VIRL Configuration Engine 0.15.3
  lock-passwd: false
  name: cisco
  plain-text-passwd: cisco
  shell: /bin/bash
  ssh-authorized-keys:
  - VIRL-USER-SSH-PUBLIC-KEY
  sudo: ALL=(ALL) ALL
write_files:
- path: /etc/init/ttyS0.conf
  owner: root:root
  content: |
    # ttyS0 - getty
    # This service maintains a getty on ttyS0 from the point the system is
    # started until it is shut down again.
    start on stopped rc or RUNLEVEL=[12345]
    stop on runlevel [!12345]
    respawn
    exec /sbin/getty -L 115200 ttyS0 vt102
  permissions: '0644'
- path: /etc/systemd/system/dhclient@.service
  content: |
    [Unit]
    Description=Run dhclient on %i interface
    After=network.target
    [Service]
    Type=oneshot
    ExecStart=/sbin/dhclient %i -pf /var/run/dhclient.%i.pid -lf /var/lib/dhclient/dhclient.%i.lease
    RemainAfterExit=yes
  owner: root:root
  permissions: '0644'
- path: /opt/cisco/vpe/etc/vpp-server.conf
  owner: root:root
  permissions: '0644'
  content: |-
    set interface ip address GigabitEthernet0/4/0 10.0.0.25/30
    set interface ip address GigabitEthernet0/4/0 ::a:1:1:0:1a/126
    set interface state GigabitEthernet0/4/0 up
    set interface ip address GigabitEthernet0/5/0 10.0.0.29/30
    set interface ip address GigabitEthernet0/5/0 ::a:1:1:0:1e/126
    set interface state GigabitEthernet0/5/0 up
    set interface ip address GigabitEthernet0/6/0 10.0.0.22/30
    set interface ip address GigabitEthernet0/6/0 ::a:1:1:0:17/126
    set interface state GigabitEthernet0/6/0 up
    set interface ip address GigabitEthernet0/7/0 10.0.0.34/30
    set interface ip address GigabitEthernet0/7/0 ::a:1:1:0:23/126
    set interface state GigabitEthernet0/7/0 up
    sr tunnel src 0::a:1:1:0:16 dst 0::a:1:1:0:6/128 next 0::a:1:1:0:1b next 0::a:1:1:0:e next 0::a:1:1:0:6 tag 0::a:1:1:0:17 InPE 1 clean
</entry>
        </extensions>
        <interface id="0" name="GigabitEthernet0/4/0" ipv4="10.0.0.25" ipv6="::a:1:1:0:1a" netPrefixLenV4="30" netPrefixLenV6="126"/>
        <interface id="1" name="GigabitEthernet0/5/0" ipv4="10.0.0.29" ipv6="::a:1:1:0:1e" netPrefixLenV4="30" netPrefixLenV6="126"/>
        <interface id="2" name="GigabitEthernet0/6/0" ipv4="10.0.0.22" ipv6="::a:1:1:0:17" netPrefixLenV4="30" netPrefixLenV6="126"/>
        <interface id="3" name="GigabitEthernet0/7/0" ipv4="10.0.0.34" ipv6="::a:1:1:0:23" netPrefixLenV4="30" netPrefixLenV6="126"/>
    </node>
    <node name="vpp-3" type="SIMPLE" subtype="vPP" location="415,89" vmImage="vPP-open-hack [6729f745-45b4-47b2-8021-3b3c0beb5c5f]">
        <extensions>
            <entry key="config" type="string">#cloud-config
bootcmd:
- ln -s -t /etc/rc.d /etc/rc.local
hostname: vpp-3
manage_etc_hosts: true
runcmd:
- start ttyS0
- systemctl start getty@ttyS0.service
- systemctl start rc-local
- sed -i '/^\s*PasswordAuthentication\s\+no/d' /etc/ssh/sshd_config
- echo "UseDNS no" >> /etc/ssh/sshd_config
- service ssh restart
- service sshd restart
- sed -i 's/no-pci//' /opt/cisco/vpe/etc/qn.conf
- sed -i 's/1024/1024 decimal-interface-names/g' /opt/cisco/vpe/etc/qn.conf
users:
- default
- gecos: User configured by VIRL Configuration Engine 0.15.3
  lock-passwd: false
  name: cisco
  plain-text-passwd: cisco
  shell: /bin/bash
  ssh-authorized-keys:
  - VIRL-USER-SSH-PUBLIC-KEY
  sudo: ALL=(ALL) ALL
write_files:
- path: /etc/init/ttyS0.conf
  owner: root:root
  content: |
    # ttyS0 - getty
    # This service maintains a getty on ttyS0 from the point the system is
    # started until it is shut down again.
    start on stopped rc or RUNLEVEL=[12345]
    stop on runlevel [!12345]
    respawn
    exec /sbin/getty -L 115200 ttyS0 vt102
  permissions: '0644'
- path: /etc/systemd/system/dhclient@.service
  content: |
    [Unit]
    Description=Run dhclient on %i interface
    After=network.target
    [Service]
    Type=oneshot
    ExecStart=/sbin/dhclient %i -pf /var/run/dhclient.%i.pid -lf /var/lib/dhclient/dhclient.%i.lease
    RemainAfterExit=yes
  owner: root:root
  permissions: '0644'
- path: /opt/cisco/vpe/etc/vpp-server.conf
  owner: root:root
  permissions: '0644'
  content: |-
    set interface ip address GigabitEthernet0/4/0 10.0.0.14/30
    set interface ip address GigabitEthernet0/4/0 ::a:1:1:0:f/126
    set interface state GigabitEthernet0/4/0 up
    set interface ip address GigabitEthernet0/5/0 10.0.0.26/30
    set interface ip address GigabitEthernet0/5/0 ::a:1:1:0:1b/126
    set interface state GigabitEthernet0/5/0 up
    comment { fix src rpf drop screws}
    ip route add ::a:1:1:0:6/128 via drop
    ip route add ::a:1:1:0:16/128 via drop
    ip route add ::a:1:1:0:22/128 via drop
</entry>
        </extensions>
        <interface id="0" name="GigabitEthernet0/4/0" ipv4="10.0.0.14" ipv6="::a:1:1:0:f" netPrefixLenV4="30" netPrefixLenV6="126"/>
        <interface id="1" name="GigabitEthernet0/5/0" ipv4="10.0.0.26" ipv6="::a:1:1:0:1b" netPrefixLenV4="30" netPrefixLenV6="126"/>
    </node>
    <node name="vpp-4" type="SIMPLE" subtype="vPP" location="419,216" vmImage="vPP-open-hack [6729f745-45b4-47b2-8021-3b3c0beb5c5f]">
        <extensions>
            <entry key="config" type="string">#cloud-config
bootcmd:
- ln -s -t /etc/rc.d /etc/rc.local
hostname: vpp-4
manage_etc_hosts: true
runcmd:
- start ttyS0
- systemctl start getty@ttyS0.service
- systemctl start rc-local
- sed -i '/^\s*PasswordAuthentication\s\+no/d' /etc/ssh/sshd_config
- echo "UseDNS no" >> /etc/ssh/sshd_config
- service ssh restart
- service sshd restart
- sed -i 's/no-pci//' /opt/cisco/vpe/etc/qn.conf
- sed -i 's/1024/1024 decimal-interface-names/g' /opt/cisco/vpe/etc/qn.conf
users:
- default
- gecos: User configured by VIRL Configuration Engine 0.15.3
  lock-passwd: false
  name: cisco
  plain-text-passwd: cisco
  shell: /bin/bash
  ssh-authorized-keys:
  - VIRL-USER-SSH-PUBLIC-KEY
  sudo: ALL=(ALL) ALL
write_files:
- path: /etc/init/ttyS0.conf
  owner: root:root
  content: |
    # ttyS0 - getty
    # This service maintains a getty on ttyS0 from the point the system is
    # started until it is shut down again.
    start on stopped rc or RUNLEVEL=[12345]
    stop on runlevel [!12345]
    respawn
    exec /sbin/getty -L 115200 ttyS0 vt102
  permissions: '0644'
- path: /etc/systemd/system/dhclient@.service
  content: |
    [Unit]
    Description=Run dhclient on %i interface
    After=network.target
    [Service]
    Type=oneshot
    ExecStart=/sbin/dhclient %i -pf /var/run/dhclient.%i.pid -lf /var/lib/dhclient/dhclient.%i.lease
    RemainAfterExit=yes
  owner: root:root
  permissions: '0644'
- path: /opt/cisco/vpe/etc/vpp-server.conf
  owner: root:root
  permissions: '0644'
  content: |-
    set interface ip address GigabitEthernet0/4/0 10.0.0.18/30
    set interface ip address GigabitEthernet0/4/0 ::a:1:1:0:13/126
    set interface state GigabitEthernet0/4/0 up
    set interface ip address GigabitEthernet0/5/0 10.0.0.30/30
    set interface ip address GigabitEthernet0/5/0 ::a:1:1:0:1f/126
    set interface state GigabitEthernet0/5/0 up
</entry>
        </extensions>
        <interface id="0" name="GigabitEthernet0/4/0" ipv4="10.0.0.18" ipv6="::a:1:1:0:13" netPrefixLenV4="30" netPrefixLenV6="126"/>
        <interface id="1" name="GigabitEthernet0/5/0" ipv4="10.0.0.30" ipv6="::a:1:1:0:1f" netPrefixLenV4="30" netPrefixLenV6="126"/>
    </node>
    <connection dst="/virl:topology/virl:node[5]/virl:interface[1]" src="/virl:topology/virl:node[1]/virl:interface[1]"/>
    <connection dst="/virl:topology/virl:node[5]/virl:interface[2]" src="/virl:topology/virl:node[3]/virl:interface[1]"/>
    <connection dst="/virl:topology/virl:node[7]/virl:interface[1]" src="/virl:topology/virl:node[5]/virl:interface[3]"/>
    <connection dst="/virl:topology/virl:node[8]/virl:interface[1]" src="/virl:topology/virl:node[5]/virl:interface[4]"/>
    <connection dst="/virl:topology/virl:node[6]/virl:interface[1]" src="/virl:topology/virl:node[7]/virl:interface[2]"/>
    <connection dst="/virl:topology/virl:node[6]/virl:interface[2]" src="/virl:topology/virl:node[8]/virl:interface[2]"/>
    <connection dst="/virl:topology/virl:node[2]/virl:interface[1]" src="/virl:topology/virl:node[6]/virl:interface[3]"/>
    <connection dst="/virl:topology/virl:node[4]/virl:interface[1]" src="/virl:topology/virl:node[6]/virl:interface[4]"/>
</topology>