четверг, 8 октября 2015 г.

VMware Photon OS (часть II)

Сегодня я хотел бы рассказать о том, как можно автоматизировать развертывание и настройку виртуальных машин с Photon OS при помощи Vagrant на гипервизоре VMware vSphere.

Предыдущая часть доступна по ссылке: http://blog.vmpress.org/2015/09/vmware-photon-os-i.html

Vagrant представляет собой достаточно популярное среди разработчиков ПО средство для автоматического развертывания ВМ для тестовых сред. Все настройки ВМ описываются в конфигурационном файле, после чего достаточно выполнить одну команду, чтобы получить готовую к работе ВМ. Vagrant поддерживает различные гипервизоры (Virtual Box, VMware Fusion, VMware Workstation, VMware vSphere, KVM) и облачные среды (Amazon Web Services, Digital Ocean, OpenStack). Для Vagrant доступно большое количество заранее подготовленных образов ВМ (boxes). Список можно посмотреть на сайте: http://www.vagrantbox.es/

Для демонстрации возможностей Vagrant создадим тестовую среду, в которой будут автоматически разворачиваться три виртуальные машины с Photon OS из заранее созданного шаблона, и для каждой ВМ будет назначаться имя и статический IP адрес. Для стенда потребуется инфраструктура vSphere 6.0 (по крайней мере один сервер ESXi и один сервер vCenter Server), а также управляющий компьютер, на который будет установлен сам Vagrant.

Установка и настройка Vagrant

Для управления нам потребуется выделенная машина. Vagrant может быть установлена на все основные платформы, включая Windows, MAC OS X и Linux. В данном примере используется Photon OS в Full инсталляции.

Установка Vagrant крайне проста. Для начала загрузите дистрибутив с сайта производителя: https://www.vagrantup.com/downloads.html. Для Photon OS потребуется 64-bit Linux (RPM) дистрибутив.

Для загрузки дистрибутива выполните:
wget https://dl.bintray.com/mitchellh/vagrant/vagrant_1.7.4_x86_64.rpm
Установите Vagrant, используя команду:
rpm -i vagrant_1.7.4_x86_64.rpm
Установите плагин для работы Vagrant с vSphere:
vagrant plugin install vagrant-vsphere
Поскольку для развертывания ВМ будет использоваться шаблон из VMware vSphere, то потребуется файл-заглушка для указания в конфигурационном файле Vagrantfile.
Найдите подходящий файл, с помощью команды:
find / | grep example_box

Заархивируйте файл метаданных metadata.json:
cd /root/.vagrant.d/gems/gems/vagrant-vsphere-1.5.0/example_box/metadata.json
tar cvzf dummy.box ./metadata.json
Создайте каталог и переместите туда архив:
mkdir ~/vagrant-vms/example_box
mv dummy.box ~/vagrant-vms/example_box
Создайте конфигурационный файл Vagrantfile:
touch ~/vagrant-vms/Vagrantfile
Отредактируйте файл с помощью vi или nano. Пример конфигурационного файла:
Vagrant.configure("2") do |config|
  config.vm.box = 'vsphere'
  config.vm.box_url = './example_box/dummy.box'

  config.vm.synced_folder '.', '/vagrant', id: 'vagrant-root', disabled: true

  config.vm.provider :vsphere do |vsphere|
    # The host we're going to connect to
    vsphere.host = 'vc01.company.local'

    # The host for the new VM
    vsphere.compute_resource_name = 'testclu02'

    # The template we're going to clone
    vsphere.template_name = '/Vagrant/photon-template'

    vsphere.customization_spec_name = 'Photon-Customization'

    # vSphere login
    vsphere.user = 'company.local\administrator'

    # vSphere password
    vsphere.password = 'P@ssw0rd'

    # If you don't have SSL configured correctly, set this to 'true'
    vsphere.insecure = true
  end

  config.vm.define 'node01' do |node01|
    node01.vm.provider :vsphere do |vsphere, override|
      override.vm.network 'private_network', ip: '192.168.1.191'
      vsphere.name = 'node01'
    end
  end

  config.vm.define 'node02' do |node02|
    node02.vm.provider :vsphere do |vsphere, override|
      override.vm.network 'private_network', ip: '192.168.1.192'
      vsphere.name = 'node02'
    end
  end

  config.vm.define 'node03' do |node03|
    node03.vm.provider :vsphere do |vsphere, override|
      override.vm.network 'private_network', ip: '192.168.1.193'
      vsphere.name = 'node03'
    end
  end
end

В данном файле используются следующие параметры:
  • config.vm.box_url - путь к файлу-заглушке, который был создан ранее.
  • vsphere.host - имя сервера vCenter для подключения.
  • vsphere.compute_resource_name - имя кластера vSphere или хоста ESXi, где будут создаваться ВМ.
  • vsphere.template_name - путь к файлу шаблона (в данном примере, шаблон с именем photon-template располагается в корневой папке Vagrant).
  • vsphere.cusomization_spec_name - имя Customization Specification, который используется для настройки ВМ.
  • vsphere.user - имя учетной записи для подключения к vCenter.
  • vsphere.password - пароль учетной записи для подключения к vCenter.
  • vsphere.insecure - подключаться к серверу с недоверенными сертификатами.
  • override.vm.network - IP адрес сетевого интерфейса ВМ.
  • vsphere.name - имя ВМ.
О других параметрах конфигурационного файла Vagrant можно прочитать по ссылке: https://github.com/nsidc/vagrant-vsphere

Настройка шаблона

Теперь нужно подготовить шаблон ВМ для развертывания. Создайте новую ВМ со следующими параметрами:
  • Имя ВМ: photon-template
  • Virtual machine version: 11
  • Тип ОС: CoreOS Linux (64-bit)
  • 2 vCPU
  • 2 GB RAM
  • 20 GB HDD
  • сетевой адаптер VMXNET3
Установите в качестве гостевой ОС Photon OS в Full инсталляции.

Дальнейшая настройка ВМ нужна, чтобы обеспечить возможность подключения к ВМ по SSH прямо из консоли Vagrant.

Создайте учетную запись для автоматического подключения с управляющей ВМ:
useradd vagrant
Задайте пароль для учетной записи:
passwd vagrant
Пароль может быть любым, главное, чтобы он удовлетворял требованиям сложности.

Отредактируйте файл sudo, используя команду visudo, добавив туда строчку:
vagrant ALL=(ALL) NOPASSWD:ALL

Для подключения по SSH из Vagrant рекомендуется использовать аутентификацию по ключам. По умолчанию, Vagrant использует общедоступную пару ключей, что является серьезной уязвимостью, т.к. кто угодно может получить закрытый ключ и подключиться к созданным ВМ. По умолчанию закрытый ключ хранится на управляющем компьютере в каталоге "/var/opt/vagrant/embedded/gems/gems/vagrant-<версия_vagrant>/keys".

Правильным вариантом будет сгенерировать собственную пару ключей и добавить их на управляющий компьютер и в шаблон ВМ. Но для тестовых целей, в случае, если ВМ не подключена к общедоступным сетям, можно использовать ленивый способ.

Создайте папку, чтобы сохранить в ней ssh ключи:
mkdir -p /home/vagrant/.ssh
Скопируйте в папку открытый ключ:
wget --no-check-certificate https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub -O /home/vagrant/.ssh/authorized_keys
Установите разрешения на каталог и установите владельца:
chmod 0700 /home/vagrant/.ssh
chmod 0600 /home/vagrant/.ssh/authorized_keys
chown -R vagrant /home/vagrant/.ssh
Выключите ВМ и создайте из нее шаблон.

Создайте Customization Specification с именем Photon-Customization для ВМ Linux. Выберите Custom settingsи задайте статический IP адрес для сетевого адаптера (IP адрес не должен совпадать с адресом, указанным в конфигурационном файле Vagrantfile).

Запуск Vagrant

Для запуска перейдите в папку ~/vagrant-vms/example_box/ с файлом Vagrantfile. Запустите ВМ с помощью команды
vagrant up --provider=vsphere

Vagrant запустит процедуру клонирования и настройки ВМ из шаблона.

Для подключения к ВМ из консоли Vagrant по SSH можно использовать команду:
vagrant ssh node01

Для отключения от ВМ и возвращения в консоль Vagrant просто введите exit.

После завершения работы с ВМ, вы можете их удалить с помощью команды:
vagrant destroy

При подготовке статьи использовались материалы: http://www.vmtocloud.com/how-to-use-vagrant-to-deploy-containers-on-vsphere-with-vmware-photon/

Комментариев нет:

Отправить комментарий