ESXi kickstart

Материал из Wiki
Перейти к: навигация, поиск

ESXi kickstart file

  • ESX можно установить с файлом ответов.
  • Существует файл ответа по умолчанию, который установит ESX без лишних вопросов, с паролем root = mypassword.
  • Так же, можно подложить свой файл ответов, как и раньше по сети, или на USB флешке.
  • и наконец можно развернуть готовую систему с предустановленными и настроенными ВМ


Создание своего образа

  • Скачать ESXi ISO
  • Подмонтировать образ:
mount -o loop VMware-VMvisor-Installer-5.x.x-XXXXXX.x86_64.iso /esxi_cdrom_mount
  • Cкопировать содержимое
cp -r /esxi_cdrom_mount /esxi_cdrom
cp ks_custom.cfg /esxi_cdrom
  • исправить ISOLINUX.CFG file в соответвии с требованиеми:

В моем случае он выгляит вот так:

DEFAULT menu.c32
MENU TITLE Dell Customized ESXi-5.0.0 Standard(A01) Installer Boot Menu
NOHALT 1
PROMPT 0
TIMEOUT 80
LABEL install3
  KERNEL mboot.c32
  APPEND -c boot.cfg ks=cdrom:/KS1.CFG
  MENU LABEL Dell Customized ESXi-5.0.0 Standard(A01) ^3 Installer

LABEL hddboot
  LOCALBOOT 0x80
  MENU LABEL ^Boot from local disk

На что тут стоит обратить внимание:

* ks=cdrom:/KS1.CFG -  указывает на файл кикстарта, собственно это ключевой момент. внимание - файл должен быть в верхнем регистре, с этим есть проблема. Я не особо искал решение но факт - фай в нижнем регистре не находиться при загрузке хотя на диске существует. С этим же столкнулся при установке виртуальных машин.
* Отладка конфига кикстарта муторное дело - быть предельно внимательным.
  • Пересоздать образ.

Так советует дока:

mkisofs                     -relaxed-filenames -J -R -o custom_esxi.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table /esxi_cdrom

Так делал я т.к. у меня был образ больше размера ДВД (тестовая установка на виртуальную машину, да да именно nested VM)

mkisofs -allow-limited-size -relaxed-filenames -J -R -o ./custom_esxi.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ./ISO_NEW/ISO_TEST/ 


После чего загружаемся с полученного диска, и система должна установиться сама, без вмешательства человека обезьяны

пример установочного конфига

Ниже я постараюсь прокомментировать конфиг, как можно подробнее:

install

  • куда ставить
install --firstdisk --overwritevmfs
  • настройка сети (для хост системы). В примерах часто приводят настройку из секции пост-инсталл - смыла если честно не вижу.
network --device=vmnic0 --addvmportgroup=false --bootproto=static --ip=172.16.252.253 --netmask=255.255.255.0 --gateway=172.16.252.254 --nameserver=172.16.1.2 --hostname=esx01.com
  • Задать пароль
rootpw ТутПароль
  • Перезагрузить после установки (опционально - не вынимая диск)
reboot 
#--noeject
  • Обязательный параметр - принять лицензию.
vmaccepteula
  • Необязательная секция - пакеты
#%packages
#@ ESX Server
#kernel-smp
#

post-install

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

%post --interpreter=busybox

sleep 10

echo Step 1 >> /vmfs/volumes/datastore1/log.sirmax1
ls -lsa /vmfs/volumes/ >> /vmfs/volumes/datastore1/log.sirmax2

/sbin/vmkload_mod iso9660 2>&1 >> /vmfs/volumes/datastore1/log.sirmax2
/sbin/esxcfg-mpath -b | grep "CD-ROM" 2>&1 >> /vmfs/volumes/datastore1/log.sirmax3
ls -lsa /vmfs/volumes/datastore1 >> /vmfs/volumes/datastore1/log.sirmax4
/sbin/vsish -e set /vmkModules/iso9660/mount $(/sbin/esxcfg-mpath -b | grep "CD-ROM" | awk '{print $1}') 2>&1  >> /vmfs/volumes/datastore1/log.sirmax5
ls -lsa /vmfs/volumes/  2>&1  >> /vmfs/volumes/datastore1/log.sirmax5
  • Копирую файлы виртуальных машин.

На диске все файлы внезапно в формате 8.3 и в верхнем регистре, это надо учитывать. Потому, собственно все машины я предпочел тащить в архиве.

# Copy VM files
mkdir /vmfs/volumes/datastore1/Vyatta_1 2>&1  >> /vmfs/volumes/datastore1/log.sirmax6
cd /vmfs/volumes/datastore1/Vyatta_1 2>&1  >> /vmfs/volumes/datastore1/log.sirmax7
cp /vmfs/volumes/CDROM/VM/V1/VYATTA_1.TAR . 2>&1  >> /vmfs/volumes/datastore1/log.sirmax8
tar -xvf VYATTA_1.TAR ; rm VYATTA_1.TAR; ls -1 | xargs gunzip 2>&1  >> /vmfs/volumes/datastore1/log.sirmax9


firstboot

Установка машин - при первой загрузке. В пост-инсталл секции этого делать нельзя. Тут же (ниже) - включаю ssh

%firstboot --interpreter=busybox
vim-cmd hostsvc/enable_ssh
vim-cmd hostsvc/start_ssh
vim-cmd hostsvc/enable_esx_shell
vim-cmd hostsvc/start_esx_shell

Зарегистрировать машину:

/bin/vim-cmd solo/registervm /vmfs/volumes/datastore1/Vyatta_1/Vyatta_1.vmx 2>&1  >> /vmfs/volumes/datastore1/log.sirmax10

Попробовать включить:

/bin/vim-cmd vmsvc/power.on 1 & 2>&1  >> /vmfs/volumes/datastore1/log.sirmax11

После попытки включения возникает вопрос от системы - "это скопированная машина? а что с ней делать то?" Потому, включение пускаю в фон, жду 10 сек. Без ответа на вопрос (на который можно ответить интерактивно в ГУИ - но это не путь джежая) - машина запуститься.

Комманда ниже отвечает на вопрос:

sleep 10 2>&1  >> /vmfs/volumes/datastore1/log.sirmax12
/bin/vim-cmd vmsvc/message 1 _vmx2 2 2>&1  >> /vmfs/volumes/datastore1/log.sirmax13

Для машины настраиваю автостарт:

sleep 30
# Enable autostart
/bin/vim-cmd hostsvc/autostartmanager/enable_autostart true
/bin/vim-cmd hostsvc/autostartmanager/update_autostartentry 1 PowerOn  90 1 stop 90 yes


весь конфиг одним куском

Кой-что для дебага, комменты и пустые строки вырезаны:

cat KS1.cfg  | grep -v "#" | grep -v ^$
install --firstdisk --overwritevmfs
network --device=vmnic0 --addvmportgroup=false --bootproto=static --ip=172.16.252.253 --netmask=255.255.255.0 --gateway=172.16.252.254 --nameserver=172.16.1.2 --hostname=esx01.com
rootpw ТутПароль
reboot 
vmaccepteula
%post --interpreter=busybox
sleep 10
echo Step 1 >> /vmfs/volumes/datastore1/log.sirmax1
ls -lsa /vmfs/volumes/ >> /vmfs/volumes/datastore1/log.sirmax2
/sbin/vmkload_mod iso9660 2>&1 >> /vmfs/volumes/datastore1/log.sirmax2
/sbin/esxcfg-mpath -b | grep "CD-ROM" 2>&1 >> /vmfs/volumes/datastore1/log.sirmax3
ls -lsa /vmfs/volumes/datastore1 >> /vmfs/volumes/datastore1/log.sirmax4
/sbin/vsish -e set /vmkModules/iso9660/mount $(/sbin/esxcfg-mpath -b | grep "CD-ROM" | awk '{print $1}') 2>&1  >> /vmfs/volumes/datastore1/log.sirmax5
ls -lsa /vmfs/volumes/  2>&1  >> /vmfs/volumes/datastore1/log.sirmax5
mkdir /vmfs/volumes/datastore1/Vyatta_1 2>&1  >> /vmfs/volumes/datastore1/log.sirmax6
cd /vmfs/volumes/datastore1/Vyatta_1 2>&1  >> /vmfs/volumes/datastore1/log.sirmax7
cp /vmfs/volumes/CDROM/VM/V1/VYATTA_1.TAR . 2>&1  >> /vmfs/volumes/datastore1/log.sirmax8
tar -xvf VYATTA_1.TAR ; rm VYATTA_1.TAR; ls -1 | xargs gunzip 2>&1  >> /vmfs/volumes/datastore1/log.sirmax9
%firstboot --interpreter=busybox
vim-cmd hostsvc/enable_ssh
vim-cmd hostsvc/start_ssh
vim-cmd hostsvc/enable_esx_shell
vim-cmd hostsvc/start_esx_shell
/bin/vim-cmd solo/registervm /vmfs/volumes/datastore1/Vyatta_1/Vyatta_1.vmx 2>&1  >> /vmfs/volumes/datastore1/log.sirmax10
/bin/vim-cmd vmsvc/power.on 1 & 2>&1  >> /vmfs/volumes/datastore1/log.sirmax11
sleep 10 2>&1  >> /vmfs/volumes/datastore1/log.sirmax12
/bin/vim-cmd vmsvc/message 1 _vmx2 2 2>&1  >> /vmfs/volumes/datastore1/log.sirmax13
sleep 30
/bin/vim-cmd hostsvc/autostartmanager/enable_autostart true
/bin/vim-cmd hostsvc/autostartmanager/update_autostartentry 1 PowerOn  90 1 stop 90 yes