Bare-Metal Provisioning своими Ρ€ΡƒΠΊΠ°ΠΌΠΈ, ΠΈΠ»ΠΈ АвтоматичСская ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° сСрвСров с нуля

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, я ДСнис ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΌΠΎΠΈΡ… Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ – Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° инфраструктурных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π² X5. БСгодня Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π²Π°ΠΌΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° Π±Π°Π·Π΅ общСдоступных инструмСнтов Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ систСму ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ сСрвСров. На ΠΌΠΎΠΉ взгляд, это интСрСсноС, простоС ΠΈ Π³ΠΈΠ±ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

Bare-Metal Provisioning своими Ρ€ΡƒΠΊΠ°ΠΌΠΈ, ΠΈΠ»ΠΈ АвтоматичСская ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° сСрвСров с нуля

Под ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΎΠΉ подразумСваСтся: ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ· Π½ΠΎΠ²ΠΎΠ³ΠΎ сСрвСра ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ настроСнный сСрвСр с ΠΎ.с. Linux ΠΈΠ»ΠΈ c Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ΠΎΠΌ ESXi (Ρ€Π°Π·Π»ΠΈΠ²ΠΊΠ° сСрвСров Windows Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π΅ обсуТдаСтся).

Π’Π΅Ρ€ΠΌΠΈΠ½Ρ‹:

  • сСрвСры – сСрвСры, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ.
  • инсталл-сСрвСр – основной сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт вСсь процСсс ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΏΠΎ сСти.

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Π° автоматизация?

Допустим, Π΅ΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Π°: массово ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ сСрвСра с нуля, Π² ΠΏΠΈΠΊΠ΅ – 30 Π² дСнь. Π‘Π΅Ρ€Π²Π΅Ρ€Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Π½Π° Π½ΠΈΡ… ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ОБ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒΡΡ ΠΈΠ»ΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€.

КакиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ входят Π² процСсс настройки (Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ):

  • ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ, ΠΌΡ‹ΡˆΡŒ, ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ ΠΊ сСрвСру;
  • Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ BIOS, RAID, IPMI;
  • ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²;
  • Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π· Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы (Π»ΠΈΠ±ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ ΠΈ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹);

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Как Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π΄Π΅ΠΏΠ»ΠΎΠΉ ОБ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Ρ‡Π΅Ρ€Π΅Π· установку с Ρ„Π°ΠΉΠ»ΠΎΠΌ Π°Π²Ρ‚ΠΎΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ². Но это Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅. Π₯отя Π½ΠΈΠΆΠ΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ этот Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» нСслоТно.

  • Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ОБ (hostname, IP, ΠΏΡ€ΠΎΡ‡Π΅Π΅).

ΠŸΡ€ΠΈ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ настройки ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сСрвСрС. Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ низкая.

Π‘ΡƒΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ – ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ участиС Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΈΠ· процСсса ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ сСрвСра. Максимально, насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Благодаря Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ сокращаСтся врСмя простоя ΠΌΠ΅ΠΆΠ΄Ρƒ опСрациями ΠΈ появляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ нСсколько сСрвСров ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π’Π°ΠΊΠΆΠ΅ сильно сниТаСтся Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ возникновСния ошибок ΠΈΠ·-Π·Π° чСловСчСского Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°.

Bare-Metal Provisioning своими Ρ€ΡƒΠΊΠ°ΠΌΠΈ, ΠΈΠ»ΠΈ АвтоматичСская ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° сСрвСров с нуля

Как происходит автоматичСская настройка сСрвСров?

Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ всС этапы Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ.

Π£ вас Π΅ΡΡ‚ΡŒ linux-сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π² качСствС PXE инсталл-сСрвСра. На Π½Π΅ΠΌ установлСны ΠΈ настроСны слуТбы: DHCP, TFTP.

