Öz əlinizlə Çılpaq Metal Təchizat və ya serverlərin sıfırdan avtomatik hazırlanması

Salam, mən Denisəm və fəaliyyət istiqamətlərimdən biri X5-də infrastruktur həllərinin inkişafıdır. Bu gün mən sizinlə ictimaiyyətə açıq alətlər əsasında avtomatik server hazırlama sistemini necə yerləşdirə biləcəyinizi bölüşmək istərdim. Məncə, bu maraqlı, sadə və çevik bir həlldir.

Öz əlinizlə Çılpaq Metal Təchizat və ya serverlərin sıfırdan avtomatik hazırlanması

Hazırlıq dedikdə biz nəzərdə tuturuq: yeni serveri OS ilə tam konfiqurasiya edilmiş serverə çevirmək. Linux və ya ESXi hipervizoru ilə (Windows serverlərinin yerləşdirilməsi bu məqalədə müzakirə edilmir).

Şərtlər:

  • serverlər – konfiqurasiya edilməli olan serverlər.
  • quraşdırma serveri şəbəkə üzərindən bütün hazırlıq prosesini təmin edən əsas serverdir.

Avtomatlaşdırma niyə lazımdır?

Deyək ki, bir vəzifə var: serverləri sıfırdan kütləvi şəkildə hazırlamaq, zirvədə - gündə 30. Onlarda müxtəlif istehsalçıların və modellərin serverləri, müxtəlif əməliyyat sistemləri quraşdırıla bilər və hipervizor ola bilər, olmaya da bilər.

Quraşdırma prosesinə hansı əməliyyatlar daxildir (avtomatlaşdırma olmadan):

  • serverə klaviatura, siçan, monitor qoşmaq;
  • BIOS, RAID, IPMI konfiqurasiya etmək;
  • komponent proqram təminatını yeniləmək;
  • fayl sistemi görüntüsünü yerləşdirmək (və ya hipervizor quraşdırmaq və virtual maşınları kopyalamaq);

Qeyd. Alternativ olaraq, OS-nin yerləşdirilməsi avtomatik cavab faylı ilə quraşdırma vasitəsilə mümkündür. Ancaq bu məqalədə müzakirə edilməyəcək. Baxmayaraq ki, aşağıda görəcəksiniz ki, bu funksiyanı əlavə etmək çətin deyil.

  • OS parametrlərini konfiqurasiya edin (host adı, IP və s.).

Bu yanaşma ilə eyni parametrlər hər bir serverdə ardıcıl olaraq yerinə yetirilir. Belə işlərin səmərəliliyi çox aşağıdır.

Avtomatlaşdırmanın mahiyyəti serverin hazırlanması prosesində insan iştirakını aradan qaldırmaqdır. Mümkün qədər çox.

Avtomatlaşdırma əməliyyatlar arasında dayanma müddətini azaldır və eyni vaxtda birdən çox serveri təmin etməyə imkan verir. İnsan faktorları ilə bağlı səhvlərin olma ehtimalı da xeyli azalır.

Öz əlinizlə Çılpaq Metal Təchizat və ya serverlərin sıfırdan avtomatik hazırlanması

Serverlər avtomatik olaraq necə konfiqurasiya edilir?

Bütün mərhələləri ətraflı təhlil edək.

PXE quraşdırma serveri kimi istifadə etdiyiniz Linux serveriniz var. Xidmətlər quraşdırılıb və konfiqurasiya edilib: DHCP, TFTP.

Beləliklə, biz PXE vasitəsilə serveri (konfiqurasiya edilməlidir) yükləyirik. Bunun necə işlədiyini xatırlayaq:

  • Serverdə şəbəkə açılışı seçilir.
  • Server şəbəkə kartının PXE-ROM-unu yükləyir və şəbəkə ünvanı əldə etmək üçün DHCP vasitəsilə quraşdırma serveri ilə əlaqə saxlayır.
  • DHCP quraşdırma serveri ünvan, həmçinin PXE vasitəsilə əlavə yükləmə üçün təlimat verir.
  • Server şəbəkə yükləyicisini quraşdırma serverindən PXE vasitəsilə yükləyir, sonrakı yükləmə PXE konfiqurasiya faylına uyğun olaraq baş verir.
  • Yükləmə qəbul edilmiş parametrlər əsasında baş verir (kernel, initramfs, mount nöqtələri, squashfs image və s.).

