The existing Windows-Comman-Script has been enhanced so it now
- waits until the Router-VM is up
- got an IP-Address assigned using DHCP.
For Demonstration-Purposes an SSH-Connection will be established.
- The public-key of my laptop-ssh-client is part of the slipstreamed Router-Configuration.
Deploy a Router-VM with hostname „CSY“.
C:\RH\work\entwicklung\csr1000v-provision-in-virtualbox>CSR1000v-Virtual-Box.cmd CSY Virtual machine 'CSY' is created and registered. UUID: 915a7495-0728-4fc5-9c4c-21b3106a07e5 Settings file: 'c:\RH\LAB\VM\CSY\CSY.vbox' Creating ISO image at c:\RH\LAB\VM\CSY\CSY_config.iso, 1 Files, Size: 8,00 KB 100% 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Medium created. UUID: b79d708a-0a0a-4866-853b-3ac45c6a6127 Waiting for VM "CSY" to power on... VM "CSY" has been successfully started. Waiting for VM "CSY" to be initialized... Router "CSY" up and running, using IP=192.168.56.102 Establishing SSH-Connection as "labuser" Done
Establish an SSH-Connection to the discovered Router-IP:
Have a look to the startup-config used:
This is the „CMD“-Script used:
@echo off : Ronald Heitmann :set VM=CSR1000vX :set /p VM="Enter CSR1000v Hostname:" : Parameter given? Use it as VM-Name set VM=%1 if not defined VM set /p VM="Enter CSR1000v Hostname:" :echo %VM% set PUTTYUSER=labuser set PUTTYPK=C:\RH\work\putty\labuser.ppk set BASE=c:\RH\LAB\VM set ISO=C:\Downloads\csr1000v-universalk9.16.09.0x.iso : Create VM :VBoxManage createvm --name %VM% --ostype "Linux_64" --basefolder %BASE% --register VBoxManage createvm --name %VM% --ostype "Linux26_64" --basefolder %BASE% --register :now the Path in the Filesystem to ...LOC... exists set LOC=%BASE%\%VM% : Create ISO containing slipstreamed config-file : use UNXTOOLS "sed" to customize the "hostname"-Command : set CFGISO=%LOC%\%VM%_config.iso set CFGSRC=C:\RH\LAB\VM\iosxe_config.txt set CFGTXT=%LOC%\iosxe_config.txt cat %CFGSRC% | sed "s/HOSTNAME/%VM%/g" > %CFGTXT% "%ProgramFiles(x86)%"\CDBurnerXP\cdbxpcmd.exe --burn-data -file:%CFGTXT% -iso:%CFGISO% -format:iso : Customize VM VBoxManage modifyvm %VM% --memory 4096 VBoxManage modifyvm %VM% --vram 16 VBoxManage modifyvm %VM% --pae on --paravirtprovider default --hwvirtex on --nestedpaging on : Storage VBoxManage createhd --filename %LOC%\%VM%.vdi --size 8192 VBoxManage storagectl %VM% --name "IDE-CTL" --add ide --portcount 2 --bootable on VBoxManage storageattach %VM% --storagectl IDE-CTL --port 0 --device 0 --type hdd --medium %LOC%\%VM%.vdi VBoxManage storageattach %VM% --storagectl IDE-CTL --port 1 --device 0 --type dvddrive --medium %ISO% VBoxManage storageattach %VM% --storagectl IDE-CTL --port 1 --device 1 --type dvddrive --medium %CFGISO% VBoxManage modifyvm %VM% --boot1=dvd --boot2=disk --boot3=none --boot4=none : Serial-Interfaces via "Pipe" VBoxManage modifyvm %VM% --uartmode1 server \\.\pipe\%VM% VBoxManage modifyvm %VM% --uart1 0x3f8 4 VBoxManage modifyvm %VM% --uartmode2 server \\.\pipe\%VM%_diag VBoxManage modifyvm %VM% --uart2 0x2f8 4 : Audio VBoxManage modifyvm %VM% --audio none : NICs VBoxManage modifyvm %VM% --nic1 nat --nic2 hostonly --nic3 hostonly --nic4 hostonly VBoxManage modifyvm %VM% --nictype1 virtio --nictype2 virtio --nictype3 virtio --nictype4 virtio VBoxManage modifyvm %VM% --nicpromisc1 allow-all --nicpromisc2 allow-all --nicpromisc3 allow-all --nicpromisc4 allow-all VBoxManage modifyvm %VM% --hostonlyadapter2 "VirtualBox Host-Only Ethernet Adapter" VBoxManage modifyvm %VM% --hostonlyadapter3 "VirtualBox Host-Only Ethernet Adapter" VBoxManage modifyvm %VM% --hostonlyadapter4 "VirtualBox Host-Only Ethernet Adapter" : Set the VM-Logo for the VirtualBox-Inventory VBoxManage modifyvm %VM% --iconfile C:\RH\LAB\72px-Cisco_logo.svg.png : Boot the VM, it'l reboot once to apply the running-config VBoxManage startvm %VM% --type headless : Wait for the VM to be fully initialized : - with DHCP-IP-Address at "Gig 2" : - and store this IP-Address in Variable VMIP echo Waiting for VM "%VM%" to be initialized... for /f %%I in ('python WaitForCDPNeighbor.py -n %VM% -c -i "VirtualBox Host-Only Ethernet Adapter" 2^> nul') do @(set VMIP=%%I) echo Router "%VM%" up and running, using IP=%VMIP% : Connect to Router using Putty/SSH echo Establishing SSH-Connection as "%PUTTYUSER%" start putty -ssh -i %PUTTYPK% %PUTTYUSER%@%VMIP% echo Done