Π˜Ρ‚Π°ΠΊ, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ сСрвСр (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ) ΠΏΠΎ PXE. Вспомним, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

  • На сСрвСрС Π²Ρ‹Π±Ρ€Π°Π½Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΏΠΎ сСти.
  • Π‘Π΅Ρ€Π²Π΅Ρ€ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ PXE-ROM сСтСвой ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈ обращаСтся ΠΊ инсталл-сСрвСру ΠΏΠΎ DHCP для получСния сСтСвого адрСса.
  • DHCP инсталл-сСрвСра Π²Ρ‹Π΄Π°Π΅Ρ‚ адрСс, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΎ дальнСйшСй Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Ρ‡Π΅Ρ€Π΅Π· PXE.
  • Π‘Π΅Ρ€Π²Π΅Ρ€ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ сСтСвой Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ с инсталл-сСрвСра ΠΏΠΎ PXE, дальнСйшая Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° происходит согласно ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ PXE.
  • ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° основС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² (ядро, initramfs, Ρ‚ΠΎΡ‡ΠΊΠΈ монтирования, ΠΎΠ±Ρ€Π°Π· squashfs ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅).

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ приводится описаниС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠΎ PXE Ρ‡Π΅Ρ€Π΅Π· BIOS mode. Π’ настоящСС врСмя производитСлями Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ внСдряСтся UEFI bootmode. Для PXE ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ DHCP-сСрвСра ΠΈ наличия Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ PXE-сСрвСра (мСню pxelinux).

Π€Π°ΠΉΠ» pxelinux.cfg/default:

default menu.c32
prompt 0
timeout 100
menu title X5 PXE Boot Menu
LABEL InstallServer Menu
	MENU LABEL InstallServer
	KERNEL menu.c32
	APPEND pxelinux.cfg/installserver
LABEL VMware Menu
	MENU LABEL VMware ESXi Install
	KERNEL menu.c32
	APPEND pxelinux.cfg/vmware
LABEL toolkit // мСню ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
	MENU LABEL Linux Scripting Toolkits
	MENU default
	KERNEL menu.c32
	APPEND pxelinux.cfg/toolkit // ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ мСню

Π€Π°ΠΉΠ» pxelinux.cfg/toolkit:

prompt 0
timeout 100
menu title X5 PXE Boot Menu
label mainmenu
    menu label ^Return to Main Menu
    kernel menu.c32
    append pxelinux.cfg/default
label x5toolkit-auto // ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” автоматичСский Ρ€Π΅ΠΆΠΈΠΌ
        menu label x5 toolkit autoinstall
        menu default
        kernel toolkit/tkcustom-kernel
        append initrd=toolkit/tk-initramfs.gz quiet net.ifnames=0 biosdevname=0 nfs_toolkit_ip=192.168.200.1 nfs_toolkit_path=tftpboot/toolkit nfs_toolkit_script=scripts/mount.sh script_cmd=master-install.sh CMDIS2=”…”
label x5toolkit-shell // для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ - консоль
        menu label x5 toolkit shell
        kernel toolkit/tkcustom-kernel
        append initrd=toolkit/tkcustom-initramfs.gz quiet net.ifnames=0 biosdevname=0 nfs_toolkit_ip=192.168.200.1 nfs_toolkit_path=tftpboot/toolkit nfs_toolkit_script=scripts/mount.sh script_cmd=/bin/bash CMDIS2=”…”

Π―Π΄Ρ€ΠΎ ΠΈ initramfs Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС – это ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ linux-ΠΎΠ±Ρ€Π°Π·, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ основная ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΈ настройка сСрвСра.

Как Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ядру. Π§Π°ΡΡ‚ΡŒ этих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ самим ядром. А Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для своих Ρ†Π΅Π»Π΅ΠΉ. Об этом Π±ΡƒΠ΄Π΅Ρ‚ рассказано Π΄Π°Π»Π΅Π΅, Π° ΠΏΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ просто Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ доступны Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΌ linux-ΠΎΠ±Ρ€Π°Π·Π΅ Ρ‡Π΅Ρ€Π΅Π· /proc/cmdline.

