После того как был добавлен в Vagrant образ vIOS, можно настраивать лабу. Первый интерфейс у vIOS используется vagrant для связи по ssh. Лаба будет состоять из 5 роутеров(схема представлена ниже). Для этого были созданы дополнительные интерфейсы в Vmware Fusion:
vmnet10, vmnet11, vmnet12, vmnet13, vmnet14, vmnet15
Файл с конфигурацией Vagrant находится на github.
Основные особенности файла конфигурации Vagrant.
Описано несколько provision действий, которые вызывают ansible с определенным тэгом, пример:
config.vm.provision "conf_int", type: "ansible" do |ansible|
ansible.playbook = "vagrant-vios.yml"
ansible.compatibility_mode = "2.0"
ansible.tags = "conf_int"
end
Это удобно, так как можно при запуске данной лабы указать конкретно какие задачи необходимо ansible запускать при инициализации(provision) лабы.
vagrant up --provision-with "conf_int"
Уже после запуска роутеров, также можно запускать определенные задачи ansible, используя команду provision:
vagrant provision --provision-with "int_reset"
После описания provision, идут секции непосредственно описывающие каждый роутер. В каждом роутере добавлены необходимые дополнительные интерфейсы, с учетом, что первый интерфейс не желательно использовать, он занят Vagrant-ом для взаимодействия по ssh. При добавлении интерфейсов, также указаны и соответствующие сети Vmware Fusion(vmnetXX):
config.vm.define "R1" do |node|
node.ssh.insert_key = false
# node.ssh.host = '172.16.55.11'
node.vm.box = "cisco-iosv-l3-156-2"
node.vm.boot_timeout = 90
# Disable default host <-> guest synced folder
node.vm.synced_folder ".", "/vagrant", disabled: true
# Set guest OS type to disable autodetection
node.vm.guest = :freebsd
# Disable port forwarding for SSH
node.vm.network :forwarded_port, guest: 22, host: 2201, id: "ssh", disabled: true
node.vm.provider :vmware_desktop do |v|
v.vmx['ethernet1.connectionType'] = "custom"
v.vmx['ethernet1.vnet'] = "vmnet10"
v.vmx['ethernet1.addressType'] = "generated"
v.vmx['ethernet1.virtualDev'] = "e1000"
v.vmx['ethernet1.present'] = "TRUE"
v.vmx['ethernet2.connectionType'] = "custom"
v.vmx['ethernet2.vnet'] = "vmnet13"
v.vmx['ethernet2.addressType'] = "generated"
v.vmx['ethernet2.virtualDev'] = "e1000"
v.vmx['ethernet2.present'] = "TRUE"
# https://www.vagrantup.com/docs/vmware/configuration.html#linked_clone
v.linked_clone = false
# https://www.vagrantup.com/docs/vmware/boxes.html#vmx-whitelisting
v.whitelist_verified = true
# https://www.vagrantup.com/docs/vmware/configuration.html#ssh_info_public
v.ssh_info_public = true
# Console port connection via telnet (or netcat)
v.vmx["serial0.fileName"] = "telnet://127.0.0.1:52001"
end
end