Buat sendiri Peruntukan Bare-Metal, atau Penyediaan automatik pelayan dari awal

Helo, saya Denis dan salah satu bidang aktiviti saya ialah pembangunan penyelesaian infrastruktur di X5. Hari ini saya ingin berkongsi dengan anda bagaimana anda boleh menggunakan sistem penyediaan pelayan automatik berdasarkan alat yang tersedia secara umum. Pada pendapat saya, ini adalah penyelesaian yang menarik, mudah dan fleksibel.

Buat sendiri Peruntukan Bare-Metal, atau Penyediaan automatik pelayan dari awal

Dengan penyediaan yang kami maksudkan: ubah pelayan baharu keluar dari kotak menjadi pelayan yang dikonfigurasikan sepenuhnya dengan OS. Linux atau dengan hipervisor ESXi (pengerahan pelayan Windows tidak dibincangkan dalam artikel ini).

Terma:

  • pelayan – pelayan yang perlu dikonfigurasikan.
  • pelayan pemasangan ialah pelayan utama yang menyediakan keseluruhan proses penyediaan melalui rangkaian.

Mengapakah automasi diperlukan?

Katakan ada tugas: untuk menyediakan pelayan secara besar-besaran dari awal, pada puncaknya - 30 setiap hari. Pelayan pengeluar dan model yang berbeza, sistem pengendalian yang berbeza mungkin dipasang pada mereka, dan mungkin atau mungkin tidak mempunyai hypervisor.

Apakah operasi yang disertakan dalam proses persediaan (tanpa automasi):

  • sambungkan papan kekunci, tetikus, monitor ke pelayan;
  • konfigurasikan BIOS, RAID, IPMI;
  • kemas kini perisian tegar komponen;
  • gunakan imej sistem fail (atau pasang hypervisor dan salin mesin maya);

Catatan. Sebagai alternatif, penggunaan OS boleh dilakukan melalui pemasangan dengan fail auto-respons. Tetapi ini tidak akan dibincangkan dalam artikel. Walaupun anda akan melihat di bawah bahawa menambah fungsi ini tidak sukar.

  • konfigurasikan parameter OS (nama hos, IP, dll.).

Dengan pendekatan ini, tetapan yang sama dilakukan secara berurutan pada setiap pelayan. Kecekapan kerja sedemikian sangat rendah.

Intipati automasi adalah untuk menghapuskan penyertaan manusia daripada proses penyediaan pelayan. Sebanyak mungkin.

Automasi mengurangkan masa henti antara operasi dan memungkinkan untuk menyediakan berbilang pelayan secara serentak. Kemungkinan kesilapan disebabkan faktor manusia juga sangat berkurangan.

Buat sendiri Peruntukan Bare-Metal, atau Penyediaan automatik pelayan dari awal

Bagaimanakah pelayan dikonfigurasikan secara automatik?

Mari analisa semua peringkat secara terperinci.

Anda mempunyai pelayan Linux yang anda gunakan sebagai pelayan pemasangan PXE. Perkhidmatan dipasang dan dikonfigurasikan padanya: DHCP, TFTP.

Jadi, kami but pelayan (yang perlu dikonfigurasikan) melalui PXE. Mari kita ingat bagaimana ia berfungsi:

  • But rangkaian dipilih pada pelayan.
  • Pelayan memuatkan PXE-ROM kad rangkaian dan menghubungi pelayan pemasangan melalui DHCP untuk mendapatkan alamat rangkaian.
  • Pelayan pemasangan DHCP mengeluarkan alamat, serta arahan untuk memuat turun selanjutnya melalui PXE.
  • Pelayan memuatkan pemuat but rangkaian daripada pelayan pemasangan melalui PXE, pemuatan selanjutnya berlaku mengikut fail konfigurasi PXE.
  • But berlaku berdasarkan parameter yang diterima (kernel, initramfs, titik lekap, imej squashfs, dll.).

Catatan. Artikel itu menerangkan but melalui PXE melalui mod BIOS. Pada masa ini, pengeluar sedang giat melaksanakan mod but UEFI. Untuk PXE, perbezaannya adalah dalam konfigurasi pelayan DHCP dan kehadiran pemuat but tambahan.

Mari lihat contoh konfigurasi pelayan PXE (menu pxelinux).

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

Fail 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 dan initramf pada peringkat ini adalah imej Linux perantaraan, dengan bantuan penyediaan dan konfigurasi utama pelayan akan berlaku.

Seperti yang anda lihat, pemuat but menghantar banyak parameter ke kernel. Beberapa parameter ini digunakan oleh kernel itu sendiri. Dan kita boleh menggunakan beberapa untuk tujuan kita sendiri. Ini akan dibincangkan kemudian, tetapi buat masa ini anda hanya boleh ingat bahawa semua parameter yang diluluskan akan tersedia dalam imej Linux perantaraan melalui /proc/cmdline.

Di manakah saya boleh mendapatkannya, kernel dan initramfs?
Sebagai asas, anda boleh memilih mana-mana pengedaran Linux. Perkara yang kita perhatikan semasa memilih:

  • imej but mestilah universal (ketersediaan pemandu, keupayaan untuk memasang utiliti tambahan);
  • Kemungkinan besar, anda perlu menyesuaikan initramfs.

Bagaimanakah ini dilakukan dalam penyelesaian kami untuk X5? CentOS 7 dipilih sebagai asas. Mari cuba helah berikut: sediakan struktur imej masa hadapan, bungkusnya ke dalam arkib dan cipta initramfs, di dalamnya terdapat arkib sistem fail kami. Apabila memuatkan imej, arkib akan dikembangkan ke dalam partition tmpfs yang dibuat. Dengan cara ini kita akan mendapat imej linux langsung yang minimum tetapi lengkap dengan semua utiliti yang diperlukan, yang terdiri daripada hanya dua fail: vmkernel dan 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

Jadi kami telah menentukan kernel dan initramfs yang perlu dimuatkan. Akibatnya, pada peringkat ini, dengan memuatkan imej linux perantaraan melalui PXE, kami akan menerima konsol OS.

Hebat, tetapi kini kami perlu memindahkan kawalan kepada "automasi" kami.

Ia boleh dilakukan seperti ini.

Mari kita anggap bahawa selepas memuatkan imej, kami merancang untuk memindahkan kawalan ke skrip mount.sh.
Mari sertakan skrip mount.sh dalam autorun. Untuk melakukan ini, anda perlu mengubah suai initramfs:

  • bongkar initramfs (jika kita menggunakan pilihan initramfs di atas, ini tidak diperlukan)
  • sertakan kod dalam permulaan yang akan menganalisis parameter yang melalui /proc/cmdline dan kawalan pemindahan selanjutnya;
  • pek initramfs.

Catatan. Dalam kes kit alat X5, kawalan pemuatan dipindahkan ke skrip /opt/x5/toolkit/bin/hook.sh с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ override.conf Π² getty tty1 (ExecStart=…)

Jadi, imej dimuatkan, di mana skrip mount.sh bermula pada autorun. Seterusnya, skrip mount.sh menganalisis parameter yang diluluskan (script_cmd=) semasa pelaksanaan dan melancarkan program/skrip yang diperlukan.

kit alat label-auto
kernel...
tambahkan...nfs_toolkit_script=scripts/mount.sh script_cmd=master-install.sh

kit alat label-shell
kernel...
tambahkan...nfs_toolkit_script=scripts/mount.sh script_cmd=/bin/bash

Buat sendiri Peruntukan Bare-Metal, atau Penyediaan automatik pelayan dari awal

Di sebelah kiri ialah menu PXE, di sebelah kanan ialah gambar rajah pemindahan kawalan.

Kami memikirkan pemindahan kawalan. Bergantung pada pilihan menu PXE, sama ada skrip konfigurasi automatik atau konsol penyahpepijatan dilancarkan.

Dalam kes konfigurasi automatik, direktori yang diperlukan dipasang dari pelayan pemasangan, yang mengandungi:

  • skrip;
  • templat BIOS/UEFI yang disimpan untuk pelbagai pelayan;
  • perisian tegar;
  • utiliti pelayan;
  • balak

Seterusnya, skrip mount.sh memindahkan kawalan ke skrip master-install.sh daripada direktori skrip.

Pokok skrip (urutan di mana ia dilancarkan) kelihatan seperti ini:

  • pasang induk
  • fungsi kongsi (fungsi kongsi)
  • maklumat (output maklumat)
  • model (menetapkan parameter pemasangan berdasarkan model pelayan)
  • prepare_utils (pemasangan utiliti yang diperlukan)
  • fwupdate (kemas kini perisian tegar)
  • diag (diagnostik asas)
  • biosconf (tetapan BIOS/UEFI)
  • clockfix (menetapkan masa pada motherboard)
  • srmconf (konfigurasi antara muka antara muka jauh)
  • raidconf (mengkonfigurasi volum logik)