Π“Π΄Π΅ ΠΈΡ… Π²Π·ΡΡ‚ΡŒ, ядро ΠΈ initramfs?
Π—Π° основу, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ любой linux-дистрибутив. На Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅ΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅:

  • Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ (Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², возмоТности установки Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚);
  • скорСС всСго, потрСбуСтся ΠΊΠ°ΡΡ‚ΠΎΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ initramfs.

Как это сдСлано Π² нашСм Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ для X5? Π’ качСствС основы Π²Ρ‹Π±Ρ€Π°Π½ CentOS 7. ΠŸΡ€ΠΎΠ²Π΅Ρ€Π½Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚Ρ€ΡŽΠΊ: ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ Π±ΡƒΠ΄ΡƒΡ‰ΡƒΡŽ структуру ΠΎΠ±Ρ€Π°Π·Π°, ΡƒΠΏΠ°ΠΊΡƒΠ΅ΠΌ Π΅Π΅ Π² Π°Ρ€Ρ…ΠΈΠ² ΠΈ создадим initramfs, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ наш Π°Ρ€Ρ…ΠΈΠ² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. ΠŸΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΎΠ±Ρ€Π°Π·Π° Π°Ρ€Ρ…ΠΈΠ² Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² создаваСмый Ρ€Π°Π·Π΄Π΅Π» tmpfs. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ, ΠΏΡ€ΠΈ этом ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ live-ΠΎΠ±Ρ€Π°Π· linux со всСми Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ, состоящий всСго ΠΈΠ· Π΄Π²ΡƒΡ… Ρ„Π°ΠΉΠ»ΠΎΠ²: vmkernel ΠΈ initramfs.

#создаСм Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ: 

mkdir -p /tftpboot/toolkit/CustomTK/rootfs /tftpboot/toolkit/CustomTK/initramfs/bin

#ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ структуру:

yum groups -y install "Minimal Install" --installroot=/tftpboot/toolkit/CustomTK/rootfs/
yum -y install nfs-utils mariadb ntpdate mtools syslinux mdadm tbb libgomp efibootmgr dosfstools net-tools pciutils openssl make ipmitool OpenIPMI-modalias rng-tools --installroot=/tftpboot/toolkit/CustomTK/rootfs/
yum -y remove biosdevname --installroot=/tftpboot/toolkit/CustomTK/rootfs/

# ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ initramfs:

wget https://busybox.net/downloads/binaries/1.31.0-defconfig-multiarch-musl/busybox-x86_64 -O /tftpboot/toolkit/CustomTK/initramfs/bin/busybox
chmod a+x /tftpboot/toolkit/CustomTK/initramfs/bin/busybox
cp /tftpboot/toolkit/CustomTK/rootfs/boot/vmlinuz-3.10.0-957.el7.x86_64 /tftpboot/toolkit/tkcustom-kernel

# создаСм /tftpboot/toolkit/CustomTK/initramfs/init (Π½ΠΈΠΆΠ΅ содСрТаниС скрипта):

#!/bin/busybox sh
/bin/busybox --install /bin
mkdir -p /dev /proc /sys /var/run /newroot
mount -t proc proc /proc
mount -o mode=0755 -t devtmpfs devtmpfs /dev
mkdir -p /dev/pts /dev/shm /dev/mapper /dev/vc
mount -t devpts -o gid=5,mode=620 devpts /dev/pts
mount -t sysfs sysfs /sys
mount -t tmpfs -o size=4000m tmpfs /newroot
echo -n "Extracting rootfs... "
xz -d -c -f rootfs.tar.xz | tar -x -f - -C /newroot
echo "done"
mkdir -p /newroot/dev /newroot/proc /newroot/sys
mount --move /sys  /newroot/sys
mount --move /proc /newroot/proc
mount --move /dev  /newroot/dev
exec switch_root /newroot /sbin/init

# ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ rootfs ΠΈ initramfs:

cd /tftpboot/toolkit/CustomTK/rootfs
tar cJf /tftpboot/toolkit/CustomTK/initramfs/rootfs.tar.xz --exclude ./proc --exclude ./sys --exclude ./dev .
cd /tftpboot/toolkit/CustomTK/initramfs
find . -print0 | cpio --null -ov --format=newc | gzip -9 > /tftpboot/toolkit/tkcustom-initramfs-new.gz

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ ядро ΠΈ initramfs, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· linux ΠΏΠΎ PXE, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ консоль ОБ.

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ, Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ нашСй β€œΠ°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈβ€.

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠ±Ρ€Π°Π·Π° ΠΌΡ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² скрипт mount.sh.
Π’ΠΊΠ»ΡŽΡ‡ΠΈΠΌ скрипт mount.sh Π² автозапуск. Для этого потрСбуСтся ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ initramfs:

  • Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ initramfs (Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ initramfs, это Π½Π΅ трСбуСтся)
  • Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‡Π΅Ρ€Π΅Π· /proc/cmdline ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ дальшС;
  • Π·Π°ΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ initramfs.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’ случаС с X5 toolkit ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ пСрСдаСтся Π² скрипт /opt/x5/toolkit/bin/hook.sh с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ override.conf Π² getty tty1 (ExecStart=…)

Π˜Ρ‚Π°ΠΊ, загруТаСтся ΠΎΠ±Ρ€Π°Π·, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π² автозапускС стартуСт скрипт mount.sh. Π”Π°Π»Π΅Π΅ скрипт mount.sh Π² процСссС выполнСния Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ (script_cmd=) ΠΈ запускаСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ/скрипт.

label toolkit-auto
kernel …
append … nfs_toolkit_script=scripts/mount.sh script_cmd=master-install.sh

label toolkit-shell
kernel …
append … nfs_toolkit_script=scripts/mount.sh script_cmd=/bin/bash

Bare-Metal Provisioning своими Ρ€ΡƒΠΊΠ°ΠΌΠΈ, ΠΈΠ»ΠΈ АвтоматичСская ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° сСрвСров с нуля

Π—Π΄Π΅ΡΡŒ Π² Π»Π΅Π²ΠΎΠΉ части β€” мСню PXE, Π² ΠΏΡ€Π°Π²ΠΎΠΉ – схСма ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ управлСния.

C ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ управлСния ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ. Π’ зависимости ΠΎΡ‚ Π²Ρ‹Π±ΠΎΡ€Π° PXE-мСню запускаСтся Π»ΠΈΠ±ΠΎ скрипт автонастройки, Π»ΠΈΠ±ΠΎ консоль для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

Π’ случаС автоматичСской настройки ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ с инсталл-сСрвСра, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚:

  • скрипты;
  • сохранСнныС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ BIOS/UEFI Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сСрвСров;
  • ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ;
  • ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ для сСрвСров;
  • Π»ΠΎΠ³ΠΈ.

Π”Π°Π»Π΅Π΅ скрипт mount.sh ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ скрипту master-install.sh ΠΈΠ· Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ со скриптами.

Π”Π΅Ρ€Π΅Π²ΠΎ скриптов (порядок ΠΈΡ… запуска) выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

  • master-install
  • sharefunctions (ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ)
  • info (Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ)
  • models (установка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² инсталляции Π½Π° основС ΠΌΠΎΠ΄Π΅Π»ΠΈ сСрвСра)
  • prepare_utils (установка Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚)
  • fwupdate (ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ)
  • diag (элСмСнтарная диагностика)
  • biosconf (настройка биоса/ΡƒΠ΅Ρ„ΠΈ)
  • clockfix (настройка Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΌΠ°Ρ‚. ΠŸΠ»Π°Ρ‚Π΅)
  • srmconf (настройка интСрфСйса ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ интСрфСйса)
  • raidconf (настройка логичСских Ρ‚ΠΎΠΌΠΎΠ²)

ΠΎΠ΄ΠΈΠ½ ΠΈΠ·:

  • preinstall (ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° управлСния установщику ОБ ΠΈΠ»ΠΈ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ESXi)
  • merged-install (нСпосрСдствСнный старт распаковки ΠΎΠ±Ρ€Π°Π·Π°)

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ:

  • ΠΊΠ°ΠΊ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ сСрвСр ΠΏΠΎ PXE;
  • ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² собствСнный скрипт.


ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ. Π‘Ρ‚Π°Π»ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ вопросы:

  • Как ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ?
  • Какими ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСрвСр?
  • Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ настройки для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ сСрвСра?

Как ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ?

Π­Ρ‚ΠΎ просто – DMI:

dmidecode –s system-product-name
dmidecode –s system-manufacturer
dmidecode –s system-serial-number

Π—Π΄Π΅ΡΡŒ Π΅ΡΡ‚ΡŒ всС, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ: Π²Π΅Π½Π΄ΠΎΡ€, модСль, сСрийный Π½ΠΎΠΌΠ΅Ρ€. Если Π²Ρ‹ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ эта информация прСдставлСна Π²ΠΎ всСх сСрвСрах, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎ MAC-адрСсу. Π›ΠΈΠ±ΠΎ ΠΎΠ±ΠΎΠΈΠΌΠΈ способами ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Ссли Π²Π΅Π½Π΄ΠΎΡ€Ρ‹ сСрвСров Ρ€Π°Π·Π½Ρ‹Π΅ ΠΈ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… модСлях информация ΠΎ сСрийном Π½ΠΎΠΌΠ΅Ρ€Π΅ просто отсутствуСт.

На основС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ сСтСвыС ΠΏΠ°ΠΏΠΊΠΈ с инсталл-сСрвСра ΠΈ подгруТаСтся всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ (ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹, ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅).

Какими ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСрвСр?

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ для linux для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ. ВсС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ доступны Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сайтах Π²Π΅Π½Π΄ΠΎΡ€ΠΎΠ².

Bare-Metal Provisioning своими Ρ€ΡƒΠΊΠ°ΠΌΠΈ, ΠΈΠ»ΠΈ АвтоматичСская ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° сСрвСров с нуля

Π‘ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ°ΠΌΠΈ, я Π΄ΡƒΠΌΠ°ΡŽ, всС понятно. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ². Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ процСсс обновлСния ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ ΠΈ сообщаСт ΠΊΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°.

BIOS ΠΈ IPMI ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹. ΠŸΡ€ΠΈ нСобходимости шаблон ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ самой Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ.

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹ RAID Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Π΅Π½Π΄ΠΎΡ€ΠΎΠ² Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. Если это Π½Π΅ Ρ‚Π°ΠΊ, Ρ‚ΠΎ придСтся Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ сцСнарий настройки.

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ настройки RAID Ρ‡Π°Ρ‰Π΅ всСго ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

  • Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ.
  • Если ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ логичСскиС массивы – стираСм.
  • Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ физичСскиС диски ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ сколько ΠΈΡ….
  • Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ логичСский массив. ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π΅ΠΌ процСсс Π² случаС ошибки.

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ настройки для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ сСрвСра?

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, настройки всСх сСрвСров Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π½Π° инсталл-сСрвСрС. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° наш вопрос, Π½ΡƒΠΆΠ½ΠΎ сначала Ρ€Π΅ΡˆΠΈΡ‚ΡŒ: ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ настройки Π² инсталл-сСрвСр.

На ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΠΎΡ€Π°Ρ… Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ тСкстовыми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. (Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ тСкстовый Ρ„Π°ΠΉΠ» ΠΊΠ°ΠΊ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΉ способ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ настроСк).

