اپنے آپ کو ننگی دھات کی فراہمی، یا شروع سے سرورز کی خودکار تیاری

ہیلو، میں ڈینس ہوں اور میری سرگرمی کے شعبوں میں سے ایک X5 میں بنیادی ڈھانچے کے حل کی ترقی ہے۔ آج میں آپ کے ساتھ اشتراک کرنا چاہوں گا کہ آپ عوامی طور پر دستیاب ٹولز کی بنیاد پر سرور کی تیاری کے خودکار نظام کو کیسے تعینات کر سکتے ہیں۔ میری رائے میں، یہ ایک دلچسپ، سادہ اور لچکدار حل ہے۔

اپنے آپ کو ننگی دھات کی فراہمی، یا شروع سے سرورز کی خودکار تیاری

تیاری سے ہمارا مطلب ہے: ایک نئے سرور کو باکس سے باہر OS کے ساتھ مکمل کنفیگر شدہ سرور میں تبدیل کریں۔ لینکس یا ESXi ہائپر وائزر کے ساتھ (ونڈوز سرورز کی تعیناتی پر اس مضمون میں بحث نہیں کی گئی ہے)۔

شرائط:

  • سرورز - سرورز جن کو ترتیب دینے کی ضرورت ہے۔
  • انسٹالیشن سرور مرکزی سرور ہے جو نیٹ ورک پر تیاری کا پورا عمل فراہم کرتا ہے۔

آٹومیشن کی ضرورت کیوں ہے؟

آئیے کہتے ہیں کہ ایک کام ہے: بڑے پیمانے پر سرورز کو شروع سے تیار کرنا، چوٹی پر - 30 فی دن۔ مختلف مینوفیکچررز اور ماڈلز کے سرورز، ان پر مختلف آپریٹنگ سسٹم انسٹال ہو سکتے ہیں، اور ہو سکتا ہے کہ ان میں ہائپر وائزر ہو یا نہ ہو۔

سیٹ اپ کے عمل میں کون سے آپریشنز شامل ہیں (بغیر آٹومیشن):

  • کی بورڈ، ماؤس، مانیٹر کو سرور سے جوڑیں؛
  • BIOS، RAID، IPMI ترتیب دیں؛
  • اپ ڈیٹ جزو فرم ویئر؛
  • فائل سسٹم کی تصویر لگائیں (یا ہائپر وائزر انسٹال کریں اور ورچوئل مشینیں کاپی کریں)؛

نوٹ. متبادل طور پر، OS کی تعیناتی خودکار جواب فائل کے ساتھ انسٹالیشن کے ذریعے ممکن ہے۔ لیکن مضمون میں اس پر بات نہیں کی جائے گی۔ اگرچہ آپ نیچے دیکھیں گے کہ اس فعالیت کو شامل کرنا مشکل نہیں ہے۔

  • OS پیرامیٹرز کو ترتیب دیں (میزبان نام، IP، وغیرہ)۔

اس نقطہ نظر کے ساتھ، ہر سرور پر ایک ہی ترتیب ترتیب وار انجام دی جاتی ہے۔ اس طرح کے کام کی کارکردگی بہت کم ہے۔

آٹومیشن کا جوہر سرور کی تیاری کے عمل سے انسانی شرکت کو ختم کرنا ہے۔ جتنا ممکن ہوسکا.

آٹومیشن آپریشنز کے درمیان ڈاؤن ٹائم کو کم کرتی ہے اور بیک وقت متعدد سرورز کی فراہمی ممکن بناتی ہے۔ انسانی عوامل کی وجہ سے غلطیوں کا امکان بھی بہت کم ہو جاتا ہے۔

اپنے آپ کو ننگی دھات کی فراہمی، یا شروع سے سرورز کی خودکار تیاری

سرورز خود بخود کنفیگر کیسے ہوتے ہیں؟

آئیے تمام مراحل کا تفصیل سے تجزیہ کرتے ہیں۔

آپ کے پاس ایک لینکس سرور ہے جسے آپ PXE انسٹالیشن سرور کے طور پر استعمال کرتے ہیں۔ سروسز اس پر انسٹال اور کنفیگر ہوتی ہیں: DHCP، TFTP۔

لہذا، ہم PXE کے ذریعے سرور (جسے کنفیگر کرنے کی ضرورت ہے) کو بوٹ کرتے ہیں۔ آئیے یاد رکھیں کہ یہ کیسے کام کرتا ہے:

  • نیٹ ورک بوٹ سرور پر منتخب کیا گیا ہے۔
  • سرور نیٹ ورک کارڈ کا PXE-ROM لوڈ کرتا ہے اور نیٹ ورک ایڈریس حاصل کرنے کے لیے DHCP کے ذریعے انسٹالیشن سرور سے رابطہ کرتا ہے۔
  • DHCP انسٹالیشن سرور ایڈریس جاری کرتا ہے، ساتھ ہی PXE کے ذریعے مزید ڈاؤن لوڈ کرنے کے لیے ہدایات جاری کرتا ہے۔
  • سرور نیٹ ورک بوٹ لوڈر کو انسٹالیشن سرور سے PXE کے ذریعے لوڈ کرتا ہے، مزید لوڈنگ PXE کنفیگریشن فائل کے مطابق ہوتی ہے۔
  • بوٹ موصول ہونے والے پیرامیٹرز (کرنل، انیٹرامف، ماؤنٹ پوائنٹس، اسکواش امیج، وغیرہ) کی بنیاد پر ہوتا ہے۔

نوٹ. مضمون BIOS موڈ کے ذریعے PXE کے ذریعے بوٹنگ کی وضاحت کرتا ہے۔ فی الحال، مینوفیکچررز فعال طور پر 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=”…”

اس مرحلے پر کرنل اور 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

لہٰذا ہم نے کرنل اور initramfs کی وضاحت کی ہے جنہیں لوڈ کیا جانا چاہیے۔ نتیجے کے طور پر، اس مرحلے پر، انٹرمیڈیٹ لینکس امیج کو PXE کے ذریعے لوڈ کرنے سے، ہم OS کنسول حاصل کریں گے۔

بہت اچھا، لیکن اب ہمیں اپنے "آٹومیشن" پر کنٹرول منتقل کرنے کی ضرورت ہے۔

یہ اس طرح کیا جا سکتا ہے۔

آئیے فرض کریں کہ امیج لوڈ کرنے کے بعد ہم کنٹرول کو mount.sh اسکرپٹ میں منتقل کرنے کا ارادہ رکھتے ہیں۔
آئیے mount.sh اسکرپٹ کو آٹورن میں شامل کریں۔ ایسا کرنے کے لیے آپ کو initramfs میں ترمیم کرنے کی ضرورت ہوگی:

  • initramfs کھولیں (اگر ہم مندرجہ بالا initramfs آپشن استعمال کرتے ہیں تو اس کی ضرورت نہیں ہے)
  • سٹارٹ اپ میں کوڈ شامل کریں جو /proc/cmdline سے گزرے ہوئے پیرامیٹرز کا تجزیہ کرے گا اور کنٹرول کو مزید منتقل کرے گا۔
  • initramfs پیک کریں۔

نوٹ. X5 ٹول کٹ کی صورت میں، لوڈنگ کنٹرول اسکرپٹ میں منتقل ہو جاتا ہے۔ /opt/x5/toolkit/bin/hook.sh с помощью override.conf в getty tty1 (ExecStart=…)

لہذا، تصویر بھری ہوئی ہے، جس میں mount.sh اسکرپٹ آٹورن سے شروع ہوتی ہے۔ اگلا، mount.sh اسکرپٹ عملدرآمد کے دوران پاس شدہ پیرامیٹرز (script_cmd=) کا تجزیہ کرتا ہے اور ضروری پروگرام/اسکرپٹ کو لانچ کرتا ہے۔

لیبل ٹول کٹ-آٹو
دانا...
شامل کریں...nfs_toolkit_script=scripts/mount.sh script_cmd=master-install.sh

لیبل ٹول کٹ-شیل
دانا...
شامل کریں...nfs_toolkit_script=scripts/mount.sh اسکرپٹ_cmd=/bin/bash

اپنے آپ کو ننگی دھات کی فراہمی، یا شروع سے سرورز کی خودکار تیاری

یہاں بائیں طرف PXE مینو ہے، دائیں طرف کنٹرول ٹرانسفر ڈایاگرام ہے۔

ہم نے کنٹرول کی منتقلی کا پتہ لگایا۔ PXE مینو کے انتخاب پر منحصر ہے، یا تو آٹو کنفیگریشن اسکرپٹ یا ڈیبگنگ کنسول لانچ کیا جاتا ہے۔

خودکار کنفیگریشن کی صورت میں، انسٹالیشن سرور سے ضروری ڈائریکٹریز لگائی جاتی ہیں، جن میں شامل ہیں:

  • سکرپٹ؛
  • مختلف سرورز کے لیے محفوظ کردہ BIOS/UEFI ٹیمپلیٹس؛
  • فرم ویئر؛
  • سرور کی افادیت؛
  • نوشتہ جات

اگلا، mount.sh اسکرپٹ کنٹرول کو اسکرپٹ ڈائرکٹری سے master-install.sh اسکرپٹ میں منتقل کرتا ہے۔

اسکرپٹ ٹری (جس ترتیب میں وہ لانچ کیے گئے ہیں) کچھ اس طرح نظر آتا ہے:

  • ماسٹر انسٹال
  • اشتراک کے افعال (مشترکہ افعال)
  • معلومات (معلومات کی پیداوار)
  • ماڈل (سرور ماڈل کی بنیاد پر تنصیب کے پیرامیٹرز کی ترتیب)
  • تیاری_استعمال (ضروری افادیت کی تنصیب)
  • fwupdate (فرم ویئر اپ ڈیٹ)
  • diag (ابتدائی تشخیص)
  • biosconf (BIOS/UEFI ترتیبات)
  • کلاک فکس (مدر بورڈ پر وقت مقرر کرنا)
  • srmconf (ریموٹ انٹرفیس انٹرفیس کنفیگریشن)
  • raidconf (منطقی حجم کو ترتیب دینا)

اس میں سے ایک:

  • پہلے سے انسٹال (OS یا ہائپر وائزر انسٹالر کو کنٹرول منتقل کرنا، جیسے ESXi)
  • ضم شدہ انسٹال (تصویر کو پیک کھولنے کا فوری آغاز)

اب ہم جانتے ہیں:

  • PXE کے ذریعے سرور کو کیسے بوٹ کیا جائے؛
  • کنٹرول کو اپنی اسکرپٹ میں کیسے منتقل کریں۔


آئیے جاری رکھیں۔ مندرجہ ذیل سوالات متعلقہ بن گئے:

  • ہم جس سرور کو تیار کر رہے ہیں اس کی شناخت کیسے کریں؟
  • کون سی افادیت اور سرور کو کیسے ترتیب دیا جائے؟
  • کسی مخصوص سرور کے لیے سیٹنگز کیسے حاصل کریں؟

ہم جس سرور کو تیار کر رہے ہیں اس کی شناخت کیسے کریں؟

یہ آسان ہے - DMI:

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

آپ کو درکار ہر چیز یہاں ہے: وینڈر، ماڈل، سیریل نمبر۔ اگر آپ کو یقین نہیں ہے کہ یہ معلومات تمام سرورز میں موجود ہے، تو آپ ان کی شناخت ان کے میک ایڈریس سے کر سکتے ہیں۔ یا ایک ہی وقت میں دونوں طریقوں سے، اگر سرور فروش مختلف ہیں اور کچھ ماڈلز پر سیریل نمبر کے بارے میں کوئی معلومات نہیں ہے۔

موصول ہونے والی معلومات کی بنیاد پر، نیٹ ورک فولڈرز انسٹالیشن سرور سے نصب کیے جاتے ہیں اور ہر ضروری چیز کو لوڈ کیا جاتا ہے (افادیت، فرم ویئر، وغیرہ)۔

کون سی افادیت اور سرور کو کیسے ترتیب دیا جائے؟

میں کچھ مینوفیکچررز کے لیے لینکس کے لیے یوٹیلیٹیز فراہم کروں گا۔ تمام افادیت فروشوں کی سرکاری ویب سائٹس پر دستیاب ہیں۔

اپنے آپ کو ننگی دھات کی فراہمی، یا شروع سے سرورز کی خودکار تیاری

فرم ویئر کے ساتھ، مجھے لگتا ہے کہ سب کچھ واضح ہے. وہ عام طور پر پیکیجڈ ایگزیکیوٹیبل فائلوں کی شکل میں آتے ہیں۔ قابل عمل فائل فرم ویئر اپ ڈیٹ کے عمل کو کنٹرول کرتی ہے اور واپسی کوڈ کی اطلاع دیتی ہے۔

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 انسٹالیشن شروع ہو جائے گی۔

آٹو ریسپانس فائل 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 ہائپر وائزر کی تعیناتی اور ورچوئل مشینوں کو ترتیب دینا (تمام خود بخود)۔

ہمیں پتہ چلا کہ کیسے:

  • انسٹال شدہ سرور ڈیٹا بیس سے ضروری ترتیبات حاصل کرتا ہے۔
  • تمام تیاری کی پیشرفت ڈیٹا بیس میں ریکارڈ کی جاتی ہے (نوشتہ جات، واقعات، اسٹیج کے جھنڈے)۔


نیچے لائن:

مجھے یقین ہے کہ اس حل کی انفرادیت اس کی لچک، سادگی، صلاحیتوں اور استعداد میں مضمر ہے۔

آپ کیا سوچتے ہیں برائے مہربانی کمنٹس میں لکھیں۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں