04/07/2019
Про систему HashiCorp Vagrant я уже ранее писал в этом блоге в статье — Vagrant — основы работы. Там мы разобрали как развернуть Vagrant и начать работу на базе облака Amazon AWS. Однако, возможности Vagrant охватывают и множество других систем по запуску виртуальных машин. Виртуализация на базе VMware vSphere распространена повсеместно в организациях в нашей стране. Vagrant может стыковаться и работать как с отдельными хостами гипервизоров VMware ESXi, так и с системой управления VMware vCenter. При этом при запуске будет запускаться виртуальная машина в системе виртуализации VMware, на которой мы сможем проводить необходимые тестовые работы. А после проведения необходимых работ, виртуальная машина будет полностью удаляться. И во время этого процесса никаких действий в интерфейсе VMware vSphere нам выполнять не придется.
Настройка хоста с Vagrant
Будем считать, что на нашей станции управления уже установлен Vagrant. Нам необходимо добавить необходимые плагины для работы с программным обеспечением vSphere, а также донастроить софт, чтобы это все «взлетело». В первую очередь нам нужно установить плагин vagrant-vsphere. Он позволит подключаться к хостам ESXi и системе управления vCenter. Это делается с помощью следующей команды:
# vagrant plugin install vagrant-vsphere
Для работы этого плагина нам нужна библиотека на Ruby — nokogiri, которая позволяет парсить XML/HTML. Устанавливаем ее в систему с помощью gem:
# gem install nokogiri
Также для работы плагина с Vsphere нам необходимо скачать и установить соответствующий dumy box. По ссылке скачиваем metadata.json файл в директорию, где у нас будет находиться Vagrantfile. После этого производим распаковку этого файла с помощью следующей команды:
# tar cvzf dummy.box ./metadata.json
Подготовительные работы на хосте с Vagrant завершены. Пришло время создать файл Vagrantfile (именно с таким названием), в котором будет указана необходимая конфигурация для работы с тестовой виртуальной машиной в vSphere. Пример содержимого такого файла приведен ниже
# Require the VSPHERE provider plugin require 'vagrant-vsphere' # Create and configure the vSphere instance(s) Vagrant.configure("2") do |config| config.vm.box = 'vsphere' config.vm.box_url = 'dummy.box' config.ssh.port = '22' config.ssh.username = 'vagrant' config.ssh.private_key_path = '/home/vagrant/.ssh/id_rsa' config.vm.network 'private_network', ip: 'xxx.xxx.xxx.xxx' config.vm.synced_folder ".", "/vagrant", disabled: true config.vm.provider :vsphere do |vsphere| vsphere.host = 'yyy.yyy.yyy.yyy' vsphere.data_center_name = 'SOME_DC' vsphere.compute_resource_name = 'SOME_CLUSTER' vsphere.resource_pool_name = 'SOME_POOL' vsphere.template_name = 'SOME_TEMPLATE' vsphere.name = 'TESTPC' vsphere.user = 'VSPHERE_USERNAME' vsphere.password = 'SOME_PASSWORD' vsphere.insecure = true vsphere.customization_spec_name = 'SOME_SPEC' end end
Из указанного файла хотелось бы прокоментировать несколько используемых параметров. Так, чтобы отключить синхронизацию SMB sharing папок на виртуальной машине (что зачастую бывает необходимо) мы прописываем следующий параметр config.vm.synced_folder:
config.vm.synced_folder ".", "/vagrant", disabled: true
Чтобы указать конкретный ip адрес для нашей тестовой машины нам необходимо выполнить несколько шагов. Во-первых, создасть в vSphere — политику VM Customization Specifications (показано ниже в разеделе Настройка vSphere), а также указать в Vagrantfile название этой политики и статический ip адрес, который мы хотим использовать. Для этого используем параметры config.vm.network и vsphere.customization_spec_name.
config.vm.network 'private_network', ip: 'xxx.xxx.xxx.xxx' .. vsphere.customization_spec_name = 'SOME_SPEC'
Все остальные параметры, я думаю, интуитивно понятны из конфигурации. Возможно еще стоит упомнять про параметр vsphere.insecure, который позволяет работать по HTTPS без необходимости покупки SSL сертификата на vSphere.
vsphere.insecure = true
Получили работающий Vagrant файл, который уже будет использоваться при запуске виртуальной машины в среде VMware. Далее приведем описание необходимых настроек в vSphere.
Настройка vSphere
Для того, чтобы иметь возможность использовать постоянный статический ip адрес на тестовой машине, создаваемой Vagrant, нам необходимо выполнить несколько манипуляций в среде vSphere. Заходим в Menu -> Policies and Profiles, где мы создадим новую политику VM Customization Specifications. При создании политики нам необходимо выбрать в настройках сети кастомную конфигруацию для сетевого адаптера. Скриншот мастера создания политики на этом шаге показан ниже.
В настройках сетевого адаптера прописываем статический ip адрес, который в дальнейшем при запуске Vagrant будет перезаписан тем, который указан в Vagrantfile. Проводим мастер настройки политики до завершения. И указываем название данной политики в нашем конфигурационном файле Vagrantfile. На этом настройка vSphere завершена.
Заключение
В статье описал реальный жизненный пример, который часто позволяет автоматизировать запуск и удаление виртуальной машины в среде VMware для проведения необходимых тестовых работ. Для меня это очень удобный интсрумент в процессе работы и разработки чего-то нового. Надеюсь и моим читателям это пригодится.
Добрый день!
Требуется покупка лицензии для работы Vagrant совместно с vSphere?
Роман, добрый день! В Vagrant никаких дополнительных лицензий не нужно.. Плагин для работы с vsphere абсолютно бесплатен.