МоТно Β«Ρ€Π°ΡΡˆΠ°Ρ€ΠΈΡ‚ΡŒΒ» тСкстовый Ρ„Π°ΠΉΠ» Π½Π° инсталл-сСрвСрС. И Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² скрипт mount.sh.

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°:

<сСрийный Π½ΠΎΠΌΠ΅Ρ€> <имя хоста> <ΠΏΠΎΠ΄ΡΠ΅Ρ‚ΡŒ>

Π­Ρ‚ΠΈ строки Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ» ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠΌ с Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. И Π΄Π°Π»Π΅Π΅ ΠΏΡ€ΠΈ настройкС сСрвСра ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ сСрвСра Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Ρ‹ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°.

Но, Π² пСрспСктивС, Π»ΡƒΡ‡ΡˆΠ΅, Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π‘Π” для хранСния настроСк, состояний ΠΈ ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ² инсталляций сСрвСров.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΠ΄Π½ΠΎΠΉ Π‘Π” Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ, ΠΈ потрСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ настройки Π² Π±Π°Π·Ρƒ. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ это слоТнСС, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с тСкстовым Ρ„Π°ΠΉΠ»ΠΎΠΌ, Π½ΠΎ, Π½Π° самом Π΄Π΅Π»Π΅, всС Π½Π΅ Ρ‚Π°ΠΊ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ, ΠΊΠ°ΠΊ каТСтся. ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π‘Π”, Π²ΠΏΠΎΠ»Π½Π΅ посильно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ самому. А ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² дальнСйшСм ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈ Π² свободном Ρ€Π΅ΠΆΠΈΠΌΠ΅ (ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹, ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ этикСток, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ).

Π‘Π΄Π΅Π»Π°Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ запрос Π² Π±Π°Π·Ρƒ ΠΈ ΡƒΠΊΠ°Π·Π°Π² сСрийный Π½ΠΎΠΌΠ΅Ρ€ сСрвСра, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для настройки сСрвСра.

Плюс, Π½Π°ΠΌ Π½Π΅ потрСбуСтся ΠΏΡ€ΠΈΠ΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ для ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ доступа, ΠΊΠ°ΠΊ Π² случаС с тСкстовым Ρ„Π°ΠΉΠ»ΠΎΠΌ.

Π–ΡƒΡ€Π½Π°Π» настройки ΠΌΠΎΠΆΠ΅ΠΌ Π½Π° всСх этапах ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π‘Π” ΠΈ процСсс установки ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· события ΠΈ Ρ„Π»Π°Π³ΠΈ этапов ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ:

  • Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ сСрвСр ΠΏΠΎ PXE;
  • ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π°ΡˆΠ΅ΠΌΡƒ скрипту;
  • ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ, ΠΏΠΎ сСрийному Π½ΠΎΠΌΠ΅Ρ€Ρƒ;
  • ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСрвСр ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ;
  • ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ настройки Π² Π‘Π” инсталл-сСрвСра с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ клиСнтской части.

Выяснили, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  • инсталлируСмый сСрвСр ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ настройки ΠΈΠ· Π‘Π”;
  • вСсь прогрСсс ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ фиксируСтся Π² Π‘Π” (Π»ΠΎΠ³ΠΈ, события, Ρ„Π»Π°Π³ΠΈ этапов).

Π§Ρ‚ΠΎ насчСт Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² устанавливаСмого ПО? Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€, ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π’Πœ ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ всС это?

