ESXi kickstart
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