پاڻ ڪريو بيئر ميٽل جي فراهمي، يا شروع کان سرور جي خودڪار تياري

هيلو، مان ڊينس آهيان ۽ منهنجي سرگرمين جي علائقن مان هڪ آهي X5 تي انفراسٽرڪچر حل جي ترقي. اڄ آئون توهان سان شيئر ڪرڻ چاهيان ٿو ته توهان عوامي طور تي دستياب اوزار جي بنياد تي هڪ خودڪار سرور تيار ڪرڻ وارو نظام ڪيئن ٺاهي سگهو ٿا. منهنجي خيال ۾، هي هڪ دلچسپ، سادو ۽ لچڪدار حل آهي.

پاڻ ڪريو بيئر ميٽل جي فراهمي، يا شروع کان سرور جي خودڪار تياري

تياري ڪرڻ سان اسان جو مطلب آهي: نئين سرور کي دٻي مان هڪ مڪمل طور تي ترتيب ڏنل سرور ۾ OS سان تبديل ڪريو. لينڪس يا ESXi hypervisor سان (ونڊوز سرورز جي ترتيب هن مضمون ۾ بحث نه ڪيو ويو آهي).

ضابطا:

  • سرورز - سرورز جن کي ترتيب ڏيڻ جي ضرورت آھي.
  • تنصيب سرور مکيه سرور آهي جيڪو نيٽ ورڪ تي پوري تياري جي عمل کي مهيا ڪري ٿو.

ڇو automation جي ضرورت آهي؟

اچو ته چوندا آهن هڪ ڪم آهي: وڏي پيماني تي سرورز کي شروع کان تيار ڪرڻ، هڪ چوٽي تي - 30 في ڏينهن. مختلف ٺاهيندڙن ۽ ماڊلز جا سرور، مختلف آپريٽنگ سسٽم انهن تي نصب ٿي سگهن ٿا، ۽ شايد هڪ هائپرائزر هجي يا نه هجي.

سيٽ اپ جي عمل ۾ ڪهڙا عمل شامل آهن (بغير خودڪار):

  • ڪيبورڊ، مائوس، مانيٽر کي سرور سان ڳنڍيو؛
  • BIOS، RAID، IPMI ترتيب ڏيو؛
  • تازه ڪاري جزو firmware؛
  • فائل سسٽم جي تصوير کي ترتيب ڏيو (يا هائپر وائيزر انسٽال ڪريو ۽ ورچوئل مشينن کي نقل ڪريو)؛

نوٽ. متبادل طور تي، OS جي ترتيب ممڪن آهي انسٽاليشن ذريعي خودڪار جوابي فائل سان. پر هن مضمون ۾ بحث نه ڪيو ويندو. جيتوڻيڪ توهان هيٺ ڏسندا ته هن ڪارڪردگي کي شامل ڪرڻ ڏکيو ناهي.

  • OS پيٽرولر کي ترتيب ڏيو (ميزبان جو نالو، IP، وغيره).

هن طريقي سان، ساڳئي سيٽنگون هر سرور تي ترتيب ڏنل آهن. اهڙي ڪم جي ڪارڪردگي تمام گهٽ آهي.

آٽوميشن جو جوهر سرور جي تياري جي عمل مان انساني شموليت کي ختم ڪرڻ آهي. جيترو ٿي سگهي.

خودڪار عملن جي وچ ۾ وقت گھٽائي ٿو ۽ ان کي ممڪن بڻائي ٿو ته ڪيترن ئي سرورن کي مهيا ڪرڻ لاء. انساني فڪر جي ڪري غلطين جو امڪان پڻ تمام گهٽجي ويو آهي.

پاڻ ڪريو بيئر ميٽل جي فراهمي، يا شروع کان سرور جي خودڪار تياري

سرور ڪيئن خودڪار طريقي سان ترتيب ڏنل آهي؟

اچو ته تفصيل سان سڀني مرحلن جو تجزيو ڪيو.

توھان وٽ ھڪڙو لينڪس سرور آھي جيڪو توھان استعمال ڪندا آھيو PXE تنصيب سرور جي طور تي. خدمتون ان تي نصب ۽ ترتيب ڏنل آھن: DHCP، TFTP.

