Создание шаблона ВМ на основе Linux #50
Подготовка шаблона виртуальной машины на основе Linux
 
В панели управления предусмотрена возможность создавать собственные шаблоны виртуальных машин на основе подготовленных VHDX файлов.
Для возможности использовать собственный шаблон виртуальной машины, необходимо, чтобы операционная система была специальным образом подготовлена, был загружен VHDX-файл, и настроен пользовательский шаблон.
 
 
Для того, чтобы можно было создать шаблон VMM, необходимо подготовить VHDX файл с установленной и настроенной операционной системой.
Требования к ОС:
- установленные сервисы интеграции
- установленный VMM Agent for Linux (Для удобной установки VMM Agent в библиотеке присутствует образ VmmLinuxAgent.iso) 
 
Многие современные дистрибутивы Linux уже имеют в себе встроенные сервисы интеграции. Для них достаточно установить только VMM Agent Linux.
Актуальная информация по поддерживаемым дистрибутивам и их особенностями см. на https://docs.microsoft.com/ru-ru/previous-versions/windows/server/dn531030(v=ws.12)?redirectedfrom=MSDN
 
Для некоторых операционных систем потребуется выполнить некоторые специальные настройки.
 
Подготовка операционной системы
 
Для правильного развертывания виртуальных машин из подготовленного шаблона требуется подготовить операционную систему соответствующим образом.
 
Основные этапы:
  1. Установка операционной системы
  2. Проверка установленных сервисов интеграции.
    Список операционных систем, в которых уже присутствуют сервисы интеграции:
    Debian 7.5.0
    Fedora 20
    CentOS 6.5
    Ubuntu 14.04
    Oracle Linux 6.5
    RedHat Enterprise Linux 6.5
    SUSE Linux Enterprise Server 11 SP3
     
    Примечание:  При подготовке эталонного образа виртуальной машины с операционными системами, в которых уже присутствуют сервисы интеграции, следует создавать сетевой адаптер тип «Syntetic».
     
    В других случаях подготавливаемая виртуальная машина должна создаваться с сетевым адаптером тип Legacy, после чего требуется установить сервисы интеграции, а затем изменить сетевой адаптер с Legacy на Syntetic.
    Проверка сервисов интеграции осуществляется следующей командой: lsmod | grep hv
     
  3. Установить VMM Agent for Linux. Установка возможна из подготовленного образа с Vmm Linux Agent (используя образ в панели управления в библиотеке образов VmmLinuxAgent.iso, либо располагается в VMM в директории C:\Program Files\Microsoft System Center 2012 R2\Virtual Machine Manager\agents).
    Команда для установки VmmLinuxAgent:  ./install scvmmguestagent.1.0.2.1014.x64.tar
     
  4. Также необходимо выполнить специфические настройки для разных типов операционных систем, команды по каждой операционной системе ниже:
Debian
Установка пароля root
sudo passwd root
 
Удаление временного пользователя
userdel -r логин
 
Запрос обновлений
apt-get update
 
Установка обновлений
apt-get upgrade
 
Fedora 20
Установка обновлений
yum update
 
Удаление старого сетевого интерфейса (необходимо для правильного прописывания сетевых параметров после развертывания из шаблона)
rm /etc/sysconfig/network-scripts/ifcfg-eth0
 
Oracle Linux
Установка обновлений
yum update
 
Удаление старого сетевого интерфейса (необходимо для правильного прописывания сетевых параметров после развертывания из шаблона)
rm /etc/sysconfig/network-scripts/ifcfg-eth0
 
SUSE Linux Enterprise Server
Установка пароля root
sudo passwd root
 
Удаление  временного пользователя
userdel -r логин
 
Установка обновлений
zypper update
 
Удаление регистрации
suse_register -E
 
Red Hat Enterprise Linux
Установка обновлений
yum update
 
Удаление старого сетевого интерфейса (необходимо для правильного прописывания сетевых параметров после развертывания из шаблона)
rm /etc/sysconfig/network-scripts/ifcfg-eth0
 
CentOS
Установка пароля root
sudo passwd root
 
Удаление  временного пользователя
userdel -r логин
 
Установка обновлений
yum update
 
Удаление старого сетевого интерфейса (необходимо для правильного прописывания сетевых параметров после развертывания из шаблона)
rm /etc/sysconfig/network-scripts/ifcfg-eth0
 
Ubuntu
Установка пароля root
sudo passwd root
 
Удаление временного пользователя
userdel -r логин
 
Запрос обновлений
apt-get update
 
Установка обновлений
apt-get upgrade
 
 
 
Загрузка VHDX файла виртуальной машины
 
После подготовки операционной системы виртуальную машину нужно выключить, а VHDX файл подготовленной машины – загрузить в библиотеку по FTP.
Параметры доступа к библиотеке по FTP: указаны в панели управления cp.oblakoteka.ru
Директория для загрузки: VMMData.
 
 
Добавление шаблона
 
На странице «Управление облаком» необходимо перейти на закладку «Пользовательские шаблоны ВМ» и нажать кнопку «Добавить пользовательский шаблон»
На странице «Добавление пользовательского шаблона виртуальной машины» заполните следующие поля:
  1. Наименование шаблона. Из выпадающего списка выберите нужный шаблон и укажите разрешен он или блокирован. Примечание: В случае выбора опции «Блокирован» развертывание ВМ из шаблона будет невозможно.
  2. Отображаемое название шаблона. Вы можете указать любое понятное имя для шаблона
  3. Описание. Вы можете указать собственное описание деталей шаблона
  4. Тип генерации шаблона. Для Linux-систем укажите Linux Template
  5. StorePath. Это поле оставьте пустым.
  6. GUICommand.  Для корректного применения автоматических настроек к разворачиваемой виртуальной машине требуется добавить набор GUI команд. Для указания команд нажмите «добавить новую GUICommand». Примечание: Для каждой операционной системы используется свой набор команд, справочная информация по которым представлена ниже.
    После заполнения всех полей нажмите «Добавить шаблон».
 
Шаблон готов к использованию и отображается в списке шаблонов в закладке «Пользовательские шаблоны ВМ»
 
 
Информация по переменным, задаваемым в командах:
 
Сетевые параметры, выделяемые виртуальной машине:
$IP – Ip-адрес,  выделяемый виртуальной машине автоматически
$MASK – маска подсети
$GW – шлюз по умолчанию
$DNS1 – адрес первичного DNS-сервера
$DNS2 – адрес вторичного DNS-сервера
 
Команды для разных операционных систем
 
Debian
/bin/sh -c "cp /etc/network/interfaces /etc/network/interfaces.001"
/bin/sh -c "echo auto eth0 > /etc/network/interfaces"
/bin/sh -c "echo iface eth0 inet static >> /etc/network/interfaces"
/bin/sh -c "echo address $IP >> /etc/network/interfaces"
/bin/sh -c "echo netmask $MASK >> /etc/network/interfaces"
/bin/sh -c "echo gateway $GW >> /etc/network/interfaces"
/bin/sh -c "cp /etc/resolv.conf /etc/resolv.conf.001"
/bin/sh -c "echo nameserver $DNS1 > /etc/resolv.conf"
/bin/sh -c "echo nameserver $DNS2 >> /etc/resolv.conf"
 
Fedora 20
/bin/sh -c "cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.001"
/bin/sh -c "echo TYPE="Ethernet" > /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo BOOTPROTO="static" >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo NAME="eth0" >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo ONBOOT="yes" >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo IPADDR0="$IP" >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo NETMASK0="$MASK" >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo GATEWAY0="$GW" >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo DNS1="$DNS1" >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo DNS2="$DNS2" >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "cp /etc/resolv.conf /etc/resolv.conf.001"
/bin/sh -c "echo nameserver $DNS1 > /etc/resolv.conf"
/bin/sh -c "echo nameserver $DNS2 >> /etc/resolv.conf"
/bin/sh -c "cp /etc/hostname /etc/hostname.001"
/bin/sh -c "echo $OSvmname > /etc/hostname"
 
Oracle Linux
/bin/sh -c "cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.001"
/bin/sh -c "echo DEVICE=eth0 > /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo TYPE=Ethernet >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo ONBOOT=yes >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo NM_CONTROLLED=yes >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo BOOTPROTO=static >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo IPADDR=$IP >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo NETMASK=$MASK >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo GATEWAY=$GW >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo DNS1=$DNS1 >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo DNS2=$DNS2 >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "cp /etc/resolv.conf /etc/resolv.conf.001"
/bin/sh -c "echo nameserver $DNS1 > /etc/resolv.conf"
/bin/sh -c "echo nameserver $DNS2 >> /etc/resolv.conf"
 
SUSE Linux Enterprise Server
/bin/sh -c "cp /etc/sysconfig/network/ifcfg-eth0 /etc/sysconfig/network/ifcfg-eth0.001"
/bin/sh -c "echo BOOTPROTO='static' > /etc/sysconfig/network/ifcfg-eth0"
/bin/sh -c "echo IPADDR='$IP' >> /etc/sysconfig/network/ifcfg-eth0"
/bin/sh -c "echo NETMASK='$MASK' >> /etc/sysconfig/network/ifcfg-eth0"
/bin/sh -c "echo NAME='Ethernet Network Card' >> /etc/sysconfig/network/ifcfg-eth0"
/bin/sh -c "echo STARTMODE='auto' >> /etc/sysconfig/network/ifcfg-eth0"
/bin/sh -c "cp /etc/sysconfig/network/routes /etc/sysconfig/network/routes.001"
/bin/sh -c "echo default $GW > /etc/sysconfig/network/routes"
/bin/sh -c "cp /etc/resolv.conf /etc/resolv.conf.001"
/bin/sh -c "echo nameserver $DNS1 > /etc/resolv.conf"
/bin/sh -c "echo nameserver $DNS2 >> /etc/resolv.conf"
 
Red Hat Enterprise Linux
/bin/sh -c "cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.001"
/bin/sh -c "echo DEVICE=eth0 > /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo TYPE=Ethernet >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo ONBOOT=yes >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo NM_CONTROLLED=yes >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo BOOTPROTO=static >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo IPADDR=$IP >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo NETMASK=$MASK >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo GATEWAY=$GW >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo DNS1=$DNS1 >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo DNS2=$DNS2 >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo NAME="System eth0" >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "cp /etc/resolv.conf /etc/resolv.conf.001"
/bin/sh -c "echo nameserver $DNS1 > /etc/resolv.conf"
/bin/sh -c "echo nameserver $DNS2 >> /etc/resolv.conf"
 
CentOS
/bin/sh -c "cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.001"
/bin/sh -c "echo DEVICE=eth0 > /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo BOOTPROTO=static >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo ONBOOT=yes >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo IPADDR=$IP >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo NETMASK=$MASK >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "echo GATEWAY=$GW >> /etc/sysconfig/network-scripts/ifcfg-eth0"
/bin/sh -c "cp /etc/resolv.conf /etc/resolv.conf.001"
/bin/sh -c "echo nameserver $DNS1 > /etc/resolv.conf"
/bin/sh -c "echo nameserver $DNS2 >> /etc/resolv.conf"
 
Ubuntu
/bin/sh -c "cp /etc/network/interfaces /etc/network/interfaces.001"
/bin/sh -c "echo iface eth0 inet static > /etc/network/interfaces"
/bin/sh -c "echo address $IP >> /etc/network/interfaces"
/bin/sh -c "echo netmask $MASK >> /etc/network/interfaces"
/bin/sh -c "echo gateway $GW >> /etc/network/interfaces"
/bin/sh -c "echo auto eth0 >> /etc/network/interfaces"
/bin/sh -c "cp /etc/resolv.conf /etc/resolv.conf.001"
/bin/sh -c "echo nameserver $DNS1 > /etc/resolv.conf"
/bin/sh -c "echo nameserver $DNS2 >> /etc/resolv.conf"