Helo, Denis ydw i ac un o'm meysydd gweithgaredd yw datblygu datrysiadau seilwaith yn X5. Heddiw hoffwn rannu gyda chi sut y gallwch chi ddefnyddio system paratoi gweinydd awtomatig yn seiliedig ar offer sydd ar gael yn gyhoeddus. Yn fy marn i, mae hwn yn ddatrysiad diddorol, syml a hyblyg.
Wrth baratoi rydym yn golygu: troi gweinydd newydd allan o'r bocs yn weinydd wedi'i ffurfweddu'n llawn gydag OS. Linux neu gyda'r hypervisor ESXi (ni thrafodir defnyddio gweinyddwyr Windows yn yr erthygl hon).
Telerau:
- gweinyddwyr - gweinyddwyr y mae angen eu ffurfweddu.
- gweinydd gosod yw'r prif weinydd sy'n darparu'r broses baratoi gyfan dros y rhwydwaith.
Pam mae angen awtomeiddio?
Gadewch i ni ddweud bod yna dasg: paratoi gweinyddwyr yn aruthrol o'r dechrau, ar eu hanterth - 30 y dydd. Gellir gosod gweinyddwyr gwahanol wneuthurwyr a modelau, systemau gweithredu gwahanol arnynt, ac efallai y bydd ganddynt hypervisor neu beidio.
Pa weithrediadau sydd wedi'u cynnwys yn y broses sefydlu (heb awtomeiddio):
- cysylltu bysellfwrdd, llygoden, monitor i'r gweinydd;
- ffurfweddu BIOS, RAID, IPMI;
- diweddaru firmware cydran;
- gosod delwedd system ffeiliau (neu osod hypervisor a chopΓ―o peiriannau rhithwir);
Nodyn. Fel arall, mae'n bosibl defnyddio OS trwy osod ffeil ymateb awtomatig. Ond ni fydd hyn yn cael ei drafod yn yr erthygl. Er y gwelwch isod nad yw ychwanegu'r swyddogaeth hon yn anodd.
- ffurfweddu paramedrau OS (enw gwesteiwr, IP, ac ati).
Gyda'r dull hwn, mae'r un gosodiadau yn cael eu perfformio yn olynol ar bob gweinydd. Mae effeithlonrwydd gwaith o'r fath yn isel iawn.
Hanfod awtomeiddio yw dileu cyfranogiad dynol o'r broses paratoi gweinydd. Cymaint Γ’ phosib.
Mae awtomeiddio yn lleihau amser segur rhwng gweithrediadau ac yn ei gwneud hi'n bosibl darparu gweinyddwyr lluosog ar yr un pryd. Mae'r tebygolrwydd o gamgymeriadau oherwydd ffactorau dynol hefyd yn lleihau'n fawr.
Sut mae gweinyddwyr yn cael eu ffurfweddu'n awtomatig?
Gadewch i ni ddadansoddi'r holl gamau yn fanwl.
Mae gennych weinydd Linux rydych chi'n ei ddefnyddio fel gweinydd gosod PXE. Mae gwasanaethau'n cael eu gosod a'u ffurfweddu arno: DHCP, TFTP.
Felly, rydyn ni'n cychwyn y gweinydd (y mae angen ei ffurfweddu) trwy PXE. Gadewch i ni gofio sut mae'n gweithio:
- Dewisir cist rhwydwaith ar y gweinydd.
- Mae'r gweinydd yn llwytho PXE-ROM y cerdyn rhwydwaith ac yn cysylltu Γ’'r gweinydd gosod trwy DHCP i gael cyfeiriad rhwydwaith.
- Mae gweinydd gosod DHCP yn cyhoeddi cyfeiriad, yn ogystal Γ’ chyfarwyddiadau ar gyfer lawrlwytho ymhellach trwy PXE.
- Mae'r gweinydd yn llwytho'r cychwynnydd rhwydwaith o'r gweinydd gosod trwy PXE, mae llwytho pellach yn digwydd yn Γ΄l ffeil ffurfweddu PXE.
- Mae'r gist yn digwydd yn seiliedig ar y paramedrau a dderbyniwyd (cnewyllyn, initramfs, pwyntiau gosod, delwedd sboncen, ac ati).
Nodyn. Mae'r erthygl yn disgrifio cychwyn trwy PXE trwy'r modd BIOS. Ar hyn o bryd, mae gweithgynhyrchwyr wrthi'n gweithredu modd cychwyn UEFI. Ar gyfer PXE, bydd y gwahaniaeth yng nghyfluniad y gweinydd DHCP a phresenoldeb cychwynnydd ychwanegol.
Gadewch i ni edrych ar enghraifft o gyfluniad gweinydd PXE (dewislen pxelinux).
Ffeil 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 // ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΌΠ΅Π½Ρ
Ffeil 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=ββ¦β
Mae'r cnewyllyn a'r initramfs ar y cam hwn yn ddelwedd Linux ganolraddol, a gyda chymorth y bydd prif baratoi a chyfluniad y gweinydd yn digwydd.
Fel y gallwch weld, mae'r cychwynnydd yn trosglwyddo llawer o baramedrau i'r cnewyllyn. Defnyddir rhai o'r paramedrau hyn gan y cnewyllyn ei hun. A gallwn ddefnyddio rhai at ein dibenion ein hunain. Bydd hyn yn cael ei drafod yn nes ymlaen, ond am y tro gallwch gofio y bydd yr holl baramedrau a basiwyd ar gael yn y ddelwedd Linux canolradd trwy / proc/cmdline.
Ble alla i eu cael, cnewyllyn ac initramfs?
Fel sail, gallwch ddewis unrhyw ddosbarthiad Linux. Beth rydyn ni'n talu sylw iddo wrth ddewis:
- rhaid i'r ddelwedd gychwyn fod yn gyffredinol (argaeledd gyrwyr, y gallu i osod cyfleustodau ychwanegol);
- Yn fwyaf tebygol, bydd angen i chi addasu'r initramfs.
Sut mae hyn yn cael ei wneud yn ein datrysiad ar gyfer X5? Dewiswyd CentOS 7 fel sail. Gadewch i ni roi cynnig ar y tric canlynol: paratowch y strwythur delwedd yn y dyfodol, ei bacio i mewn i archif a chreu initramfs, y tu mewn iddo bydd ein archif system ffeiliau. Wrth lwytho'r ddelwedd, bydd yr archif yn cael ei ehangu i'r rhaniad tmpfs a grΓ«wyd. Fel hyn byddwn yn cael delwedd linux byw fach ond llawn gyda'r holl gyfleustodau angenrheidiol, sy'n cynnwys dwy ffeil yn unig: vmkernel ac 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
Felly rydym wedi nodi'r cnewyllyn a'r initramfs y dylid eu llwytho. O ganlyniad, ar hyn o bryd, trwy lwytho'r ddelwedd linux canolraddol trwy PXE, byddwn yn derbyn y consol OS.
Gwych, ond nawr mae angen i ni drosglwyddo rheolaeth i'n βawtomatiaethβ.
Gellir ei wneud fel hyn.
Gadewch i ni dybio ein bod yn bwriadu trosglwyddo rheolaeth i'r sgript mount.sh ar Γ΄l llwytho'r ddelwedd.
Gadewch i ni gynnwys y sgript mount.sh yn autorun. I wneud hyn bydd angen i chi addasu'r initramfs:
- dadbacio initramfs (os ydym yn defnyddio'r opsiwn initramfs uchod, nid oes angen hyn)
- cynnwys cod wrth gychwyn a fydd yn dadansoddi'r paramedrau a basiwyd trwy /proc/cmdline a throsglwyddo rheolaeth ymhellach;
- pecyn initramfs.
Nodyn. Yn achos y pecyn cymorth X5, mae rheolaeth llwytho yn cael ei drosglwyddo i'r sgript /opt/x5/toolkit/bin/hook.sh Ρ ΠΏΠΎΠΌΠΎΡΡΡ override.conf Π² getty tty1 (ExecStart=β¦)
Felly, mae'r ddelwedd wedi'i llwytho, lle mae'r sgript mount.sh yn dechrau yn autorun. Nesaf, mae'r sgript mount.sh yn dadansoddi'r paramedrau a basiwyd (script_cmd =) yn ystod y gweithredu ac yn lansio'r rhaglen / sgript angenrheidiol.
pecyn cymorth label-auto
cnewyllyn...
atodiad... nfs_toolkit_script=scripts/mount.sh script_cmd=master-install.sh
pecyn cymorth label-cragen
cnewyllyn...
atodiad... nfs_toolkit_script=scripts/mount.sh script_cmd =/bin/bash
Yma ar y chwith mae'r ddewislen PXE, ar y dde mae'r diagram trosglwyddo rheolaeth.
Rydym yn cyfrifedig allan trosglwyddo rheolaeth. Yn dibynnu ar y dewis o ddewislen PXE, mae naill ai'r sgript ffurfweddu awtomatig neu'r consol dadfygio yn cael ei lansio.
Yn achos cyfluniad awtomatig, mae'r cyfeiriaduron angenrheidiol wedi'u gosod o'r gweinydd gosod, sy'n cynnwys:
- sgriptiau;
- templedi BIOS/UEFI wedi'u cadw ar gyfer gweinyddwyr amrywiol;
- firmware;
- cyfleustodau gweinydd;
- boncyffion
Nesaf, mae'r sgript mount.sh yn trosglwyddo rheolaeth i'r sgript master-install.sh o'r cyfeiriadur sgript.
Mae'r goeden sgript (y drefn y cΓ’nt eu lansio) yn edrych fel hyn:
- meistr-osod
- swyddogaethau cyfranddaliadau (swyddogaethau a rennir)
- gwybodaeth (allbwn gwybodaeth)
- modelau (gosod paramedrau gosod yn seiliedig ar fodel y gweinydd)
- prepare_utils (gosod y cyfleustodau angenrheidiol)
- fwupdate (diweddariad cadarnwedd)
- diag (diagnosteg elfennol)
- biosconf (gosodiadau BIOS/UEFI)
- clockfix (gosod yr amser ar y famfwrdd)
- srmconf (cyfluniad rhyngwyneb rhyngwyneb anghysbell)
- raidconf (ffurfweddu cyfrolau rhesymegol)
un o:
- rhagosod (trosglwyddo rheolaeth i'r OS neu osodwr hypervisor, fel ESXi)
- Cyfuno-install (dechrau ar unwaith o ddadbacio'r ddelwedd)
Nawr rydyn ni'n gwybod:
- sut i gychwyn gweinydd trwy PXE;
- sut i drosglwyddo rheolaeth i'ch sgript eich hun.
Gadewch i ni barhau. Daeth y cwestiynau canlynol yn berthnasol:
- Sut i adnabod y gweinydd yr ydym yn ei baratoi?
- Pa gyfleustodau a sut i ffurfweddu'r gweinydd?
- Sut i gael gosodiadau ar gyfer gweinydd penodol?
Sut i adnabod y gweinydd yr ydym yn ei baratoi?
Mae'n syml - DMI:
dmidecode βs system-product-name
dmidecode βs system-manufacturer
dmidecode βs system-serial-number
Mae popeth sydd ei angen arnoch chi yma: gwerthwr, model, rhif cyfresol. Os nad ydych yn siΕ΅r bod y wybodaeth hon yn bresennol ym mhob gweinydd, gallwch eu hadnabod yn Γ΄l eu cyfeiriad MAC. Neu yn y ddwy ffordd ar yr un pryd, os yw gwerthwyr y gweinydd yn wahanol ac ar rai modelau, yn syml, nid oes unrhyw wybodaeth am y rhif cyfresol.
Yn seiliedig ar y wybodaeth a dderbyniwyd, mae ffolderau rhwydwaith yn cael eu gosod o'r gweinydd gosod ac mae popeth angenrheidiol yn cael ei lwytho (cyfleustodau, firmware, ac ati).
Pa gyfleustodau a sut i ffurfweddu'r gweinydd?
Byddaf yn darparu cyfleustodau ar gyfer Linux i rai gweithgynhyrchwyr. Mae'r holl gyfleustodau ar gael ar wefannau swyddogol gwerthwyr.
Gyda'r firmware, credaf fod popeth yn glir. Maent fel arfer yn dod ar ffurf ffeiliau gweithredadwy wedi'u pecynnu. Mae'r ffeil gweithredadwy yn rheoli'r broses diweddaru firmware ac yn adrodd ar y cod dychwelyd.
Mae BIOS ac IPMI fel arfer yn cael eu ffurfweddu trwy dempledi. Os oes angen, gellir golygu'r templed cyn ei lawrlwytho.
Gellir hefyd ffurfweddu cyfleustodau RAID gan rai gwerthwyr gan ddefnyddio templed. Os nad yw hyn yn wir, yna bydd yn rhaid i chi ysgrifennu sgript ffurfweddu.
Mae'r weithdrefn ar gyfer sefydlu RAID gan amlaf fel a ganlyn:
- Gofynnwn am y ffurfweddiad presennol.
- Os oes araeau rhesymegol eisoes, rydym yn eu dileu.
- Gadewch i ni edrych ar ba ddisgiau corfforol sy'n bresennol a faint sydd.
- Creu casgliad rhesymegol newydd. Rydym yn torri ar draws y broses rhag ofn y bydd gwall.
Sut i gael gosodiadau ar gyfer gweinydd penodol?
Gadewch i ni dybio y bydd gosodiadau'r holl weinyddion yn cael eu storio ar y gweinydd gosod. Yn yr achos hwn, i ateb ein cwestiwn, rhaid inni benderfynu yn gyntaf sut i drosglwyddo'r gosodiadau i'r gweinydd gosod.
Ar y dechrau, gallwch fynd heibio gyda ffeiliau testun. (Yn y dyfodol, efallai y byddwch am ddefnyddio ffeil testun fel dull wrth gefn ar gyfer trosglwyddo gosodiadau.)
Gallwch βrannuβ ffeil testun ar y gweinydd gosod. Ac ychwanegu ei mount at y sgript mount.sh.
Bydd y llinellau, er enghraifft, yn edrych fel hyn:
<rhif cyfresol> <enw gwesteiwr> <subnet>
Bydd y llinellau hyn yn cael eu trosglwyddo i'r ffeil gan y peiriannydd o'i beiriant gwaith. Ac yna, wrth sefydlu gweinydd, bydd y paramedrau ar gyfer gweinydd penodol yn cael eu darllen o'r ffeil.
Ond, yn y tymor hir, mae'n well defnyddio cronfa ddata i storio gosodiadau, cyflyrau a logiau gosodiadau gweinydd.
Wrth gwrs, nid yw cronfa ddata yn unig yn ddigon, a bydd angen i chi greu rhan cleient gyda chymorth pa leoliadau fydd yn cael eu trosglwyddo i'r gronfa ddata. Mae hyn yn anoddach i'w weithredu o'i gymharu Γ’ ffeil testun, ond mewn gwirionedd, nid yw popeth mor anodd ag y mae'n ymddangos. Mae'n eithaf posibl ysgrifennu fersiwn fach iawn o gleient a fydd yn syml yn trosglwyddo data i'r gronfa ddata eich hun. Ac yn y dyfodol bydd yn bosibl gwella'r rhaglen cleient yn y modd rhad ac am ddim (adroddiadau, argraffu labeli, anfon hysbysiadau, ac ati sy'n dod i'r meddwl).
Trwy wneud cais penodol i'r gronfa ddata a nodi rhif cyfresol y gweinydd, byddwn yn derbyn y paramedrau angenrheidiol ar gyfer ffurfweddu'r gweinydd.
Hefyd, ni fydd angen i ni ddod o hyd i gloeon ar gyfer mynediad ar yr un pryd, fel sy'n wir am ffeil testun.
Gallwn ysgrifennu'r log ffurfweddu i'r gronfa ddata ar bob cam a rheoli'r broses osod trwy ddigwyddiadau a fflagiau'r camau paratoi.
Nawr rydyn ni'n gwybod sut:
- cychwyn y gweinydd trwy PXE;
- trosglwyddo rheolaeth i'n sgript;
- nodi'r gweinydd y mae angen ei baratoi yn Γ΄l ei rif cyfresol;
- ffurfweddu'r gweinydd gan ddefnyddio'r cyfleustodau priodol;
- trosglwyddo gosodiadau i gronfa ddata'r gweinydd gosod gan ddefnyddio'r rhan cleient.
Cawsom wybod sut:
- mae'r gweinydd gosod yn derbyn y gosodiadau angenrheidiol o'r gronfa ddata;
- cofnodir yr holl gynnydd paratoi yn y gronfa ddata (logiau, digwyddiadau, baneri llwyfan).
Beth am y gwahanol fathau o feddalwedd rydych chi'n eu gosod? Sut i osod hypervisor, copΓ―o VM a ffurfweddu'r cyfan?
Yn achos defnyddio delwedd system ffeiliau (linux) i galedwedd, mae popeth yn eithaf syml:
- Ar Γ΄l sefydlu holl gydrannau'r gweinydd, rydyn ni'n defnyddio'r ddelwedd.
- Gosodwch y cychwynnydd grub.
- Rydym yn croot ac yn ffurfweddu popeth sydd ei angen.
Sut i drosglwyddo rheolaeth i osodwr yr OS (gan ddefnyddio ESXi fel enghraifft).
- Rydyn ni'n trefnu trosglwyddo rheolaeth o'n sgript i'r gosodwr hypervisor gan ddefnyddio'r ffeil ymateb awtomatig (kickstart):
- Rydym yn dileu'r rhaniadau cyfredol ar y ddisg.
- Creu rhaniad gyda maint o 500MB.
- Rydym yn ei nodi fel bootable.
- Fformat i FAT32.
- Rydym yn copΓ―o'r ffeiliau gosod ESXi i'r gwraidd.
- Gosod syslinux.
- CopΓ―o syslinux.cfg i /syslinux/
default esxi
prompt 1
timeout 50
label esxi
kernel mboot.c32
append -c boot.cfg
- CopΓ―wch mboot.c32 i /syslinux.
- Dylai fod gan Boot.cfg kernelopt=ks=ftp:// /ks_esxi.cfg
- Rydym yn ailgychwyn y gweinydd.
Ar Γ΄l i'r gweinydd ailgychwyn, bydd y gosodwr ESXi yn lawrlwytho o yriant caled y gweinydd. Bydd yr holl ffeiliau gosodwr angenrheidiol yn cael eu llwytho i'r cof ac yna bydd y gosodiad ESXi yn dechrau, yn Γ΄l y ffeil auto-ymateb penodedig.
Dyma ychydig o linellau o'r ffeil ymateb awtomatig 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
Ar y cam hwn, mae'r hypervisor yn cael ei osod a'i ffurfweddu, ac mae peiriannau rhithwir yn cael eu copΓ―o.
Sut i ffurfweddu peiriannau rhithwir nawr?
Fe wnaethon ni dwyllo ychydig: yn ystod y gosodiad fe wnaethom osod y paramedr guestinfo.esxihost.id = "$SYSSN" yn y ffeil VM1.vmx a nodi rhif cyfresol y gweinydd ffisegol ynddo.
Nawr, ar Γ΄l cychwyn, gall y peiriant rhithwir (gyda'r pecyn vmware-tools wedi'i osod) gyrchu'r paramedr hwn:
ESXI_SN=$(vmtoolsd --cmd "info-get guestinfo.esxihost.id")
Hynny yw, bydd y VM yn gallu adnabod ei hun (mae'n gwybod rhif cyfresol y gwesteiwr ffisegol), gwneud cais i gronfa ddata'r gweinydd gosod a derbyn y paramedrau y mae angen eu ffurfweddu. Mae hyn i gyd wedi'i lunio'n sgript, y dylid ei lansio'n awtomatig pan fydd gwesteion vm yn cychwyn (ond unwaith: RunOnce).
Nawr rydyn ni'n gwybod sut:
- cychwyn y gweinydd trwy PXE;
- trosglwyddo rheolaeth i'n sgript;
- nodi'r gweinydd y mae angen ei baratoi yn Γ΄l ei rif cyfresol;
- ffurfweddu'r gweinydd gan ddefnyddio'r cyfleustodau priodol;
- trosglwyddo gosodiadau i gronfa ddata'r gweinydd gosod gan ddefnyddio'r rhan cleient;
- ffurfweddu gwahanol fathau o feddalwedd, gan gynnwys defnyddio'r hypervisor esxi a ffurfweddu peiriannau rhithwir (i gyd yn awtomatig).
Cawsom wybod sut:
- mae'r gweinydd gosod yn derbyn y gosodiadau angenrheidiol o'r gronfa ddata;
- cofnodir yr holl gynnydd paratoi yn y gronfa ddata (logiau, digwyddiadau, baneri llwyfan).
Mae'r llinell waelod:
Credaf mai natur unigryw'r ateb hwn yw ei hyblygrwydd, ei symlrwydd, ei alluoedd a'i amlochredd.
Ysgrifennwch eich barn yn y sylwadau.
Ffynhonnell: hab.com