تنهن ڪري، اسان سرور کي بوٽ ڪيو (جنهن کي ترتيب ڏيڻ جي ضرورت آهي) PXE ذريعي. اچو ته ياد رکون ته اهو ڪيئن ڪم ڪري ٿو:

  • نيٽورڪ بوٽ سرور تي چونڊيو ويو آهي.
  • سرور نيٽ ورڪ ڪارڊ جي PXE-ROM کي لوڊ ڪري ٿو ۽ نيٽ ورڪ ايڊريس حاصل ڪرڻ لاءِ DHCP ذريعي انسٽاليشن سرور سان رابطو ڪري ٿو.
  • DHCP تنصيب سرور هڪ ايڊريس جاري ڪري ٿو، انهي سان گڏ PXE ذريعي وڌيڪ ڊائون لوڊ ڪرڻ لاء هدايتون.
  • سرور نيٽ ورڪ بوٽ لوڊر کي انسٽاليشن سرور مان PXE ذريعي لوڊ ڪري ٿو، وڌيڪ لوڊشيڊنگ PXE ترتيب واري فائل جي مطابق ٿئي ٿي.
  • بوٽ مليل پيٽرولر جي بنياد تي ٿئي ٿو (ڪنيل، انٽرامف، ماؤنٽ پوائنٽ، اسڪواش تصوير، وغيره).

نوٽ. آرٽيڪل بيان ڪري ٿو بوٽنگ PXE ذريعي BIOS موڊ ذريعي. في الحال، ٺاهيندڙن کي فعال طور تي لاڳو ڪري رهيا آهن UEFI بوٽ موڊ. 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=”…”

هن اسٽيج تي kernel ۽ initramfs هڪ وچولي لينڪس تصوير آهي، جنهن جي مدد سان سرور جي بنيادي تياري ۽ تشڪيل ٿيندي.

جئين توهان ڏسي سگهو ٿا، بوٽ لوڊ ڪندڙ ڪيترن ئي پيٽرولن کي ڪني ڏانهن منتقل ڪري ٿو. انهن مان ڪجهه پيرا ميٽرس استعمال ڪيا ويندا آهن ڪنييل پاڻ. ۽ اسان ڪجھ استعمال ڪري سگھون ٿا پنھنجي مقصدن لاءِ. اھو بعد ۾ بحث ڪيو ويندو، پر ھاڻي توھان صرف ياد ڪري سگھوٿا ته سڀئي منظور ٿيل پيرا ميٽرز /proc/cmdline ذريعي وچولي لينڪس تصوير ۾ موجود ھوندا.

مان انهن کي ڪٿي حاصل ڪري سگهان ٿو، ڪنيل ۽ initramfs؟
هڪ بنياد جي طور تي، توهان ڪنهن به لينڪس ڊويزن کي چونڊي سگهو ٿا. چونڊڻ وقت اسان کي ڌيان ڏيڻ گهرجي:

  • بوٽ تصوير آفاقي هجڻ گهرجي (ڊرائيور جي دستيابي، اضافي افاديت کي نصب ڪرڻ جي صلاحيت)؛
  • گهڻو ڪري، توهان کي initramfs کي ترتيب ڏيڻ جي ضرورت پوندي.

اهو ڪيئن ڪيو ويو آهي اسان جي حل ۾ X5 لاءِ؟ CentOS 7 کي بنياد طور چونڊيو ويو. اچو ته ھيٺين چال کي آزمايون: مستقبل جي تصويري ڍانچي کي تيار ڪريو، ان کي آرڪائيو ۾ پيڪ ڪريو ۽ ھڪڙو initramfs ٺاھيو، جنھن جي اندر اسان جو فائل سسٽم آرڪائيو ھوندو. جڏهن تصوير لوڊ ڪندي، آرڪائيو ٺاهي ويندي tmpfs ورهاڱي ۾ وڌايو ويندو. اهڙيءَ طرح اسان کي تمام ضروري يوٽيلٽيز سان گڏ هڪ گهٽ ۾ گهٽ، اڃان مڪمل لائيو لينڪس تصوير ملندي، جنهن ۾ صرف ٻه فائلون هونديون: 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

تنهن ڪري اسان kernel ۽ initramfs بيان ڪيو آهي جيڪي لوڊ ٿيڻ گهرجن. نتيجي طور، ھن مرحلي تي، PXE ذريعي وچولي لينڪس تصوير کي لوڊ ڪندي، اسان OS ڪنسول حاصل ڪنداسين.

عظيم، پر هاڻي اسان کي اسان جي "آٽوميشن" ڏانهن ڪنٽرول منتقل ڪرڻ جي ضرورت آهي.

اهو هن طرح ڪري سگهجي ٿو.

اچو ته فرض ڪريون ته تصوير لوڊ ڪرڻ کان پوءِ اسان ڪنٽرول کي منتقل ڪرڻ جو منصوبو ڪريون ٿا mount.sh اسڪرپٽ.
اچو ته شامل ڪريون mount.sh اسڪرپٽ autorun ۾. هن کي ڪرڻ لاءِ توهان کي initramfs کي تبديل ڪرڻ جي ضرورت پوندي:

  • initramfs unpack (جيڪڏهن اسان مٿي ڏنل initramfs آپشن استعمال ڪريون، اهو گهربل ناهي)
  • شروع ۾ ڪوڊ شامل ڪريو جيڪو /proc/cmdline ذريعي گذريو ويو پيرا ميٽرن جو تجزيو ڪندو ۽ ڪنٽرول کي اڳتي منتقل ڪندو.
  • initramfs پيڪ ڪريو.

نوٽ. X5 ٽول ڪٽ جي صورت ۾، لوڊ ڪرڻ جو ڪنٽرول اسڪرپٽ ڏانهن منتقل ڪيو ويو آهي /opt/x5/toolkit/bin/hook.sh с помощью override.conf в getty tty1 (ExecStart=…)

تنهن ڪري، تصوير لوڊ ٿيل آهي، جنهن ۾ mount.sh اسڪرپٽ شروع ٿئي ٿو autorun. اڳيون، mount.sh اسڪرپٽ پاس ڪيل پيرا ميٽرز جو تجزيو ڪري ٿو (script_cmd=) عملدرآمد دوران ۽ ضروري پروگرام/اسڪرپٽ لانچ ڪري ٿو.

ليبل ٽول ڪٽ-ڪار
دانا...
append...nfs_toolkit_script=scripts/mount.sh script_cmd=master-install.sh

ليبل ٽول ڪٽ-شيل
دانا...
append...nfs_toolkit_script=scripts/mount.sh اسڪرپٽ_cmd=/bin/bash

پاڻ ڪريو بيئر ميٽل جي فراهمي، يا شروع کان سرور جي خودڪار تياري

هتي کاٻي پاسي PXE مينيو آهي، ساڄي پاسي ڪنٽرول ٽرانسفر ڊراگرام آهي.

اسان سمجھيو ته ڪنٽرول جي منتقلي. PXE مينيو جي چونڊ تي منحصر ڪري، يا ته خودڪار ترتيب واري اسڪرپٽ يا ڊيبگنگ ڪنسول شروع ڪيو ويو آهي.

خودڪار ٺاھ جوڙ جي صورت ۾، انسٽاليشن سرور مان ضروري ڊائريڪٽريون نصب ٿيل آھن، جنھن ۾ شامل آھن:

  • لکتون؛
  • محفوظ ٿيل BIOS/UEFI ٽيمپليٽ مختلف سرورز لاءِ؛
  • firmware؛
  • سرور افاديت؛
  • لاگز

اڳيون، mount.sh اسڪرپٽ ڪنٽرول ڊاريڪٽري مان master-install.sh اسڪرپٽ ڏانهن منتقل ڪري ٿو.

اسڪرپٽ وڻ (جنهن ۾ اهي شروع ڪيا ويا آهن) ڪجهه هن طرح نظر اچن ٿا:

  • ماسٽر انسٽال
  • حصيداري افعال (شيئر افعال)
  • ڄاڻ (معلومات جي پيداوار)
  • ماڊل (سرور ماڊل جي بنياد تي تنصيب جي ماپن کي ترتيب ڏيڻ)
  • تياري_استعمال (لازمي افاديت جي تنصيب)
  • fwupdate (فرم ویئر اپڊيٽ)
  • تشخيص (ابتدائي تشخيص)
  • biosconf (BIOS/UEFI سيٽنگون)
  • clockfix (مدر بورڊ تي وقت مقرر ڪرڻ)
  • srmconf (ريموٽ انٽرفيس انٽرفيس ترتيب)
  • raidconf (منطقي حجم ترتيب ڏيڻ)

مان هڪ:

  • اڳ ۾ انسٽال ڪريو (او ايس يا هائپر وائيزر انسٽالر ڏانهن ڪنٽرول منتقل ڪرڻ، جهڙوڪ ESXi)
  • ضم ٿيل-انسٽال (تصوير کي پيڪ ڪرڻ جي فوري شروعات)

هاڻي اسان ڄاڻون ٿا:

  • PXE ذريعي سرور ڪيئن بوٽ ڪجي؛
  • توهان جي پنهنجي اسڪرپٽ تي ڪنٽرول ڪيئن منتقل ڪجي.


اچو ته جاري رکون. هيٺيان سوال لاڳاپيل ٿي ويا:

  • سرور جي سڃاڻپ ڪيئن ڪجي جيڪا اسان تيار ڪري رهيا آهيون؟
  • ڪهڙيون افاديتون ۽ سرور کي ڪيئن ترتيب ڏيڻ؟
  • هڪ مخصوص سرور لاء سيٽنگون ڪيئن حاصل ڪجي؟

سرور جي سڃاڻپ ڪيئن ڪجي جيڪا اسان تيار ڪري رهيا آهيون؟

اهو سادو آهي - DMI:

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

سڀ ڪجھ توھان جي ضرورت آھي ھتي آھي: وينڊر، ماڊل، سيريل نمبر. جيڪڏهن توهان کي پڪ ناهي ته اها معلومات سڀني سرورن ۾ موجود آهي، توهان انهن جي سڃاڻپ ڪري سگهو ٿا انهن جي MAC ايڊريس ذريعي. يا ساڳئي وقت ٻنهي طريقن سان، جيڪڏهن سرور وينڊرز مختلف آهن ۽ ڪجهه ماڊلن تي صرف سيريل نمبر بابت ڪا ڄاڻ ناهي.

حاصل ڪيل معلومات جي بنياد تي، نيٽ ورڪ فولڊر نصب ٿيل آھن تنصيب سرور کان ۽ سڀ ڪجھ ضروري لوڊ ٿيل آھي (افاديت، فرم ویئر، وغيره).

ڪهڙيون افاديتون ۽ سرور کي ڪيئن ترتيب ڏيڻ؟

مان ڪجهه ٺاهيندڙن لاءِ لينڪس لاءِ يوٽيلٽيز فراهم ڪندس. سڀئي افاديت وينڊرز جي سرڪاري ويب سائيٽن تي موجود آهن.

پاڻ ڪريو بيئر ميٽل جي فراهمي، يا شروع کان سرور جي خودڪار تياري

firmware سان، مان سمجهان ٿو ته هر شيء واضح آهي. اهي عام طور تي پيڪيج ٿيل قابل عمل فائلن جي صورت ۾ ايندا آهن. قابل عمل فائل فرم ویئر اپڊيٽ جي عمل کي سنڀاليندو آهي ۽ واپسي ڪوڊ جي رپورٽ ڪري ٿو.

BIOS ۽ IPMI عام طور تي ٽيمپليٽ ذريعي ترتيب ڏنل آهن. جيڪڏهن ضروري هجي ته، ٽيمپليٽ ڊائون لوڊ ڪرڻ کان اڳ ۾ ترميم ڪري سگهجي ٿو.

ڪجھ وينڊرز کان RAID افاديت پڻ ھڪڙي ٽيمپليٽ استعمال ڪندي ترتيب ڏئي سگھجن ٿيون. جيڪڏهن اهو معاملو نه آهي، ته پوء توهان کي هڪ ترتيب واري اسڪرپٽ لکڻو پوندو.

RAID ترتيب ڏيڻ جو طريقو گهڻو ڪري هيٺ ڏنل آهي:

  • اسان موجوده تشڪيل جي درخواست ڪريون ٿا.
  • جيڪڏهن اڳ ۾ ئي منطقي صفون آهن، اسان انهن کي ختم ڪريون ٿا.
  • اچو ته ڏسو ته جسماني ڊسڪ موجود آهن ۽ ڪيترا آهن.
  • ھڪڙو نئون منطقي صف ٺاھيو. اسان غلطي جي صورت ۾ عمل ۾ مداخلت ڪندا آهيون.

هڪ مخصوص سرور لاء سيٽنگون ڪيئن حاصل ڪجي؟

اچو ته فرض ڪريو ته سڀني سرورن جون سيٽنگون انسٽاليشن سرور تي محفوظ ڪيون وينديون. انهي حالت ۾، اسان جي سوال جو جواب ڏيڻ لاء، اسان کي پهريان اهو فيصلو ڪرڻو پوندو ته سيٽنگون ڪيئن منتقل ڪيون وڃن انسٽاليشن سرور ڏانهن.

پهرين تي، توهان حاصل ڪري سگهو ٿا ٽيڪسٽ فائلن سان. (مستقبل ۾، توهان شايد ٽيڪسٽ فائل استعمال ڪرڻ چاهيندا سيٽنگون منتقل ڪرڻ لاء هڪ فال بيڪ طريقي جي طور تي.)

توھان انسٽاليشن سرور تي ھڪڙي ٽيڪسٽ فائل کي "شيئر" ڪري سگھو ٿا. ۽ ان کي شامل ڪريو mount.sh اسڪرپٽ ۾.

سٽون، مثال طور، هن طرح نظر اينديون:

<سيريل نمبر> <ميزبان جو نالو> <سب نيٽ>

اهي لائينون فائل ۾ منتقل ڪيا ويندا انجنيئر طرفان سندس ڪم مشين مان. ۽ پوء، جڏهن هڪ سرور کي ترتيب ڏيڻ، هڪ مخصوص سرور لاء پيٽرولر فائل مان پڙهي ويندي.

پر، ڊگهي مدت ۾، اهو بهتر آهي ته ڊيٽابيس کي استعمال ڪرڻ لاء سيٽنگون، رياستن ۽ سرور تنصيب جي لاگن کي ذخيرو ڪرڻ لاء.

يقينن، هڪ ڊيٽابيس اڪيلو ڪافي ناهي، ۽ توهان کي هڪ ڪلائنٽ حصو ٺاهڻ جي ضرورت پوندي جنهن جي مدد سان سيٽنگون ڊيٽابيس ڏانهن منتقل ڪيون وينديون. اهو ٽيڪسٽ فائل جي مقابلي ۾ لاڳو ڪرڻ وڌيڪ ڏکيو آهي، پر حقيقت ۾، هر شيء ايترو ڏکيو ناهي جيترو اهو لڳي ٿو. اهو ممڪن آهي ته هڪ ڪلائنٽ جو گهٽ ۾ گهٽ نسخو لکڻ لاءِ جيڪو صرف ڊيٽا کي ڊيٽابيس ڏانهن منتقل ڪندو. ۽ مستقبل ۾ اهو ممڪن ٿيندو ته ڪلائنٽ پروگرام کي مفت موڊ ۾ بهتر ڪرڻ (رپورٽون، ليبل ڇپائي، نوٽيفڪيشن موڪلڻ، وغيره جيڪي ذهن ۾ اچن ٿا).

ڊيٽابيس کي مخصوص درخواست ڪرڻ ۽ سرور جي سيريل نمبر جي وضاحت ڪندي، اسان سرور کي ترتيب ڏيڻ لاء ضروري پيٽرولر حاصل ڪنداسين.

ان سان گڏ، اسان کي هڪ ئي وقت تائين رسائي لاء لاڪ سان گڏ اچڻ جي ضرورت نه هوندي، جيئن ٽيڪسٽ فائل جي صورت ۾ آهي.

اسان سڀني مرحلن تي ڊيٽابيس تي ترتيب ڏيڻ وارو لاگ لکي سگھون ٿا ۽ تياري جي مرحلن جي واقعن ۽ پرچم ذريعي تنصيب جي عمل کي ڪنٽرول ڪري سگھون ٿا.

هاڻي اسان ڄاڻون ٿا ته ڪيئن:

  • PXE ذريعي سرور کي بوٽ ڪريو؛
  • منتقلي ڪنٽرول اسان جي اسڪرپٽ ڏانهن؛
  • سرور کي سڃاڻو جيڪو ان جي سيريل نمبر سان تيار ٿيڻ جي ضرورت آهي؛
  • مناسب افاديت استعمال ڪندي سرور کي ترتيب ڏيو؛
  • ڪلائنٽ حصو استعمال ڪندي انسٽاليشن سرور ڊيٽابيس ڏانهن سيٽنگون منتقل ڪريو.

اسان معلوم ڪيو ته ڪيئن:

  • انسٽال ٿيل سرور ڊيٽابيس مان ضروري سيٽنگون حاصل ڪري ٿو؛
  • سڀني تياري جي ترقي ڊيٽابيس ۾ رڪارڊ ٿيل آهي (لاگ، واقعا، اسٽيج پرچم).

سافٽ ويئر جي مختلف قسمن بابت ڇا توهان انسٽال ڪيو ٿا؟ هڪ هائپرائزر کي ڪيئن نصب ڪيو، هڪ VM کي نقل ڪريو ۽ اهو سڀ ڪجهه ترتيب ڏيو؟

