Jifanyie Utoaji wa Metal-Bare, au utayarishaji wa kiotomatiki wa seva kutoka mwanzo

Hujambo, mimi ni Denis na mojawapo ya maeneo yangu ya shughuli ni uundaji wa suluhisho za miundombinu katika X5. Leo ningependa kushiriki nawe jinsi unavyoweza kupeleka mfumo wa utayarishaji wa seva otomatiki kulingana na zana zinazopatikana kwa umma. Kwa maoni yangu, hii ni suluhisho la kuvutia, rahisi na rahisi.

Jifanyie Utoaji wa Metal-Bare, au utayarishaji wa kiotomatiki wa seva kutoka mwanzo

Kwa maandalizi tunamaanisha: geuza seva mpya nje ya kisanduku hadi seva iliyosanidiwa kikamilifu na OS. Linux au na hypervisor ya ESXi (utumaji wa seva za Windows haujajadiliwa katika nakala hii).

Masharti:

  • seva - seva zinazohitaji kusanidiwa.
  • seva ya usakinishaji ndio seva kuu ambayo hutoa mchakato mzima wa utayarishaji kwenye mtandao.

Kwa nini automatisering inahitajika?

Hebu sema kuna kazi: kuandaa kwa kiasi kikubwa seva kutoka mwanzo, kwa kilele - 30 kwa siku. Seva za wazalishaji tofauti na mifano, mifumo tofauti ya uendeshaji inaweza kusanikishwa juu yao, na inaweza kuwa na hypervisor au isiwe nayo.

Ni shughuli gani zimejumuishwa katika mchakato wa usanidi (bila otomatiki):

  • kuunganisha keyboard, panya, kufuatilia kwa seva;
  • sanidi BIOS, RAID, IPMI;
  • sasisha firmware ya sehemu;
  • tuma picha ya mfumo wa faili (au usakinishe hypervisor na nakala mashine virtual);

Kumbuka. Vinginevyo, uwekaji wa OS unawezekana kupitia usakinishaji na faili ya majibu ya kiotomatiki. Lakini hii haitajadiliwa katika makala. Ingawa utaona hapa chini kuwa kuongeza utendaji huu sio ngumu.

  • sanidi vigezo vya OS (jina la mwenyeji, IP, nk).

Kwa mbinu hii, mipangilio sawa inafanywa kwa mlolongo kwenye kila seva. Ufanisi wa kazi hiyo ni ndogo sana.

Kiini cha otomatiki ni kuondoa ushiriki wa mwanadamu kutoka kwa mchakato wa utayarishaji wa seva. Kwa kadiri iwezekanavyo.

Uendeshaji otomatiki hupunguza muda kati ya shughuli na hufanya iwezekane kutoa seva nyingi kwa wakati mmoja. Uwezekano wa makosa kutokana na mambo ya kibinadamu pia hupunguzwa sana.

Jifanyie Utoaji wa Metal-Bare, au utayarishaji wa kiotomatiki wa seva kutoka mwanzo

Je, seva husanidiwa kiotomatiki vipi?

Hebu tuchambue hatua zote kwa undani.

Una seva ya Linux ambayo unatumia kama seva ya usakinishaji ya PXE. Huduma zimewekwa na kusanidiwa juu yake: DHCP, TFTP.

Kwa hivyo, tunaanzisha seva (ambayo inahitaji kusanidiwa) kupitia PXE. Hebu tukumbuke jinsi inavyofanya kazi:

  • Boot ya mtandao imechaguliwa kwenye seva.
  • Seva hupakia PXE-ROM ya kadi ya mtandao na huwasiliana na seva ya usakinishaji kupitia DHCP ili kupata anwani ya mtandao.
  • Seva ya usakinishaji ya DHCP hutoa anwani, pamoja na maagizo ya kupakua zaidi kupitia PXE.
  • Seva hupakia bootloader ya mtandao kutoka kwa seva ya ufungaji kupitia PXE, upakiaji zaidi hutokea kulingana na faili ya usanidi wa PXE.
  • Boot hutokea kulingana na vigezo vilivyopokelewa (kernel, initramfs, pointi za mlima, picha ya squashfs, nk).

Kumbuka. Nakala hiyo inaelezea uanzishaji kupitia PXE kupitia hali ya BIOS. Hivi sasa, wazalishaji wanatekeleza kikamilifu mode ya boot ya UEFI. Kwa PXE, tofauti itakuwa katika usanidi wa seva ya DHCP na uwepo wa bootloader ya ziada.

Wacha tuangalie mfano wa usanidi wa seva ya PXE (menyu ya pxelinux).

Faili 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 // ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ мСню

Faili 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=”…”

Kernel na initramfs katika hatua hii ni picha ya kati ya Linux, kwa msaada wa ambayo maandalizi kuu na usanidi wa seva utafanyika.

Kama unaweza kuona, bootloader hupitisha vigezo vingi kwenye kernel. Baadhi ya vigezo hivi hutumiwa na kernel yenyewe. Na tunaweza kutumia baadhi kwa madhumuni yetu wenyewe. Hii itajadiliwa baadaye, lakini kwa sasa unaweza kukumbuka tu kwamba vigezo vyote vilivyopitishwa vitapatikana kwenye picha ya kati ya Linux kupitia /proc/cmdline.

Ninaweza kuzipata wapi, kernel na initramfs?
Kama msingi, unaweza kuchagua usambazaji wowote wa Linux. Tunachozingatia wakati wa kuchagua:

  • picha ya boot lazima iwe ya ulimwengu wote (upatikanaji wa madereva, uwezo wa kufunga huduma za ziada);
  • Uwezekano mkubwa zaidi, utahitaji kubinafsisha initramfs.

Hii inafanywaje katika suluhisho letu la X5? CentOS 7 ilichaguliwa kama msingi. Wacha tujaribu hila ifuatayo: tayarisha muundo wa picha wa siku zijazo, uipakie kwenye kumbukumbu na uunde initramfs, ambayo ndani yake kutakuwa na kumbukumbu ya mfumo wetu wa faili. Wakati wa kupakia picha, kumbukumbu itapanuliwa katika kizigeu kilichoundwa cha tmpfs. Kwa njia hii tutapata picha ndogo, lakini kamili ya moja kwa moja ya linux na huduma zote muhimu, zinazojumuisha faili mbili tu: vmkernel na 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

Kwa hivyo tumebainisha kernel na initramfs ambazo zinapaswa kupakiwa. Matokeo yake, katika hatua hii, kwa kupakia picha ya kati ya linux kupitia PXE, tutapokea console ya OS.

Kubwa, lakini sasa tunahitaji kuhamisha udhibiti kwa "otomatiki" yetu.

Inaweza kufanywa hivi.

Wacha tufikirie kuwa baada ya kupakia picha tunapanga kuhamisha udhibiti kwa hati ya mount.sh.
Wacha tujumuishe hati ya mount.sh kwenye autorun. Ili kufanya hivyo, utahitaji kurekebisha initramfs:

  • fungua initramfs (ikiwa tutatumia chaguo la initramfs hapo juu, hii haihitajiki)
  • jumuisha nambari katika uanzishaji ambayo itachambua vigezo vilivyopitishwa /proc/cmdline na udhibiti wa uhamishaji zaidi;
  • pakiti initramfs.

Kumbuka. Katika kesi ya zana ya zana ya X5, udhibiti wa upakiaji huhamishiwa kwenye hati /opt/x5/toolkit/bin/hook.sh с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ override.conf Π² getty tty1 (ExecStart=…)

Kwa hivyo, picha imepakiwa, ambayo hati ya mount.sh huanza kwa autorun. Ifuatayo, hati ya mount.sh inachanganua vigezo vilivyopitishwa (script_cmd=) wakati wa utekelezaji na kuzindua programu/script muhimu.

lebo ya zana-auto
punje...
append...nfs_toolkit_script=scripts/mount.sh script_cmd=master-install.sh

lebo ya zana-shell
punje...
append...nfs_toolkit_script=scripts/mount.sh script_cmd=/bin/bash

Jifanyie Utoaji wa Metal-Bare, au utayarishaji wa kiotomatiki wa seva kutoka mwanzo

Hapa upande wa kushoto ni menyu ya PXE, upande wa kulia ni mchoro wa uhamishaji wa udhibiti.

Tulifikiria uhamishaji wa udhibiti. Kulingana na chaguo la menyu ya PXE, hati ya usanidi otomatiki au kiweko cha utatuzi huzinduliwa.

Katika kesi ya usanidi wa kiotomatiki, saraka muhimu zimewekwa kutoka kwa seva ya usakinishaji, ambayo ina:

  • maandishi;
  • templates za BIOS / UEFI zilizohifadhiwa kwa seva mbalimbali;
  • firmware;
  • huduma za seva;
  • magogo

Kisha, hati ya mount.sh huhamisha udhibiti hadi hati ya master-install.sh kutoka kwenye saraka ya hati.

Mti wa maandishi (utaratibu ambao huzinduliwa) unaonekana kama hii:

  • bwana-sakinisha
  • kazi za kushiriki (utendaji zilizoshirikiwa)
  • habari (matokeo ya habari)
  • mifano (kuweka vigezo vya usakinishaji kulingana na mfano wa seva)
  • kuandaa_utils (ufungaji wa huduma muhimu)
  • fwupdate (sasisho la programu)
  • diag (uchunguzi wa kimsingi)
  • biosconf (mipangilio ya BIOS/UEFI)
  • mpangilio wa saa (kuweka saa kwenye ubao wa mama)
  • srmconf (usanidi wa kiolesura cha mbali)
  • raidconf (kusanidi kiasi cha kimantiki)

moja ya:

  • kusakinisha mapema (kuhamisha udhibiti kwa OS au kisakinishi cha hypervisor, kama vile ESXi)
  • kuunganishwa-kusakinisha (kuanza mara moja kwa kufungua picha)

Sasa tunajua:

  • jinsi ya kuanzisha seva kupitia PXE;
  • jinsi ya kuhamisha udhibiti kwa hati yako mwenyewe.


Tuendelee. Maswali yafuatayo yamekuwa muhimu:

  • Jinsi ya kutambua seva tunayotayarisha?
  • Ni huduma gani na jinsi ya kusanidi seva?
  • Jinsi ya kupata mipangilio ya seva maalum?

Jinsi ya kutambua seva tunayotayarisha?

Ni rahisi - DMI:

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

Kila kitu unachohitaji kiko hapa: muuzaji, mfano, nambari ya serial. Ikiwa huna uhakika kwamba taarifa hii iko katika seva zote, unaweza kuzitambua kwa anwani zao za MAC. Au kwa njia zote mbili kwa wakati mmoja, ikiwa wachuuzi wa seva ni tofauti na kwa mifano fulani hakuna habari kuhusu nambari ya serial.

Kulingana na habari iliyopokelewa, folda za mtandao zimewekwa kutoka kwa seva ya ufungaji na kila kitu muhimu kinapakiwa (huduma, firmware, nk).

Ni huduma gani na jinsi ya kusanidi seva?

Nitatoa huduma za Linux kwa watengenezaji wengine. Huduma zote zinapatikana kwenye tovuti rasmi za wauzaji.

Jifanyie Utoaji wa Metal-Bare, au utayarishaji wa kiotomatiki wa seva kutoka mwanzo

Na firmware, nadhani kila kitu ni wazi. Kawaida huja katika mfumo wa faili zinazoweza kutekelezwa. Faili inayoweza kutekelezwa inadhibiti mchakato wa kusasisha programu dhibiti na kuripoti msimbo wa kurejesha.

BIOS na IPMI kawaida husanidiwa kupitia violezo. Ikiwa ni lazima, template inaweza kuhaririwa kabla ya kupakua.

Huduma za RAID kutoka kwa wachuuzi wengine pia zinaweza kusanidiwa kwa kutumia kiolezo. Ikiwa sio hivyo, basi itabidi uandike hati ya usanidi.

Utaratibu wa kusanidi RAID mara nyingi ni kama ifuatavyo.

  • Tunaomba usanidi wa sasa.
  • Ikiwa tayari kuna safu za mantiki, tunazifuta.
  • Hebu tuangalie ni disks gani za kimwili zilizopo na ni ngapi.
  • Unda safu mpya ya kimantiki. Tunakatiza mchakato ikiwa kuna hitilafu.

Jinsi ya kupata mipangilio ya seva maalum?

Wacha tufikirie kuwa mipangilio ya seva zote itahifadhiwa kwenye seva ya usakinishaji. Katika kesi hii, kujibu swali letu, lazima kwanza tuamue jinsi ya kuhamisha mipangilio kwenye seva ya ufungaji.

Mara ya kwanza, unaweza kupata na faili za maandishi. (Katika siku zijazo, unaweza kutaka kutumia faili ya maandishi kama njia mbadala ya kuhamisha mipangilio.)

Unaweza "kushiriki" faili ya maandishi kwenye seva ya usakinishaji. Na ongeza mlima wake kwenye hati ya mount.sh.

Kwa mfano, mistari itaonekana kama hii:

<nambari ya mfululizo> <jina la mwenyeji> <subnet>

Laini hizi zitahamishiwa kwenye faili na mhandisi kutoka kwa mashine yake ya kazi. Na kisha, wakati wa kuanzisha seva, vigezo vya seva maalum vitasomwa kutoka kwa faili.

Lakini, kwa muda mrefu, ni bora kutumia hifadhidata kuhifadhi mipangilio, majimbo na kumbukumbu za usakinishaji wa seva.

Bila shaka, hifadhidata pekee haitoshi, na utahitaji kuunda sehemu ya mteja kwa usaidizi wa mipangilio ambayo itahamishiwa kwenye hifadhidata. Hii ni ngumu zaidi kutekeleza ikilinganishwa na faili ya maandishi, lakini kwa kweli, kila kitu sio ngumu kama inavyoonekana. Inawezekana kabisa kuandika toleo la chini la mteja ambalo litahamisha tu data kwenye hifadhidata mwenyewe. Na katika siku zijazo itawezekana kuboresha programu ya mteja katika hali ya bure (ripoti, maandiko ya uchapishaji, kutuma arifa, nk ambayo inakuja akilini).

Kwa kufanya ombi maalum kwa hifadhidata na kutaja nambari ya serial ya seva, tutapokea vigezo muhimu vya kusanidi seva.

Zaidi ya hayo, hatutahitaji kuja na kufuli kwa ufikiaji kwa wakati mmoja, kama ilivyo kwa faili ya maandishi.

Tunaweza kuandika logi ya usanidi kwenye hifadhidata katika hatua zote na kudhibiti mchakato wa usakinishaji kupitia matukio na bendera za hatua za maandalizi.

Sasa tunajua jinsi gani:

  • fungua seva kupitia PXE;
  • uhamishaji wa udhibiti kwa hati yetu;
  • tambua seva ambayo inahitaji kutayarishwa na nambari yake ya serial;
  • sanidi seva kwa kutumia huduma zinazofaa;
  • kuhamisha mipangilio kwenye hifadhidata ya seva ya usakinishaji kwa kutumia sehemu ya mteja.

Tuligundua jinsi:

  • seva iliyosanikishwa inapokea mipangilio muhimu kutoka kwa hifadhidata;
  • maendeleo yote ya maandalizi yanarekodiwa kwenye hifadhidata (magogo, matukio, bendera za jukwaa).

Vipi kuhusu aina tofauti za programu unazosakinisha? Jinsi ya kufunga hypervisor, nakala ya VM na usanidi yote?

Katika kesi ya kupeleka picha ya mfumo wa faili (linux) kwa vifaa, kila kitu ni rahisi sana:

  • Baada ya kuanzisha vipengele vyote vya seva, tunapeleka picha.
  • Sakinisha bootloader ya grub.
  • Tunatengeneza na kusanidi kila kitu kinachohitajika.

Jinsi ya kuhamisha udhibiti kwa kisakinishi cha OS (kwa kutumia ESXi kama mfano).

  • Tunapanga uhamishaji wa udhibiti kutoka kwa hati yetu hadi kwa kisakinishi cha hypervisor kwa kutumia faili ya majibu ya kiotomatiki (kickstart):
  • Tunafuta sehemu za sasa kwenye diski.
  • Unda kizigeu chenye ukubwa wa 500MB.
  • Tunatia alama kuwa inayoweza kuwasha gari.
  • Fomati kwa FAT32.
  • Tunakili faili za usakinishaji za ESXi kwenye mzizi.
  • Inaweka syslinux.
  • Nakili syslinux.cfg kwa /syslinux/

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

  • Nakili mboot.c32 hadi /syslinux.
  • Boot.cfg inapaswa kuwa na kernelopt=ks=ftp:// /ks_esxi.cfg
  • Tunaanzisha tena seva.

Baada ya seva kuwasha upya, kisakinishi cha ESXi kitapakua kutoka kwa diski kuu ya seva. Faili zote muhimu za kisakinishi zitapakiwa kwenye kumbukumbu na kisha usakinishaji wa ESXi utaanza, kulingana na faili maalum ya majibu ya kiotomatiki.

Hapa kuna mistari michache kutoka kwa faili ya autoresponse 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

Katika hatua hii, hypervisor imewekwa na kusanidiwa, na mashine za kawaida zinakiliwa.

Jinsi ya kusanidi mashine za kawaida sasa?

Tulidanganya kidogo: wakati wa usakinishaji tuliweka parameta guestinfo.esxihost.id = "$SYSSN" kwenye faili ya VM1.vmx na tukaonyesha nambari ya serial ya seva ya kimwili ndani yake.

Sasa, baada ya kuanza, mashine ya kawaida (iliyo na kifurushi cha zana za vmware) inaweza kufikia paramu hii:

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

Hiyo ni, VM itaweza kujitambulisha (inajua nambari ya serial ya mwenyeji wa kimwili), kufanya ombi kwenye hifadhidata ya seva ya usakinishaji na kupokea vigezo vinavyohitaji kusanidiwa. Haya yote yamekusanywa kuwa hati, ambayo inapaswa kuzinduliwa kiotomatiki guestos vm inapoanza (lakini mara moja: RunOnce).

Sasa tunajua jinsi gani:

  • fungua seva kupitia PXE;
  • uhamishaji wa udhibiti kwa hati yetu;
  • tambua seva ambayo inahitaji kutayarishwa na nambari yake ya serial;
  • sanidi seva kwa kutumia huduma zinazofaa;
  • kuhamisha mipangilio kwenye hifadhidata ya seva ya usakinishaji kwa kutumia sehemu ya mteja;
  • kusanidi aina mbalimbali za programu, ikiwa ni pamoja na kupeleka esxi hypervisor na kusanidi mashine pepe (yote kiotomatiki).

Tuligundua jinsi:

  • seva iliyosanikishwa inapokea mipangilio muhimu kutoka kwa hifadhidata;
  • maendeleo yote ya maandalizi yanarekodiwa kwenye hifadhidata (magogo, matukio, bendera za jukwaa).


line ya chini:

Ninaamini kuwa upekee wa suluhisho hili upo katika kubadilika, unyenyekevu, uwezo na uchangamano.

Tafadhali andika kwenye maoni kile unachofikiria.

Chanzo: mapenzi.com

Kuongeza maoni