Qeyd. Məqalədə BIOS rejimi vasitəsilə PXE vasitəsilə yükləmə təsvir edilir. Hazırda istehsalçılar UEFI yükləmə rejimini fəal şəkildə tətbiq edirlər. PXE üçün fərq DHCP serverinin konfiqurasiyasında və əlavə yükləyicinin mövcudluğunda olacaq.

PXE server konfiqurasiyasına (pxelinux menyusu) nümunəyə baxaq.

Fayl 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 // переход на следующее меню

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

Bu mərhələdə nüvə və initramflar aralıq Linux görüntüsüdür, onun köməyi ilə serverin əsas hazırlanması və konfiqurasiyası baş verəcəkdir.

Göründüyü kimi, yükləyici çoxlu parametrləri nüvəyə ötürür. Bu parametrlərdən bəziləri nüvənin özü tərəfindən istifadə olunur. Bəzilərini isə öz məqsədlərimiz üçün istifadə edə bilərik. Bu, daha sonra müzakirə ediləcək, lakin hələlik bütün ötürülən parametrlərin /proc/cmdline vasitəsilə aralıq Linux görüntüsündə mövcud olacağını xatırlaya bilərsiniz.

Onları, kernel və initramfları haradan əldə edə bilərəm?
Əsas olaraq hər hansı bir Linux paylanması seçə bilərsiniz. Seçərkən nələrə diqqət yetiririk:

  • açılış görüntüsü universal olmalıdır (sürücülərin mövcudluğu, əlavə yardım proqramları quraşdırmaq imkanı);
  • Çox güman ki, initramfları fərdiləşdirməli olacaqsınız.

X5 üçün həllimizdə bu necə edilir? Əsas olaraq CentOS 7 seçildi.Gəlin aşağıdakı hiyləni sınayaq: gələcək təsvir strukturunu hazırlayın, onu arxivə yığın və initramfs yaradın, onun içərisində fayl sistemi arxivimiz olacaq. Şəkli yükləyərkən arxiv yaradılmış tmpfs bölməsinə genişləndiriləcək. Beləliklə, biz yalnız iki fayldan ibarət bütün lazımi yardım proqramları ilə minimal, lakin tam hüquqlu canlı linux təsviri əldə edəcəyik: vmkernel və 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

Beləliklə, yüklənməli olan kernel və initramfları təyin etdik. Nəticədə, bu mərhələdə PXE vasitəsilə aralıq linux təsvirini yükləyərək, ƏS konsolunu alacağıq.

Əla, amma indi nəzarəti "avtomatlaşdırmamıza" ötürməliyik.

Bunu belə etmək olar.

Tutaq ki, şəkli yüklədikdən sonra biz idarəetməni mount.sh skriptinə ötürməyi planlaşdırırıq.
Autorun-a mount.sh skriptini daxil edək. Bunu etmək üçün initramfları dəyişdirməlisiniz:

  • initramfs paketini açın (yuxarıdakı initramfs seçimindən istifadə ediriksə, bu tələb olunmur)
  • /proc/cmdline vasitəsilə keçən parametrləri təhlil edəcək və nəzarəti daha da ötürəcək kodu başlanğıca daxil edin;
  • initramfs paketi.

Qeyd. X5 alət dəsti vəziyyətində, yükləmə nəzarəti skriptə ötürülür /opt/x5/toolkit/bin/hook.sh с помощью override.conf в getty tty1 (ExecStart=…)

Beləliklə, şəkil yüklənir, burada mount.sh skripti autorun ilə başlayır. Sonra, mount.sh skripti icra zamanı ötürülən parametrləri (script_cmd=) təhlil edir və lazımi proqramı/skripti işə salır.