هارڊويئر تي فائيل سسٽم جي تصوير (لينڪس) کي ترتيب ڏيڻ جي صورت ۾، هر شيء بلڪل سادو آهي:

  • سڀني سرور جي اجزاء کي ترتيب ڏيڻ کان پوء، اسان تصوير کي ترتيب ڏيو.
  • گرب بوٽ لوڊر انسٽال ڪريو.
  • اسان هر شي کي ترتيب ڏيو ۽ ترتيب ڏيو جيڪو گهربل آهي.

OS انسٽالر کي ڪنٽرول ڪيئن منتقل ڪجي (مثال طور ESXi استعمال ڪندي).

  • اسان منظم ڪريون ٿا ڪنٽرول جي منتقلي کي اسان جي اسڪرپٽ مان هائپر ويزر انسٽالر ڏانهن خودڪار جوابي فائل استعمال ڪندي (ڪڪ اسٽارٽ):
  • اسان ڊسڪ تي موجوده ورهاڱي کي ختم ڪريون ٿا.
  • 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:// /ks_esxi.cfg
  • اسان سرور کي ريبوٽ ڪيو.

سرور جي ريبوٽ کان پوء، ESXi انسٽالر سرور جي هارڊ ڊرائيو مان ڊائون لوڊ ڪندو. سڀ ضروري انسٽالر فائلون ميموري ۾ لوڊ ڪيون وينديون ۽ پوءِ ESXi انسٽاليشن شروع ٿيندي، مخصوص آٽو جوابي فائل جي مطابق.

ھتي ڪجھ لائينون آھن 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

هن اسٽيج تي، هائپرائزر نصب ٿيل آهي ۽ ترتيب ڏنل آهي، ۽ مجازي مشينون نقل ٿيل آهن.

هاڻي مجازي مشينن کي ڪيئن ترتيب ڏيو؟

اسان ٿورڙي ٺڳي ڪئي: انسٽاليشن دوران اسان VM1.vmx فائل ۾ پيراميٽر guestinfo.esxihost.id = "$SYSSN" مقرر ڪيو ۽ ان ۾ فزيڪل سرور جو سيريل نمبر ظاهر ڪيو.

ھاڻي، شروع ڪرڻ کان پوء، مجازي مشين (vmware-tools پيڪيج سان نصب ٿيل) ھن پيٽرولر تائين رسائي ڪري سگھي ٿو:

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

اهو آهي، VM پاڻ کي سڃاڻڻ جي قابل هوندو (اهو ڄاڻي ٿو فزيڪل ميزبان جو سيريل نمبر)، انسٽاليشن سرور ڊيٽابيس کي درخواست ڏيو ۽ حاصل ڪريو پيٽرولر جيڪي ترتيب ڏيڻ جي ضرورت آهي. اهو سڀ هڪ اسڪرپٽ ۾ مرتب ڪيو ويو آهي، جيڪو خودڪار طور تي شروع ٿيڻ گهرجي جڏهن مهمان وي ايم شروع ٿئي ٿي (پر هڪ ڀيرو: RunOnce).

هاڻي اسان ڄاڻون ٿا ته ڪيئن:

  • PXE ذريعي سرور کي بوٽ ڪريو؛
  • منتقلي ڪنٽرول اسان جي اسڪرپٽ ڏانهن؛
  • سرور کي سڃاڻو جيڪو ان جي سيريل نمبر سان تيار ٿيڻ جي ضرورت آهي؛
  • مناسب افاديت استعمال ڪندي سرور کي ترتيب ڏيو؛
  • ڪلائنٽ حصو استعمال ڪندي انسٽاليشن سرور ڊيٽابيس ڏانهن سيٽنگون منتقل ڪريو؛
  • سافٽ ويئر جي مختلف قسمن کي ترتيب ڏيو، بشمول esxi hypervisor کي ترتيب ڏيڻ ۽ ورچوئل مشينن کي ترتيب ڏيڻ (سڀ پاڻمرادو).

اسان معلوم ڪيو ته ڪيئن:

  • انسٽال ٿيل سرور ڊيٽابيس مان ضروري سيٽنگون حاصل ڪري ٿو؛
  • سڀني تياري جي ترقي ڊيٽابيس ۾ رڪارڊ ٿيل آهي (لاگ، واقعا، اسٽيج پرچم).


تري ليڪ:

مان سمجهان ٿو ته هن حل جي انفراديت ان جي لچڪ، سادگي، صلاحيتن ۽ استحڪام ۾ آهي.

مهرباني ڪري تبصرن ۾ لکو جيڪو توهان سوچيو ٿا.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو