Стыкуем Vagrant и vSphere

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: 2 комментария

  1. Добрый день!
    Требуется покупка лицензии для работы Vagrant совместно с vSphere?

    1. Роман, добрый день! В Vagrant никаких дополнительных лицензий не нужно.. Плагин для работы с vsphere абсолютно бесплатен.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *