Add Centos specific bootstrap files.
[csit.git] / resources / tools / virl / topologies / double-ring-nested.centos7.virl
1 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2 <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">
3     <extensions>
4         <entry key="management_network" type="String">flat</entry>
5     </extensions>
6     <node name="tg1" type="SIMPLE" subtype="server" location="570,238" vmImage="$$VM_IMAGE$$">
7         <extensions>
8             <entry key="config" type="String">#cloud-config
9 bootcmd:
10 - ln -s -t /etc/rc.d /etc/rc.local
11 hostname: tg1
12 manage_etc_hosts: true
13 nfs_server_scratch: $$NFS_SERVER_SCRATCH$$
14 nfs_server_common: $$NFS_SERVER_COMMON$$
15 runcmd:
16 - systemctl enable serial-getty-digi@ttyS0.service
17 - systemctl start serial-getty-digi@ttyS0.service
18 - systemctl start rc-local
19 - touch /tmp/before-sed
20 - sed -i 's/^\s*PasswordAuthentication\s\+no/PasswordAuthentication yes/' /etc/ssh/sshd_config
21 - echo "UseDNS no" &gt;&gt; /etc/ssh/sshd_config
22 - service ssh restart
23 - service sshd restart
24 users:
25 - default
26 - gecos: User configured by VIRL Configuration Engine 0.21.4
27   lock-passwd: false
28   name: cisco
29   plain-text-passwd: cisco
30   shell: /bin/bash
31   ssh-authorized-keys:
32   - VIRL-USER-SSH-PUBLIC-KEY
33   - VIRL-USER-SSH-PUBLIC-KEY
34   sudo: ALL=(ALL) NOPASSWD:ALL
35 write_files:
36 - path: /usr/local/sbin/cloud-instance-name
37   content: |
38     #!/usr/bin/python3.5
39     import pickle
40     print(pickle.loads(open('/var/lib/cloud/instance/obj.pkl', 'rb').read(), encoding="ACSII").metadata['name'])
41   owner: root:root
42   permissions: '0755'
43 - path: /etc/rc.local
44   owner: root:root
45   permissions: '0755'
46   content: |-
47     #!/bin/sh
48     grep -q nfs_server_scratch /var/lib/cloud/instance/user-data.txt || exit 1
49     grep -q nfs_server_common /var/lib/cloud/instance/user-data.txt || exit 1
50     nfs_server_scratch=$(grep -E '^nfs_server_scratch:' /var/lib/cloud/instance/user-data.txt | awk '{ print $2 }')
51     nfs_server_common=$(grep -E '^nfs_server_common:' /var/lib/cloud/instance/user-data.txt | awk '{ print $2 }')
52     instance_name=$(/usr/local/sbin/cloud-instance-name | cut -f 3 -d '&lt;' | cut -f 1 -d '&gt;')
53     echo My instance name is $instance_name
54
55     MAXCOUNT=12
56     RETRY=5
57
58     mkdir -p /scratch
59     mkdir -p /mnt/common
60
61     echo "Mounting NFS directories"
62     count=0
63     while [ $count -lt $MAXCOUNT ] &amp;&amp; ! mount -t nfs "${nfs_server_scratch}/${instance_name}" /scratch
64     do
65       sleep 5
66       count=$[$count+1]
67     done
68
69     mount -t nfs "${nfs_server_common}" /mnt/common
70
71     mkdir /scratch/$(hostname)
72     cp /VERSION /scratch/$(hostname)/
73
74     exit 0
75 </entry>
76             <entry key="Auto-generate config" type="Boolean">false</entry>
77         </extensions>
78         <interface id="0" name="eth1"/>
79         <interface id="1" name="eth2"/>
80         <interface id="2" name="eth3"/>
81         <interface id="3" name="eth4"/>
82         <interface id="4" name="eth5"/>
83         <interface id="5" name="eth6"/>
84     </node>
85     <node name="sut1" type="SIMPLE" subtype="vPP" location="425,26" vmImage="$$VM_IMAGE$$">
86         <extensions>
87             <entry key="config" type="string">#cloud-config
88 bootcmd:
89 - ln -s -t /etc/rc.d /etc/rc.local
90 hostname: sut1
91 manage_etc_hosts: true
92 nfs_server_scratch: $$NFS_SERVER_SCRATCH$$
93 nfs_server_common: $$NFS_SERVER_COMMON$$
94 runcmd:
95 - systemctl enable serial-getty-digi@ttyS0.service
96 - systemctl start serial-getty-digi@ttyS0.service
97 - systemctl start rc-local
98 - sed -i '/^\s*PasswordAuthentication\s\+no/d' /etc/ssh/sshd_config
99 - echo "UseDNS no" &gt;&gt; /etc/ssh/sshd_config
100 - service ssh restart
101 - service sshd restart
102 - sed -i 's/no-pci//' /opt/cisco/vpe/etc/qn.conf
103 - sed -i 's/1024/1024 decimal-interface-names/g' /opt/cisco/vpe/etc/qn.conf
104 - ln -s /dev/null /etc/sysctl.d/80-vpp.conf
105 users:
106 - default
107 - gecos: User configured by VIRL Configuration Engine 0.21.4
108   lock-passwd: false
109   name: cisco
110   plain-text-passwd: cisco
111   shell: /bin/bash
112   ssh-authorized-keys:
113   - VIRL-USER-SSH-PUBLIC-KEY
114   - VIRL-USER-SSH-PUBLIC-KEY
115   sudo: ALL=(ALL) NOPASSWD:ALL
116 write_files:
117 - path: /usr/local/sbin/cloud-instance-name
118   content: |
119     #!/usr/bin/python3.5
120     import pickle
121     print(pickle.loads(open('/var/lib/cloud/instance/obj.pkl', 'rb').read(), encoding="ACSII").metadata['name'])
122   owner: root:root
123   permissions: '0755'
124 - path: /etc/rc.local
125   owner: root:root
126   permissions: '0755'
127   content: |-
128     #!/bin/sh
129     grep -q nfs_server_scratch /var/lib/cloud/instance/user-data.txt || exit 1
130     grep -q nfs_server_common /var/lib/cloud/instance/user-data.txt || exit 1
131     nfs_server_scratch=$(grep -E '^nfs_server_scratch:' /var/lib/cloud/instance/user-data.txt | awk '{ print $2 }')
132     nfs_server_common=$(grep -E '^nfs_server_common:' /var/lib/cloud/instance/user-data.txt | awk '{ print $2 }')
133     instance_name=$(/usr/local/sbin/cloud-instance-name | cut -f 3 -d '&lt;' | cut -f 1 -d '&gt;')
134     echo My instance name is $instance_name
135
136     MAXCOUNT=12
137     RETRY=5
138
139     mkdir -p /scratch
140     mkdir -p /mnt/common
141
142     echo "Mounting NFS directories"
143     count=0
144     while [ $count -lt $MAXCOUNT ] &amp;&amp; ! mount -t nfs "${nfs_server_scratch}/${instance_name}" /scratch
145     do
146       sleep 5
147       count=$[$count+1]
148     done
149
150     mount -t nfs "${nfs_server_common}" /mnt/common
151
152     # Overwrite nested VM image with latest as per NFS
153     if [ -f /mnt/common/nested-vm-current.img ]
154     then
155       rm -f /var/lib/vm/vhost-nested.img
156       cp /mnt/common/nested-vm-current.img /var/lib/vm/vhost-nested.img
157     fi
158
159     mkdir /scratch/$(hostname)
160     cp /VERSION /scratch/$(hostname)/
161     cat /var/lib/vm/vhost-nested.img | strings | grep NESTED_VERSION= > /scratch/$(hostname)/NESTED_VERSION
162
163     exit 0
164 - path: /etc/sysctl.d/90-csit.conf
165   owner: root:root
166   content: |
167     # Number of 2MB hugepages desired
168     vm.nr_hugepages=1024
169
170     # Must be greater than or equal to (2 * vm.nr_hugepages).
171     vm.max_map_count=20000
172
173     # All groups allowed to access hugepages
174     vm.hugetlb_shm_group=0
175
176     # Shared Memory Max must be greator or equal to the total size of hugepages.
177     # For 2MB pages, TotalHugepageSize = vm.nr_hugepages * 2 * 1024 * 1024
178     # If the existing kernel.shmmax setting  (cat /sys/proc/kernel/shmmax)
179     # is greater than the calculated TotalHugepageSize then set this parameter
180     # to current shmmax value.
181     kernel.shmmax=2147483648
182 </entry>
183         </extensions>
184         <interface id="0" name="GigabitEthernet0/4/0"/>
185         <interface id="1" name="GigabitEthernet0/5/0"/>
186         <interface id="2" name="GigabitEthernet0/6/0"/>
187         <interface id="3" name="GigabitEthernet0/7/0"/>
188     </node>
189     <node name="sut2" type="SIMPLE" subtype="vPP" location="748,26" vmImage="$$VM_IMAGE$$">
190         <extensions>
191             <entry key="config" type="string">#cloud-config
192 bootcmd:
193 - ln -s -t /etc/rc.d /etc/rc.local
194 hostname: sut2
195 manage_etc_hosts: true
196 nfs_server_scratch: $$NFS_SERVER_SCRATCH$$
197 nfs_server_common: $$NFS_SERVER_COMMON$$
198 runcmd:
199 - systemctl enable serial-getty-digi@ttyS0.service
200 - systemctl start serial-getty-digi@ttyS0.service
201 - systemctl start rc-local
202 - sed -i '/^\s*PasswordAuthentication\s\+no/d' /etc/ssh/sshd_config
203 - echo "UseDNS no" &gt;&gt; /etc/ssh/sshd_config
204 - service ssh restart
205 - service sshd restart
206 - sed -i 's/no-pci//' /opt/cisco/vpe/etc/qn.conf
207 - sed -i 's/1024/1024 decimal-interface-names/g' /opt/cisco/vpe/etc/qn.conf
208 - ln -s /dev/null /etc/sysctl.d/80-vpp.conf
209 users:
210 - default
211 - gecos: User configured by VIRL Configuration Engine 0.21.4
212   lock-passwd: false
213   name: cisco
214   plain-text-passwd: cisco
215   shell: /bin/bash
216   ssh-authorized-keys:
217   - VIRL-USER-SSH-PUBLIC-KEY
218   - VIRL-USER-SSH-PUBLIC-KEY
219   sudo: ALL=(ALL) NOPASSWD:ALL
220 write_files:
221 - path: /usr/local/sbin/cloud-instance-name
222   content: |
223     #!/usr/bin/python3.5
224     import pickle
225     print(pickle.loads(open('/var/lib/cloud/instance/obj.pkl', 'rb').read(), encoding="ACSII").metadata['name'])
226   owner: root:root
227   permissions: '0755'
228 - path: /etc/rc.local
229   owner: root:root
230   permissions: '0755'
231   content: |-
232     #!/bin/sh
233     grep -q nfs_server_scratch /var/lib/cloud/instance/user-data.txt || exit 1
234     grep -q nfs_server_common /var/lib/cloud/instance/user-data.txt || exit 1
235     nfs_server_scratch=$(grep -E '^nfs_server_scratch:' /var/lib/cloud/instance/user-data.txt | awk '{ print $2 }')
236     nfs_server_common=$(grep -E '^nfs_server_common:' /var/lib/cloud/instance/user-data.txt | awk '{ print $2 }')
237     instance_name=$(/usr/local/sbin/cloud-instance-name | cut -f 3 -d '&lt;' | cut -f 1 -d '&gt;')
238     echo My instance name is $instance_name
239
240     MAXCOUNT=12
241     RETRY=5
242
243     mkdir -p /scratch
244     mkdir -p /mnt/common
245
246     echo "Mounting NFS directories"
247     count=0
248     while [ $count -lt $MAXCOUNT ] &amp;&amp; ! mount -t nfs "${nfs_server_scratch}/${instance_name}" /scratch
249     do
250       sleep 5
251       count=$[$count+1]
252     done
253
254     mount -t nfs "${nfs_server_common}" /mnt/common
255
256     # Overwrite nested VM image with latest as per NFS
257     if [ -f /mnt/common/nested-vm-current.img ]
258     then
259       rm -f /var/lib/vm/vhost-nested.img
260       cp /mnt/common/nested-vm-current.img /var/lib/vm/vhost-nested.img
261     fi
262
263     mkdir /scratch/$(hostname)
264     cp /VERSION /scratch/$(hostname)/
265     cat /var/lib/vm/vhost-nested.img | strings | grep NESTED_VERSION= > /scratch/$(hostname)/NESTED_VERSION
266
267     exit 0
268 - path: /etc/sysctl.d/90-csit.conf
269   owner: root:root
270   content: |
271     # Number of 2MB hugepages desired
272     vm.nr_hugepages=1024
273
274     # Must be greater than or equal to (2 * vm.nr_hugepages).
275     vm.max_map_count=20000
276
277     # All groups allowed to access hugepages
278     vm.hugetlb_shm_group=0
279
280     # Shared Memory Max must be greator or equal to the total size of hugepages.
281     # For 2MB pages, TotalHugepageSize = vm.nr_hugepages * 2 * 1024 * 1024
282     # If the existing kernel.shmmax setting  (cat /sys/proc/kernel/shmmax)
283     # is greater than the calculated TotalHugepageSize then set this parameter
284     # to current shmmax value.
285     kernel.shmmax=2147483648
286 </entry>
287         </extensions>
288         <interface id="0" name="GigabitEthernet0/4/0"/>
289         <interface id="1" name="GigabitEthernet0/5/0"/>
290         <interface id="2" name="GigabitEthernet0/6/0"/>
291         <interface id="3" name="GigabitEthernet0/7/0"/>
292     </node>
293     <connection dst="/virl:topology/virl:node[1]/virl:interface[3]" src="/virl:topology/virl:node[2]/virl:interface[1]"/>
294     <connection dst="/virl:topology/virl:node[1]/virl:interface[4]" src="/virl:topology/virl:node[2]/virl:interface[2]"/>
295     <connection dst="/virl:topology/virl:node[2]/virl:interface[3]" src="/virl:topology/virl:node[3]/virl:interface[3]"/>
296     <connection dst="/virl:topology/virl:node[2]/virl:interface[4]" src="/virl:topology/virl:node[3]/virl:interface[4]"/>
297     <connection dst="/virl:topology/virl:node[1]/virl:interface[5]" src="/virl:topology/virl:node[3]/virl:interface[1]"/>
298     <connection dst="/virl:topology/virl:node[1]/virl:interface[6]" src="/virl:topology/virl:node[3]/virl:interface[2]"/>
299 </topology>