etiket alət dəsti -auto
ləpə...
append...nfs_toolkit_script=scripts/mount.sh script_cmd=master-install.sh

etiket alət dəsti -shell
ləpə...
append...nfs_toolkit_script=scripts/mount.sh script_cmd=/bin/bash

Öz əlinizlə Çılpaq Metal Təchizat və ya serverlərin sıfırdan avtomatik hazırlanması

Burada solda PXE menyusu, sağda idarəetmə ötürmə diaqramı var.

Nəzarətin ötürülməsini anladıq. PXE menyusunun seçimindən asılı olaraq ya avtomatik konfiqurasiya skripti, ya da sazlama konsolu işə salınır.

Avtomatik konfiqurasiya vəziyyətində, lazımi qovluqlar quraşdırma serverindən quraşdırılır, bunlara daxildir:

  • skriptlər;
  • müxtəlif serverlər üçün saxlanan BIOS/UEFI şablonları;
  • proqram təminatı;
  • server kommunalları;
  • loglar

Sonra, mount.sh skripti nəzarəti skript kataloqundan master-install.sh skriptinə ötürür.

Skript ağacı (onların işə salınma sırası) belə görünür:

  • master-quraşdırma
  • pay funksiyaları (paylaşılan funksiyalar)
  • məlumat (məlumat çıxışı)
  • modellər (server modelinə əsasən quraşdırma parametrlərinin təyin edilməsi)
  • hazırlamaq_utils (lazımi kommunalların quraşdırılması)
  • fwupdate (firmware yeniləməsi)
  • diaq (elementar diaqnostika)
  • biosconf (BIOS/UEFI parametrləri)
  • clockfix (ana platada vaxtı təyin etmək)
  • srmconf (uzaqdan interfeys interfeysi konfiqurasiyası)
  • raidconf (məntiqi həcmlərin konfiqurasiyası)

biri:

  • əvvəlcədən quraşdırma (nəzarəti ƏS-ə və ya ESXi kimi hipervizor quraşdırıcısına ötürmək)
  • birləşdirildi-quraşdırma (şəklin paketdən çıxarılmasının dərhal başlaması)

İndi bilirik:

  • PXE vasitəsilə serveri necə yükləmək olar;
  • nəzarəti öz skriptinizə necə ötürmək olar.


Davam edək. Aşağıdakı suallar aktuallaşdı:

  • Hazırladığımız serveri necə müəyyən etmək olar?
  • Hansı yardım proqramları və serveri necə konfiqurasiya etmək olar?
  • Müəyyən bir server üçün parametrləri necə əldə etmək olar?

Hazırladığımız serveri necə müəyyən etmək olar?

Bu sadədir - DMI:

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

Sizə lazım olan hər şey buradadır: satıcı, model, seriya nömrəsi. Bu məlumatın bütün serverlərdə olduğuna əmin deyilsinizsə, onları MAC ünvanları ilə müəyyən edə bilərsiniz. Və ya eyni anda hər iki yolla, əgər server təchizatçıları fərqlidirsə və bəzi modellərdə seriya nömrəsi haqqında sadəcə məlumat yoxdur.

Alınan məlumatlara əsasən, quraşdırma serverindən şəbəkə qovluqları quraşdırılır və lazım olan hər şey yüklənir (kommunal proqramlar, proqram təminatı və s.).

Hansı yardım proqramları və serveri necə konfiqurasiya etmək olar?

Bəzi istehsalçılar üçün Linux üçün kommunal proqramlar təqdim edəcəyəm. Bütün kommunal xidmətlər satıcıların rəsmi saytlarında mövcuddur.

Öz əlinizlə Çılpaq Metal Təchizat və ya serverlərin sıfırdan avtomatik hazırlanması

Firmware ilə məncə hər şey aydındır. Onlar adətən paketləşdirilmiş icra edilə bilən fayllar şəklində gəlirlər. İcra edilə bilən fayl proqram təminatının yenilənməsi prosesinə nəzarət edir və qaytarma kodunu bildirir.

BIOS və IPMI adətən şablonlar vasitəsilə konfiqurasiya edilir. Lazım gələrsə, şablon yükləməzdən əvvəl redaktə edilə bilər.

Bəzi təchizatçıların RAID utilitləri də şablondan istifadə etməklə konfiqurasiya edilə bilər. Əgər belə deyilsə, onda siz konfiqurasiya skripti yazmalı olacaqsınız.

RAID-in qurulması proseduru ən çox aşağıdakı kimidir:

  • Biz cari konfiqurasiya tələb edirik.
  • Əgər artıq məntiqi massivlər varsa, onları silirik.
  • Hansı fiziki disklərin mövcud olduğuna və nə qədər olduğuna baxaq.
  • Yeni məntiqi massiv yaradın. Səhv olarsa, prosesi dayandırırıq.

Müəyyən bir server üçün parametrləri necə əldə etmək olar?

Tutaq ki, bütün serverlərin parametrləri quraşdırma serverində saxlanılacaq. Bu halda, sualımıza cavab vermək üçün əvvəlcə parametrləri quraşdırma serverinə necə köçürəcəyimizə qərar verməliyik.

Əvvəlcə mətn faylları ilə məşğul ola bilərsiniz. (Gələcəkdə parametrləri ötürmək üçün geri qaytarma üsulu kimi mətn faylından istifadə etmək istəyə bilərsiniz.)

Quraşdırma serverində mətn faylını “paylaşa” bilərsiniz. Və onun montajını mount.sh skriptinə əlavə edin.

Xətlər, məsələn, belə görünəcək:

<seriya nömrəsi> <host adı> <alt şəbəkə>

Bu xətlər mühəndis tərəfindən iş maşınından fayla köçürüləcək. Və sonra, bir server qurarkən, müəyyən bir server üçün parametrlər fayldan oxunacaq.

Ancaq uzunmüddətli perspektivdə server quraşdırmalarının parametrlərini, vəziyyətlərini və qeydlərini saxlamaq üçün verilənlər bazasından istifadə etmək daha yaxşıdır.

Əlbəttə ki, yalnız bir verilənlər bazası kifayət deyil və parametrlərin verilənlər bazasına köçürüləcəyi köməyi ilə müştəri hissəsini yaratmalısınız. Bunu mətn faylı ilə müqayisədə həyata keçirmək daha çətindir, lakin əslində hər şey göründüyü qədər çətin deyil. Məlumat bazasına özünüz köçürəcək müştərinin minimal versiyasını yazmaq olduqca mümkündür. Gələcəkdə isə müştəri proqramını pulsuz rejimdə təkmilləşdirmək mümkün olacaq (hesabatlar, etiketlərin çapı, ağlına gələn bildirişlərin göndərilməsi və s.).

Verilənlər bazasına xüsusi sorğu göndərməklə və serverin seriya nömrəsini təyin etməklə biz serveri konfiqurasiya etmək üçün lazımi parametrləri alacağıq.

Üstəlik, mətn faylında olduğu kimi eyni vaxtda daxil olmaq üçün kilidlər tapmağa ehtiyac duymayacağıq.

Biz bütün mərhələlərdə verilənlər bazasına konfiqurasiya jurnalını yaza və hazırlıq mərhələlərinin hadisələri və bayraqları vasitəsilə quraşdırma prosesinə nəzarət edə bilərik.

İndi necə olduğunu bilirik:

  • serveri PXE vasitəsilə yükləyin;
  • nəzarəti skriptimizə köçürmək;
  • hazırlanmalı olan serveri onun seriya nömrəsi ilə müəyyənləşdirin;
  • müvafiq yardım proqramlarından istifadə edərək serveri konfiqurasiya etmək;
  • müştəri hissəsindən istifadə edərək parametrləri quraşdırma server verilənlər bazasına köçürün.

Necə olduğunu öyrəndik:

  • quraşdırılmış server verilənlər bazasından lazımi parametrləri alır;
  • bütün hazırlıq gedişi məlumat bazasında qeyd olunur (loglar, hadisələr, səhnə bayraqları).

Quraşdırdığınız müxtəlif proqram növləri haqqında nə demək olar? Hipervizoru necə quraşdırmaq, VM-ni kopyalamaq və hamısını konfiqurasiya etmək olar?

Fayl sistemi görüntüsünü (linux) aparatda yerləşdirmək vəziyyətində hər şey olduqca sadədir:

  • Bütün server komponentlərini qurduqdan sonra görüntünü yerləşdiririk.
  • Qrup yükləyicisini quraşdırın.
  • Biz chroot edirik və lazım olan hər şeyi konfiqurasiya edirik.

Nəzarəti OS quraşdırıcısına necə ötürmək olar (nümunə olaraq ESXi istifadə edərək).

  • Avtomatik cavab faylından (kickstart) istifadə edərək nəzarətin skriptimizdən hipervizor quraşdırıcısına ötürülməsini təşkil edirik:
  • Diskdəki cari bölmələri silirik.
  • 500MB ölçüsündə bölmə yaradın.
  • Onu yüklənə bilən kimi qeyd edirik.
  • FAT32 formatına çevirin.
  • ESXi quraşdırma fayllarını kökə kopyalayırıq.
  • Syslinux quraşdırılması.
  • syslinux.cfg faylını /syslinux/-a kopyalayın

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

  • mboot.c32-ni /syslinux-a kopyalayın.
  • Boot.cfg kernelopt=ks=ftp:// olmalıdır /ks_esxi.cfg
  • Serveri yenidən işə salırıq.

Server yenidən işə salındıqdan sonra ESXi quraşdırıcısı serverin sabit diskindən yüklənəcək. Bütün lazımi quraşdırma faylları yaddaşa yüklənəcək və sonra göstərilən avtomatik cavab faylına uyğun olaraq ESXi quraşdırılması başlayacaq.

Budur ks_esxi.cfg avtomatik cavab faylından bir neçə sətir:

%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

Bu mərhələdə hipervizor quraşdırılır və konfiqurasiya edilir və virtual maşınlar kopyalanır.

İndi virtual maşınları necə konfiqurasiya etmək olar?

Bir az aldatdıq: quraşdırma zamanı VM1.vmx faylında guestinfo.esxihost.id = "$SYSSN" parametrini təyin etdik və orada fiziki serverin seriya nömrəsini göstərdik.

İndi işə saldıqdan sonra virtual maşın (vmware-tools paketi quraşdırılmış) bu parametrə daxil ola bilər:

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

Yəni, VM özünü tanıya (fiziki hostun seriya nömrəsini bilir), quraşdırma serverinin verilənlər bazasına sorğu göndərə və konfiqurasiya edilməli olan parametrləri qəbul edə biləcək. Bunların hamısı skriptdə tərtib edilib, qonaqlar vm işə salındıqda avtomatik işə salınmalıdır (lakin bir dəfə: RunOnce).

İndi necə olduğunu bilirik:

  • serveri PXE vasitəsilə yükləyin;
  • nəzarəti skriptimizə köçürmək;
  • hazırlanmalı olan serveri onun seriya nömrəsi ilə müəyyənləşdirin;
  • müvafiq yardım proqramlarından istifadə edərək serveri konfiqurasiya etmək;
  • müştəri hissəsindən istifadə edərək parametrləri quraşdırma server verilənlər bazasına köçürmək;
  • esxi hipervizorunun yerləşdirilməsi və virtual maşınların konfiqurasiyası da daxil olmaqla müxtəlif proqram növlərini konfiqurasiya edin (hamısı avtomatik).

Necə olduğunu öyrəndik:

  • quraşdırılmış server verilənlər bazasından lazımi parametrləri alır;
  • bütün hazırlıq gedişi məlumat bazasında qeyd olunur (loglar, hadisələr, səhnə bayraqları).


Alt line:

Hesab edirəm ki, bu həllin unikallığı onun çevikliyində, sadəliyində, imkanlarında və çox yönlüliyindədir.

Zəhmət olmasa fikirlərinizi şərhlərdə yazın.

Mənbə: www.habr.com

Добавить комментарий