O'z qo'llaringiz bilan yalang'och metall bilan ta'minlash yoki serverlarni noldan avtomatik ravishda tayyorlash

Salom, men Denisman va mening faoliyat sohalarimdan biri X5 da infratuzilma yechimlarini ishlab chiqishdir. Bugun men siz bilan hammaga ochiq vositalar asosida avtomatik server tayyorlash tizimini qanday o'rnatishingiz mumkinligini siz bilan baham ko'rmoqchiman. Menimcha, bu qiziqarli, oddiy va moslashuvchan yechim.

O'z qo'llaringiz bilan yalang'och metall bilan ta'minlash yoki serverlarni noldan avtomatik ravishda tayyorlash

Tayyorgarlik deganda biz quyidagilarni nazarda tutamiz: yangi serverni OS bilan to'liq sozlangan serverga aylantirish. Linux yoki ESXi gipervisor bilan (Windows serverlarini joylashtirish ushbu maqolada muhokama qilinmaydi).

atamalar:

  • serverlar - sozlanishi kerak bo'lgan serverlar.
  • o'rnatish serveri tarmoq orqali butun tayyorgarlik jarayonini ta'minlovchi asosiy serverdir.

Nima uchun avtomatlashtirish kerak?

Aytaylik, vazifa bor: serverlarni noldan ommaviy ravishda tayyorlash, eng yuqori nuqtada - kuniga 30 ta. Ularda turli ishlab chiqaruvchilar va modellarning serverlari, turli xil operatsion tizimlar o'rnatilgan bo'lishi mumkin va gipervisor bo'lishi mumkin yoki bo'lmasligi mumkin.

O'rnatish jarayoniga qanday operatsiyalar kiradi (avtomatlashtirishsiz):

  • klaviatura, sichqoncha, monitorni serverga ulang;
  • BIOS, RAID, IPMI-ni sozlash;
  • komponent proshivkasini yangilash;
  • fayl tizimi tasvirini joylashtirish (yoki gipervisorni o'rnatish va virtual mashinalarni nusxalash);

Eslatma. Shu bilan bir qatorda, operatsion tizimni o'rnatish avtomatik javob fayli bilan o'rnatish orqali mumkin. Ammo bu maqolada muhokama qilinmaydi. Garchi siz quyida ushbu funksiyani qo'shish qiyin emasligini ko'rasiz.

  • OS parametrlarini sozlash (xost nomi, IP va boshqalar).

Ushbu yondashuv bilan bir xil sozlamalar har bir serverda ketma-ket amalga oshiriladi. Bunday ishlarning samaradorligi juda past.

Avtomatlashtirishning mohiyati serverni tayyorlash jarayonida inson ishtirokini bartaraf etishdan iborat. Imkon qadar ko'p.

Avtomatlashtirish operatsiyalar orasidagi uzilish vaqtini qisqartiradi va bir vaqtning o'zida bir nechta serverlarni ta'minlash imkonini beradi. Inson omillari tufayli xatolar ehtimoli ham sezilarli darajada kamayadi.

O'z qo'llaringiz bilan yalang'och metall bilan ta'minlash yoki serverlarni noldan avtomatik ravishda tayyorlash

Serverlar avtomatik ravishda qanday sozlanadi?

Keling, barcha bosqichlarni batafsil tahlil qilaylik.

Sizda PXE o'rnatish serveri sifatida foydalanadigan Linux serveringiz bor. Unda xizmatlar o'rnatilgan va sozlangan: DHCP, TFTP.

Shunday qilib, biz PXE orqali serverni (sozlanishi kerak) yuklaymiz. Keling, bu qanday ishlashini eslaylik:

  • Serverda tarmoqni yuklash tanlangan.
  • Server tarmoq kartasining PXE-ROM-ni yuklaydi va tarmoq manzilini olish uchun DHCP orqali o'rnatish serveri bilan bog'lanadi.
  • DHCP o'rnatish serveri manzilni, shuningdek PXE orqali keyingi yuklab olish uchun ko'rsatmalar beradi.
  • Server tarmoq yuklagichini PXE orqali o'rnatish serveridan yuklaydi, keyingi yuklash PXE konfiguratsiya fayliga muvofiq amalga oshiriladi.
  • Yuklash qabul qilingan parametrlar (yadro, initramfs, o'rnatish nuqtalari, squashfs tasviri va boshqalar) asosida amalga oshiriladi.

Eslatma. Maqolada BIOS rejimi orqali PXE orqali yuklash tasvirlangan. Hozirgi vaqtda ishlab chiqaruvchilar UEFI yuklash rejimini faol ravishda joriy qilmoqdalar. PXE uchun farq DHCP serverining konfiguratsiyasi va qo'shimcha yuklash moslamasining mavjudligida bo'ladi.

Keling, PXE server konfiguratsiyasi misolini ko'rib chiqaylik (pxelinux menyusi).

pxelinux.cfg/default fayli:

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 fayli:

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

Ushbu bosqichdagi yadro va initramflar oraliq Linux tasviri bo'lib, uning yordamida serverni asosiy tayyorlash va sozlash amalga oshiriladi.

Ko'rib turganingizdek, bootloader yadroga ko'plab parametrlarni uzatadi. Ushbu parametrlarning ba'zilari yadroning o'zi tomonidan qo'llaniladi. Va ba'zilarini o'z maqsadlarimiz uchun ishlatishimiz mumkin. Bu keyinroq muhokama qilinadi, ammo hozircha barcha o'tkazilgan parametrlar /proc/cmdline orqali oraliq Linux tasvirida mavjud bo'lishini yodda tutishingiz mumkin.

Ularni, yadro va initramflarni qayerdan olsam bo'ladi?
Asos sifatida siz har qanday Linux distributivini tanlashingiz mumkin. Tanlashda nimalarga e'tibor beramiz:

  • yuklash tasviri universal bo'lishi kerak (drayvlar mavjudligi, qo'shimcha yordam dasturlarini o'rnatish imkoniyati);
  • Katta ehtimol bilan siz initramflarni sozlashingiz kerak bo'ladi.

Bu bizning X5 uchun yechimimizda qanday amalga oshiriladi? Asos sifatida CentOS 7 tanlandi.Keling, quyidagi hiylani sinab ko'raylik: kelajakdagi tasvir strukturasini tayyorlang, uni arxivga to'plang va initramfs yarating, uning ichida bizning fayl tizim arxivimiz bo'ladi. Rasmni yuklashda arxiv yaratilgan tmpfs bo'limiga kengaytiriladi. Shunday qilib, biz faqat ikkita fayldan iborat bo'lgan barcha kerakli yordamchi dasturlarga ega minimal, ammo to'liq huquqli jonli Linux tasvirini olamiz: vmkernel va 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

Shunday qilib, biz yuklanishi kerak bo'lgan yadro va initramflarni aniqladik. Natijada, ushbu bosqichda oraliq Linux tasvirini PXE orqali yuklash orqali biz OT konsolini olamiz.

Ajoyib, lekin endi biz boshqaruvni "avtomatlashtirish" ga o'tkazishimiz kerak.

Buni shunday qilish mumkin.

Tasvirni yuklagandan so'ng biz boshqaruvni mount.sh skriptiga o'tkazishni rejalashtirmoqdamiz deb faraz qilaylik.
Autorun dasturiga mount.sh skriptini kiritamiz. Buning uchun initramflarni o'zgartirishingiz kerak bo'ladi:

  • initramfs-ni oching (agar biz yuqoridagi initramfs variantidan foydalansak, bu shart emas)
  • /proc/cmdline orqali o'tgan parametrlarni tahlil qiladigan va boshqaruvni keyingi o'tkazuvchi kodni ishga tushirishga qo'shing;
  • initramfs to'plami.

Eslatma. X5 asboblar to'plamida yuklashni boshqarish skriptga o'tkaziladi /opt/x5/toolkit/bin/hook.sh с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ override.conf Π² getty tty1 (ExecStart=…)

Shunday qilib, rasm yuklanadi, unda mount.sh skripti autorunda boshlanadi. Keyinchalik, mount.sh skripti bajarilish vaqtida o'tkazilgan parametrlarni (script_cmd =) tahlil qiladi va kerakli dastur/skriptni ishga tushiradi.

teg asboblar to'plami -avtomobil
yadro...
append...nfs_toolkit_script=scripts/mount.sh script_cmd=master-install.sh

teg asboblar to'plami -chig'anoq
yadro...
append...nfs_toolkit_script=scripts/mount.sh script_cmd=/bin/bash

O'z qo'llaringiz bilan yalang'och metall bilan ta'minlash yoki serverlarni noldan avtomatik ravishda tayyorlash

Bu erda chapda PXE menyusi, o'ngda boshqaruvni uzatish diagrammasi.

Biz nazoratni uzatishni aniqladik. PXE menyusini tanlashga qarab, avtomatik konfiguratsiya skripti yoki disk raskadrovka konsoli ishga tushiriladi.

Avtomatik konfiguratsiya bo'lsa, kerakli kataloglar o'rnatish serveridan o'rnatiladi, ular quyidagilarni o'z ichiga oladi:

  • skriptlar;
  • turli serverlar uchun saqlangan BIOS/UEFI shablonlari;
  • proshivka;
  • server yordamchi dasturlari;
  • jurnallar

Keyinchalik, mount.sh skripti boshqaruvni skript katalogidan master-install.sh skriptiga o'tkazadi.

Skript daraxti (ularni ishga tushirish tartibi) quyidagicha ko'rinadi:

  • master-o'rnatish
  • almashish funktsiyalari (umumiy funktsiyalar)
  • ma'lumot (ma'lumot chiqishi)
  • modellar (server modeli asosida o'rnatish parametrlarini o'rnatish)
  • Preparat_utils (kerakli yordamchi dasturlarni o'rnatish)
  • fwupdate (proshivka dasturini yangilash)
  • diag (elementar diagnostika)
  • biosconf (BIOS/UEFI sozlamalari)
  • clockfix (anakartdagi vaqtni sozlash)
  • srmconf (masofaviy interfeys interfeysi konfiguratsiyasi)
  • raidconf (mantiqiy hajmlarni sozlash)

biri:

  • oldindan o'rnatish (boshqaruvni OS yoki gipervisor o'rnatuvchisiga o'tkazish, masalan, ESXi)
  • birlashtirilgan o'rnatish (tasvirni ochishning darhol boshlanishi)

Endi biz bilamiz:

  • PXE orqali serverni qanday yuklash kerak;
  • boshqaruvni o'z skriptingizga qanday o'tkazish kerak.


Davom etaylik. Quyidagi savollar dolzarb bo'lib qoldi:

  • Biz tayyorlayotgan serverni qanday aniqlash mumkin?
  • Qanday yordamchi dasturlar va serverni qanday sozlash kerak?
  • Muayyan server sozlamalarini qanday olish mumkin?

Biz tayyorlayotgan serverni qanday aniqlash mumkin?

Bu oddiy - DMI:

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

Sizga kerak bo'lgan hamma narsa bu erda: sotuvchi, model, seriya raqami. Agar siz ushbu ma'lumotlarning barcha serverlarda mavjudligiga ishonchingiz komil bo'lmasa, ularni MAC manzili bo'yicha aniqlashingiz mumkin. Yoki bir vaqtning o'zida ikkala usulda, agar server sotuvchilari boshqacha bo'lsa va ba'zi modellarda seriya raqami haqida oddiygina ma'lumot bo'lmasa.

Qabul qilingan ma'lumotlarga asoslanib, tarmoq papkalari o'rnatish serveridan o'rnatiladi va barcha kerakli narsalar yuklanadi (utilitalar, proshivka va boshqalar).

Qanday yordamchi dasturlar va serverni qanday sozlash kerak?

Men ba'zi ishlab chiqaruvchilar uchun Linux uchun yordamchi dasturlarni taqdim etaman. Barcha kommunal xizmatlar sotuvchilarning rasmiy veb-saytlarida mavjud.

O'z qo'llaringiz bilan yalang'och metall bilan ta'minlash yoki serverlarni noldan avtomatik ravishda tayyorlash

Mikrodastur bilan, menimcha, hamma narsa aniq. Ular odatda paketlangan bajariladigan fayllar ko'rinishida keladi. Bajariladigan fayl mikrodasturni yangilash jarayonini nazorat qiladi va qaytarish kodini bildiradi.

BIOS va IPMI odatda andozalar orqali sozlanadi. Agar kerak bo'lsa, shablonni yuklab olishdan oldin tahrirlash mumkin.

Ba'zi ishlab chiqaruvchilarning RAID yordam dasturlari shablon yordamida ham sozlanishi mumkin. Agar bunday bo'lmasa, siz konfiguratsiya skriptini yozishingiz kerak bo'ladi.

RAID-ni o'rnatish tartibi ko'pincha quyidagicha:

  • Biz joriy konfiguratsiyani so'raymiz.
  • Agar allaqachon mantiqiy massivlar mavjud bo'lsa, biz ularni o'chirib tashlaymiz.
  • Keling, qanday jismoniy disklar mavjudligini va ularning qanchaligini ko'rib chiqaylik.
  • Yangi mantiqiy massiv yarating. Agar xato bo'lsa, biz jarayonni to'xtatamiz.

Muayyan server sozlamalarini qanday olish mumkin?

Keling, barcha serverlarning sozlamalari o'rnatish serverida saqlanadi deb faraz qilaylik. Bunday holda, bizning savolimizga javob berish uchun, avvalo, sozlamalarni o'rnatish serveriga qanday o'tkazishni hal qilishimiz kerak.

Avvaliga matnli fayllar bilan ishlashingiz mumkin. (Kelajakda siz matnli fayldan sozlamalarni uzatish uchun zaxira usuli sifatida foydalanishni xohlashingiz mumkin.)

O'rnatish serverida matnli faylni "ulashish" mumkin. Va uning o'rnatilishini mount.sh skriptiga qo'shing.

Masalan, chiziqlar quyidagicha ko'rinadi:

<seriya raqami> <hostname> <subnet>

Ushbu chiziqlar muhandis tomonidan ish mashinasidan faylga o'tkaziladi. Va keyin, serverni o'rnatishda, ma'lum bir server uchun parametrlar fayldan o'qiladi.

Biroq, uzoq muddatda sozlamalarni, holatlarni va server o'rnatish jurnallarini saqlash uchun ma'lumotlar bazasidan foydalanish yaxshiroqdir.

Albatta, ma'lumotlar bazasining o'zi etarli emas va siz ma'lumotlar bazasiga sozlamalar o'tkaziladigan mijoz qismini yaratishingiz kerak bo'ladi. Matn fayli bilan solishtirganda buni amalga oshirish qiyinroq, lekin aslida hamma narsa ko'rinadigan darajada qiyin emas. Ma'lumotlarni o'zingiz ma'lumotlar bazasiga uzatadigan mijozning minimal versiyasini yozish juda mumkin. Va kelajakda mijoz dasturini bepul rejimda yaxshilash mumkin bo'ladi (hisobotlar, yorliqlarni chop etish, bildirishnomalarni yuborish va h.k. aqlga keladi).

Ma'lumotlar bazasiga ma'lum bir so'rov yuborish va serverning seriya raqamini ko'rsatish orqali biz serverni sozlash uchun kerakli parametrlarni olamiz.

Bundan tashqari, matn faylida bo'lgani kabi, bir vaqtning o'zida kirish uchun qulflarni o'ylab topishimiz shart emas.

Biz barcha bosqichlarda ma'lumotlar bazasiga konfiguratsiya jurnalini yozishimiz va tayyorgarlik bosqichlarining hodisalari va bayroqlari orqali o'rnatish jarayonini boshqarishimiz mumkin.

Endi biz qanday qilib bilamiz:

  • serverni PXE orqali yuklash;
  • boshqaruvni skriptimizga o'tkazish;
  • uning seriya raqami bo'yicha tayyorlanishi kerak bo'lgan serverni aniqlash;
  • tegishli yordamchi dasturlar yordamida serverni sozlash;
  • mijoz qismidan foydalanib sozlamalarni o'rnatish serveri ma'lumotlar bazasiga o'tkazish.

Biz qanday qilib bilib oldik:

  • o'rnatilgan server ma'lumotlar bazasidan kerakli sozlamalarni oladi;
  • Barcha tayyorgarlik jarayoni ma'lumotlar bazasida qayd etiladi (jurnallar, voqealar, sahna bayroqlari).

Siz o'rnatadigan har xil turdagi dasturiy ta'minot haqida nima deyish mumkin? Qanday qilib gipervisorni o'rnatish, VM-ni nusxalash va barchasini sozlash mumkin?

Fayl tizimi tasvirini (linux) apparatga o'rnatishda hamma narsa juda oddiy:

  • Barcha server komponentlarini o'rnatgandan so'ng, biz tasvirni joylashtiramiz.
  • Grub bootloaderni o'rnating.
  • Biz kerakli narsalarni chroot qilamiz va sozlaymiz.

Boshqaruvni OS o'rnatuvchisiga qanday o'tkazish mumkin (misol sifatida ESXi-dan foydalanish).

  • Biz avtomatik javob fayli (kickstart) yordamida boshqaruvni skriptimizdan gipervisor o'rnatuvchisiga o'tkazishni tashkil qilamiz:
  • Biz diskdagi joriy bo'limlarni o'chirib tashlaymiz.
  • 500 MB hajmli bo'lim yarating.
  • Biz uni yuklanadigan deb belgilaymiz.
  • FAT32 formatida formatlash.
  • Biz ESXi o'rnatish fayllarini ildizga nusxalaymiz.
  • Syslinux o'rnatilmoqda.
  • syslinux.cfg faylini /syslinux/ ga nusxalash

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

  • mboot.c32-ni /syslinux-ga nusxalash.
  • Boot.cfg kernelopt=ks=ftp:// bo'lishi kerak /ks_esxi.cfg
  • Biz serverni qayta ishga tushiramiz.

Server qayta ishga tushirilgandan so'ng, ESXi o'rnatuvchisi serverning qattiq diskidan yuklab olinadi. Barcha kerakli o'rnatish fayllari xotiraga yuklanadi va keyin belgilangan avtomatik javob fayliga muvofiq ESXi o'rnatilishi boshlanadi.

Mana ks_esxi.cfg avtomatik javob faylidan bir nechta satrlar:

%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

Ushbu bosqichda gipervisor o'rnatiladi va sozlanadi va virtual mashinalar nusxalanadi.

Endi virtual mashinalarni qanday sozlash mumkin?

Biz biroz aldadik: o'rnatish vaqtida biz VM1.vmx faylida guestinfo.esxihost.id = "$SYSSN" parametrini o'rnatdik va undagi jismoniy serverning seriya raqamini ko'rsatdik.

Endi, ishga tushirgandan so'ng, virtual mashina (vmware-tools to'plami o'rnatilgan) ushbu parametrga kirishi mumkin:

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

Ya'ni, VM o'zini identifikatsiyalashi (u jismoniy xostning seriya raqamini biladi), o'rnatish serverining ma'lumotlar bazasiga so'rov yuborishi va sozlanishi kerak bo'lgan parametrlarni olishi mumkin bo'ladi. Bularning barchasi skriptga tuzilgan bo'lib, u guestos vm ishga tushganda avtomatik ravishda ishga tushirilishi kerak (lekin bir marta: RunOnce).

Endi biz qanday qilib bilamiz:

  • serverni PXE orqali yuklash;
  • boshqaruvni skriptimizga o'tkazish;
  • uning seriya raqami bo'yicha tayyorlanishi kerak bo'lgan serverni aniqlash;
  • tegishli yordamchi dasturlar yordamida serverni sozlash;
  • mijoz qismidan foydalanib sozlamalarni o'rnatish serveri ma'lumotlar bazasiga o'tkazish;
  • har xil turdagi dasturiy ta'minotni sozlash, jumladan esxi gipervizorini o'rnatish va virtual mashinalarni sozlash (barchasi avtomatik).

Biz qanday qilib bilib oldik:

  • o'rnatilgan server ma'lumotlar bazasidan kerakli sozlamalarni oladi;
  • Barcha tayyorgarlik jarayoni ma'lumotlar bazasida qayd etiladi (jurnallar, voqealar, sahna bayroqlari).


Bottom layn:

Menimcha, bu yechimning oβ€˜ziga xosligi uning moslashuvchanligi, soddaligi, imkoniyatlari va koβ€˜p qirraliligidadir.

Iltimos, fikringizni izohlarda yozing.

Manba: www.habr.com

a Izoh qo'shish