Vagrant, Cisco IOS, Ansible, Часть 2

После того как был добавлен в 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

Vagrant Map

Print Friendly, PDF & Email
guest

0 Comments
Inline Feedbacks
View all comments