Π’ случаС развСртывания ΠΎΠ±Ρ€Π°Π·Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы (linux) Π½Π° ΠΆΠ΅Π»Π΅Π·ΠΎ всС довольно просто:

  • ПослС настройки всСх ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² сСрвСра, Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΠΎΠ±Ρ€Π°Π·.
  • УстанавливаСм Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ grub.
  • Π”Π΅Π»Π°Π΅ΠΌ chroot ΠΈ настраиваСм всС Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Как ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ установщику ОБ (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ESXi).

  • ΠžΡ€Π³Π°Π½ΠΈΠ·ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ управлСния ΠΈΠ· нашСго скрипта установщику Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π° ΠΏΠΎ Ρ„Π°ΠΉΠ»Ρƒ Π°Π²Ρ‚ΠΎΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² (kickstart):
  • УдаляСм Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ Π½Π° дискС.
  • Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π» Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 500MB.
  • ΠŸΠΎΠΌΠ΅Ρ‡Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΉ.
  • Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π² FAT32.
  • ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ Π½Π° Π½Π΅Π³ΠΎ Π² ΠΊΠΎΡ€Π΅Π½ΡŒ установочныС Ρ„Π°ΠΉΠ»Ρ‹ ESXi.
  • УстанавливаСм syslinux.
  • ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ syslinux.cfg Π² /syslinux/

default esxi
prompt 1
timeout 50
label esxi
kernel mboot.c32
append -c boot.cfg

  • ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ mboot.c32 Π² /syslinux.
  • Π’ boot.cfg Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ kernelopt=ks=ftp://<IP инсталл-сСрвСра>/ks_esxi.cfg
  • ΠŸΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ сСрвСр.

ПослС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ сСрвСра с Π΅Π³ΠΎ ТСсткого диска загрузится установщик ESXi. ВсС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ установщика загрузятся Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Π΄Π°Π»Π΅Π΅ начнСтся установка ESXi, согласно ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ Π°Π²Ρ‚ΠΎΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ².

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ здСсь нСсколько строк ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Π°Π²Ρ‚ΠΎΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ks_esxi.cfg:

%firstboot --interpreter=busybox
…
# ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ сСрийный Π½ΠΎΠΌΠ΅Ρ€

SYSSN=$(esxcli hardware platform get | grep Serial | awk -F " " '{print $3}')

# ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ IP

IPADDRT=$(esxcli network ip interface ipv4 get | grep vmk0 | awk -F " " '{print $2}')
LAST_OCTET=$(echo $IPADDRT | awk -F'.' '{print $4}')

# ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ NFS инсталл-сСрвСра

esxcli storage nfs add -H is -s /srv/nfs_share -v nfsshare1

# ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ настройки ssh, для использования ssh-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

mv /etc/ssh /etc/ssh.tmp
cp -R /vmfs/volumes/nfsshare1/ssh /etc/
chmod go-r /etc/ssh/ssh_host_rsa_key

# ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ ovftool, для развСртывания Π’Πœ сСйчас, плюс Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ пригодится ΠΏΠΎΠ·ΠΆΠ΅

cp -R /vmfs/volumes/nfsshare1/ovftool /vmfs/volumes/datastore1/

# Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅ΠΌ Π’Πœ

/vmfs/volumes/datastore1/ovftool/tools/ovftool --acceptAllEulas --noSSLVerify --datastore=datastore1 --name=VM1 /vmfs/volumes/nfsshare1/VM_T/VM1.ova vi://root:[email protected]
/vmfs/volumes/datastore1/ovftool/tools/ovftool --acceptAllEulas --noSSLVerify --datastore=datastore1 --name=VM2 /vmfs/volumes/nfsshare1/VM_T/VM2.ova vi://root:[email protected]

# ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ строку с настройками нашСго сСрвСра

ssh root@is "mysql -h'192.168.0.1' -D'servers' -u'user' -p'secretpassword' -e "SELECT ... WHERE servers.serial='$SYSSN'"" | grep -v ^$ | sed 's/NULL//g' > /tmp/servers
...
# Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ скрипт настройки сСти

echo '#!/bin/sh' > /vmfs/volumes/datastore1/netconf.sh
echo "esxcli network ip interface ipv4 set -i=vmk0 -t=static --ipv4=$IPADDR --netmask=$S_SUB || exit 1" >> /vmfs/volumes/datastore1/netconf.sh
echo "esxcli network ip route ipv4 add -g=$S_GW -n=default || exit 1" >> /vmfs/volumes/datastore1/netconf.sh
chmod a+x /vmfs/volumes/datastore1/netconf.sh

# Π·Π°Π΄Π°Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ guestinfo.esxihost.id, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π² Π½Π΅ΠΌ сСрийный Π½ΠΎΠΌΠ΅Ρ€

echo "guestinfo.esxihost.id = "$SYSSN"" >> /vmfs/volumes/datastore1/VM1/VM1.vmx
echo "guestinfo.esxihost.id = "$SYSSN"" >> /vmfs/volumes/datastore1/VM2/VM2.vmx
...
# обновляСм ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Π±Π°Π·Π΅

SYSNAME=$(esxcli hardware platform get | grep Product | sed 's/Product Name://' | sed 's/^ *//')
UUID=$(vim-cmd hostsvc/hostsummary | grep uuid | sed 's/ //g;s/,$//' | sed 's/^uuid="//;s/"$//')
ssh root@is "mysql -D'servers' -u'user' -p'secretpassword' -e "UPDATE servers ... SET ... WHERE servers.serial='$SYSSN'""
ssh root@is "mysql -D'servers' -u'user' -p'secretpassword' -e "INSERT INTO events ...""

# Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ настройки SSH

rm -rf /etc/ssh
mv /etc/ssh.tmp /etc/ssh

# настраиваСм ΡΠ΅Ρ‚ΡŒ ΠΈ пСрСзагруТаСмся

esxcli system hostname set --fqdn=esx-${G_NICK}.x5.ru
/vmfs/volumes/datastore1/netconf.sh
reboot

На этом этапС установлСн ΠΈ настроСн Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€, скопированы Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

Как Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹?

ΠœΡ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ схитрили: Π²ΠΎ врСмя установки Π·Π°Π΄Π°Π»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ guestinfo.esxihost.id = "$SYSSN" Π² Ρ„Π°ΠΉΠ»Π΅ VM1.vmx, ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π² Π½Π΅ΠΌ сСрийный Π½ΠΎΠΌΠ΅Ρ€ физичСского сСрвСра.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ послС старта Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина (с установлСнным ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ vmware-tools) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ этому ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ:

ESXI_SN=$(vmtoolsd --cmd "info-get guestinfo.esxihost.id")

Π’ΠΎ Π΅ΡΡ‚ΡŒ Π’Πœ сумССт ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСбя (ΠΎΠ½Π° Π·Π½Π°Π΅Ρ‚ сСрийный Π½ΠΎΠΌΠ΅Ρ€ физичСского хоста), ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ запрос ΠΊ Π‘Π” инсталл-сСрвСра ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ. Π­Ρ‚ΠΎ всС оформляСтся Π² скрипт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈ стартС guestos vm (Π½ΠΎ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹: RunOnce).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ:

  • Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ сСрвСр ΠΏΠΎ PXE;
  • ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π°ΡˆΠ΅ΠΌΡƒ скрипту;
  • ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ, ΠΏΠΎ сСрийному Π½ΠΎΠΌΠ΅Ρ€Ρƒ;
  • ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСрвСр ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ;
  • ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ настройки Π² Π‘Π” инсталл-сСрвСра с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ клиСнтской части;
  • Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ П.О., Π² Ρ‚ΠΎΠΌ числС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Ρ‹Π²Π°Ρ‚ΡŒ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ esxi ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ (ΠΈ всС автоматичСски).

Выяснили, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  • инсталлируСмый сСрвСр ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ настройки ΠΈΠ· Π‘Π”;
  • вСсь прогрСсс ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ фиксируСтся Π² Π‘Π” (Π»ΠΎΠ³ΠΈ, события, Ρ„Π»Π°Π³ΠΈ этапов).


Π˜Ρ‚ΠΎΠ³:

Полагаю, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² гибкости, простотС, Π΅Π³ΠΎ возмоТностях ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅, поТалуйста, Π² коммСнтариях, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com