satu daripada:

  • prapasang (memindahkan kawalan ke OS atau pemasang hypervisor, seperti ESXi)
  • merged-install (permulaan segera untuk membongkar imej)

Sekarang kita tahu:

  • bagaimana untuk boot pelayan melalui PXE;
  • bagaimana untuk memindahkan kawalan ke skrip anda sendiri.


Jom sambung. Soalan berikut menjadi relevan:

  • Bagaimana untuk mengenal pasti pelayan yang kami sediakan?
  • Apakah utiliti dan bagaimana untuk mengkonfigurasi pelayan?
  • Bagaimana untuk mendapatkan tetapan untuk pelayan tertentu?

Bagaimana untuk mengenal pasti pelayan yang kami sediakan?

Ia mudah - DMI:

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

Semua yang anda perlukan ada di sini: vendor, model, nombor siri. Jika anda tidak pasti bahawa maklumat ini terdapat dalam semua pelayan, anda boleh mengenal pasti mereka melalui alamat MAC mereka. Atau dalam kedua-dua cara pada masa yang sama, jika vendor pelayan berbeza dan pada sesetengah model tiada maklumat mengenai nombor siri.

Berdasarkan maklumat yang diterima, folder rangkaian dipasang dari pelayan pemasangan dan semua yang diperlukan dimuatkan (utiliti, firmware, dll.).

Apakah utiliti dan bagaimana untuk mengkonfigurasi pelayan?

Saya akan menyediakan utiliti untuk Linux untuk sesetengah pengeluar. Semua utiliti tersedia di tapak web rasmi vendor.

Buat sendiri Peruntukan Bare-Metal, atau Penyediaan automatik pelayan dari awal

Dengan firmware, saya rasa semuanya jelas. Mereka biasanya datang dalam bentuk fail boleh laku yang dibungkus. Fail boleh laku mengawal proses kemas kini perisian tegar dan melaporkan kod pemulangan.

BIOS dan IPMI biasanya dikonfigurasikan melalui templat. Jika perlu, templat boleh diedit sebelum memuat turun.

Utiliti RAID daripada sesetengah vendor juga boleh dikonfigurasikan menggunakan templat. Jika ini tidak berlaku, maka anda perlu menulis skrip konfigurasi.

Prosedur untuk menyediakan RAID adalah paling kerap seperti berikut:

  • Kami meminta konfigurasi semasa.
  • Jika sudah ada tatasusunan logik, kami memadamkannya.
  • Mari kita lihat apa cakera fizikal yang ada dan berapa banyak yang ada.
  • Buat tatasusunan logik baharu. Kami mengganggu proses sekiranya berlaku ralat.

Bagaimana untuk mendapatkan tetapan untuk pelayan tertentu?

Mari kita anggap bahawa tetapan semua pelayan akan disimpan pada pelayan pemasangan. Dalam kes ini, untuk menjawab soalan kami, kami mesti terlebih dahulu memutuskan cara memindahkan tetapan ke pelayan pemasangan.

Pada mulanya, anda boleh bertahan dengan fail teks. (Pada masa hadapan, anda mungkin mahu menggunakan fail teks sebagai kaedah sandaran untuk memindahkan tetapan.)

Anda boleh "berkongsi" fail teks pada pelayan pemasangan. Dan tambahkan pelekapnya pada skrip mount.sh.

Garis akan, sebagai contoh, kelihatan seperti ini:

<nombor siri> <nama hos> <subnet>

Talian ini akan dipindahkan ke fail oleh jurutera dari mesin kerjanya. Dan kemudian, apabila menyediakan pelayan, parameter untuk pelayan tertentu akan dibaca daripada fail.

Tetapi, dalam jangka panjang, lebih baik menggunakan pangkalan data untuk menyimpan tetapan, keadaan dan log pemasangan pelayan.

Sudah tentu, pangkalan data sahaja tidak mencukupi, dan anda perlu membuat bahagian klien dengan bantuan tetapan mana yang akan dipindahkan ke pangkalan data. Ini lebih sukar untuk dilaksanakan berbanding dengan fail teks, tetapi sebenarnya, semuanya tidak sesukar yang disangka. Sangat mungkin untuk menulis versi minimum pelanggan yang hanya akan memindahkan data ke pangkalan data sendiri. Dan pada masa hadapan adalah mungkin untuk memperbaiki program klien dalam mod percuma (laporan, label pencetakan, menghantar pemberitahuan, dll. yang terlintas di fikiran).

Dengan membuat permintaan khusus kepada pangkalan data dan menyatakan nombor siri pelayan, kami akan menerima parameter yang diperlukan untuk mengkonfigurasi pelayan.

Selain itu, kami tidak perlu menghasilkan kunci untuk akses serentak, seperti halnya dengan fail teks.

Kami boleh menulis log konfigurasi ke pangkalan data pada semua peringkat dan mengawal proses pemasangan melalui acara dan bendera peringkat penyediaan.

Sekarang kita tahu bagaimana:

  • but pelayan melalui PXE;
  • pindahkan kawalan ke skrip kami;
  • mengenal pasti pelayan yang perlu disediakan dengan nombor sirinya;
  • konfigurasikan pelayan menggunakan utiliti yang sesuai;
  • pindahkan tetapan ke pangkalan data pelayan pemasangan menggunakan bahagian klien.

Kami mengetahui bagaimana:

  • pelayan yang dipasang menerima tetapan yang diperlukan daripada pangkalan data;
  • semua kemajuan penyediaan direkodkan dalam pangkalan data (log, acara, bendera pentas).

Bagaimana pula dengan pelbagai jenis perisian yang anda pasang? Bagaimana untuk memasang hypervisor, menyalin VM dan mengkonfigurasi semuanya?

Dalam hal menggunakan imej sistem fail (linux) ke perkakasan, semuanya agak mudah:

  • Selepas menyediakan semua komponen pelayan, kami menggunakan imej.
  • Pasang pemuat but grub.
  • Kami chroot dan mengkonfigurasi semua yang diperlukan.

Cara memindahkan kawalan ke pemasang OS (menggunakan ESXi sebagai contoh).

  • Kami mengatur pemindahan kawalan daripada skrip kami kepada pemasang hypervisor menggunakan fail respons automatik (kickstart):
  • Kami memadamkan partition semasa pada cakera.
  • Buat partition dengan saiz 500MB.
  • Kami menandakannya sebagai boleh boot.
  • Format kepada FAT32.
  • Kami menyalin fail pemasangan ESXi ke akar.
  • Memasang syslinux.
  • Salin syslinux.cfg ke /syslinux/

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

  • Salin mboot.c32 ke /syslinux.
  • Boot.cfg sepatutnya mempunyai kernelopt=ks=ftp:// /ks_esxi.cfg
  • Kami but semula pelayan.

Selepas pelayan but semula, pemasang ESXi akan memuat turun daripada pemacu keras pelayan. Semua fail pemasang yang diperlukan akan dimuatkan ke dalam memori dan kemudian pemasangan ESXi akan bermula, mengikut fail auto-respons yang ditentukan.

Berikut ialah beberapa baris daripada fail autorespons 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

Pada peringkat ini, hipervisor dipasang dan dikonfigurasikan, dan mesin maya disalin.

Bagaimana untuk mengkonfigurasi mesin maya sekarang?

Kami menipu sedikit: semasa pemasangan kami menetapkan parameter guestinfo.esxihost.id = "$SYSSN" dalam fail VM1.vmx dan menunjukkan nombor siri pelayan fizikal di dalamnya.

Sekarang, selepas memulakan, mesin maya (dengan pakej vmware-tools dipasang) boleh mengakses parameter ini:

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

Iaitu, VM akan dapat mengenal pasti dirinya (ia mengetahui nombor siri hos fizikal), membuat permintaan kepada pangkalan data pelayan pemasangan dan menerima parameter yang perlu dikonfigurasikan. Ini semua disusun menjadi skrip, yang harus dilancarkan secara automatik apabila guestos vm bermula (tetapi sekali: RunOnce).

Sekarang kita tahu bagaimana:

  • but pelayan melalui PXE;
  • pindahkan kawalan ke skrip kami;
  • mengenal pasti pelayan yang perlu disediakan dengan nombor sirinya;
  • konfigurasikan pelayan menggunakan utiliti yang sesuai;
  • pindahkan tetapan ke pangkalan data pelayan pemasangan menggunakan bahagian klien;
  • mengkonfigurasi pelbagai jenis perisian, termasuk menggunakan hipervisor esxi dan mengkonfigurasi mesin maya (semuanya secara automatik).

Kami mengetahui bagaimana:

  • pelayan yang dipasang menerima tetapan yang diperlukan daripada pangkalan data;
  • semua kemajuan penyediaan direkodkan dalam pangkalan data (log, acara, bendera pentas).


Dasarnya:

Saya percaya bahawa keunikan penyelesaian ini terletak pada fleksibiliti, kesederhanaan, keupayaan dan serba boleh.

Sila tulis dalam komen apa pendapat anda.

Sumber: www.habr.com

Tambah komen