{"id":74905,"date":"2020-03-21T20:42:25","date_gmt":"2020-03-21T17:42:25","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/bare-metal-provisioning-svoimi-rukami-ili-avtomaticheskaya-podgotovka-serverov-s-nulya"},"modified":"2020-03-21T20:42:25","modified_gmt":"2020-03-21T17:42:25","slug":"bare-metal-provisioning-svoimi-rukami-ili-avtomaticheskaya-podgotovka-serverov-s-nulya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/bare-metal-provisioning-svoimi-rukami-ili-avtomaticheskaya-podgotovka-serverov-s-nulya","title":{"rendered":"Bare-Metal Provisioning saj\u00e1t kez\u0171leg, vagy Automatikus szerver el\u0151k\u00e9sz\u00edt\u00e9s null\u00e1r\u00f3l","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u00dcdv\u00f6zl\u00f6m, Denis vagyok, \u00e9s az egyik tev\u00e9kenys\u00e9gi k\u00f6r\u00f6m az infrastrukt\u00fara megold\u00e1sok fejleszt\u00e9se az X5-n\u00e9l. Ma szeretn\u00e9m megosztani \u00d6n\u00f6kkel, hogyan lehet nyilv\u00e1nos eszk\u00f6z\u00f6k alapj\u00e1n automatikus rendszert fel\u00e1ll\u00edtani a szerverek el\u0151k\u00e9sz\u00edt\u00e9s\u00e9re. V\u00e9lem\u00e9nyem szerint ez egy \u00e9rdekes, egyszer\u0171 \u00e9s rugalmas megold\u00e1s.<\/p>\n<p><img decoding=\"async\" alt=\"Bare-Metal Provisioning saj\u00e1t kez\u0171leg, vagy Automatikus szerver el\u0151k\u00e9sz\u00edt\u00e9s null\u00e1r\u00f3l\" src=\"\/wp-content\/uploads\/2020\/03\/b49cca7e782c0875a95feee497f141b0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nAz el\u0151k\u00e9sz\u00edt\u00e9s alatt azt \u00e9rtj\u00fck: az \u00faj, dobozb\u00f3l kivett szerverb\u0151l teljesen be\u00e1ll\u00edtott szerver k\u00e9sz\u00edt\u00e9se Linux OS-sel vagy ESXi hiperv\u00edzi\u00f3val (kisz\u00f3r\u00e1s <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/hu\/server\/\"   title=\"szerverek\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1469\">szerverek<\/a> A Windows a cikkben nem ker\u00fcl megvitat\u00e1sra).<\/p>\n<p><b>Kifejez\u00e9sek<\/b>:<\/p>\n<ul>\n<li>szerverek \u2013 olyan szerverek, amelyeket be kell \u00e1ll\u00edtani.<\/li>\n<li>install-szerver \u2013 a f\u0151 szerver, amely biztos\u00edtja az eg\u00e9sz el\u0151k\u00e9sz\u00edt\u00e9si folyamatot h\u00e1l\u00f3zaton kereszt\u00fcl.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Mi\u00e9rt sz\u00fcks\u00e9ges az automatiz\u00e1l\u00e1s?<\/h3>\n<p>\nTegy\u00fck fel, hogy van egy feladat: nagy mennyis\u00e9g\u0171 szerver el\u0151k\u00e9sz\u00edt\u00e9se null\u00e1r\u00f3l, cs\u00facsid\u0151szakban \u2013 napi 30. K\u00fcl\u00f6nb\u00f6z\u0151 gy\u00e1rt\u00f3k \u00e9s modellek szerverei, amelyekre k\u00fcl\u00f6nb\u00f6z\u0151 OS-ek telep\u00edthet\u0151k, esetleg van, vagy nincs hiperv\u00edzi\u00f3.<\/p>\n<p>Milyen m\u0171veletek tartoznak a be\u00e1ll\u00edt\u00e1si folyamatba (automatiz\u00e1l\u00e1s n\u00e9lk\u00fcl):<\/p>\n<ul>\n<li>csatlakoztassa a billenty\u0171zetet, egeret, monitort a szerverhez;<\/li>\n<li>\u00e1ll\u00edtsa be a BIOS-t, RAID-et, IPMI-t;<\/li>\n<li>friss\u00edtse a komponensek firmware-j\u00e9t;<\/li>\n<li>k\u00e9sz\u00edtse el a f\u00e1jlrendszer k\u00e9p\u00e9t (vagy telep\u00edtse a hiperv\u00edzi\u00f3t, \u00e9s m\u00e1solja a virtu\u00e1lis g\u00e9peket);<\/li>\n<\/ul>\n<p>\nMegjegyz\u00e9s. Alternat\u00edv megold\u00e1sk\u00e9nt az OS telep\u00edt\u00e9se lehets\u00e9ges egy v\u00e1laszf\u00e1jl seg\u00edts\u00e9g\u00e9vel. De err\u0151l nem fogunk besz\u00e9lni a cikkben. B\u00e1r al\u00e1bb l\u00e1thatja, hogy ezt a funkci\u00f3t k\u00f6nnyen hozz\u00e1 lehet adni.<\/p>\n<ul>\n<li>\u00e1ll\u00edtsa be az OS param\u00e9tereit (hostname, IP, stb.).<\/li>\n<\/ul>\n<p>\nEbben a megk\u00f6zel\u00edt\u00e9sben ugyanazokat a be\u00e1ll\u00edt\u00e1sokat v\u00e9gezz\u00fck el minden szerveren sorozatosan. Az ilyen munka hat\u00e9konys\u00e1ga nagyon alacsony.<\/p>\n<p>Az automatiz\u00e1l\u00e1s l\u00e9nyege \u2013 kiiktatni az ember r\u00e9szv\u00e9tel\u00e9t a szerver el\u0151k\u00e9sz\u00edt\u00e9si folyamat\u00e1b\u00f3l. A lehet\u0151 legnagyobb m\u00e9rt\u00e9kben. <\/p>\n<p>Az automatiz\u00e1l\u00e1s r\u00e9v\u00e9n cs\u00f6kken az \u00fczemid\u0151 a m\u0171veletek k\u00f6z\u00f6tt, \u00e9s lehet\u0151v\u00e9 v\u00e1lik t\u00f6bb szerver egyidej\u0171 el\u0151k\u00e9sz\u00edt\u00e9se. Emellett jelent\u0151sen cs\u00f6kken a hib\u00e1k el\u0151fordul\u00e1s\u00e1nak val\u00f3sz\u00edn\u0171s\u00e9ge az emberi t\u00e9nyez\u0151 miatt.<\/p>\n<p><img decoding=\"async\" alt=\"Bare-Metal Provisioning saj\u00e1t kez\u0171leg, vagy Automatikus szerver el\u0151k\u00e9sz\u00edt\u00e9s null\u00e1r\u00f3l\" src=\"\/wp-content\/uploads\/2020\/03\/8c196058891a7f41c5b93e7f6721480b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Hogyan t\u00f6rt\u00e9nik az automatikus szerver be\u00e1ll\u00edt\u00e1s?<\/h3>\n<p>\nFelejts\u00fck el r\u00e9szletesen az \u00f6sszes l\u00e9p\u00e9st.<\/p>\n<p>Van egy linux-szervere, amelyet PXE install-szerverk\u00e9nt haszn\u00e1l. Rajta telep\u00edtve \u00e9s be\u00e1ll\u00edtva vannak a k\u00f6vetkez\u0151 szolg\u00e1ltat\u00e1sok: DHCP, TFTP.<\/p>\n<p>Teh\u00e1t, ind\u00edtsuk el a szervert (amelyet be kell \u00e1ll\u00edtani) PXE-n. Eml\u00e9kezz\u00fcnk, hogyan m\u0171k\u00f6dik ez:<\/p>\n<ul>\n<li>A szerveren a h\u00e1l\u00f3zati ind\u00edt\u00e1s van kiv\u00e1lasztva.<\/li>\n<li>A szerver bet\u00f6lti a PXE-ROM-ot a h\u00e1l\u00f3zati k\u00e1rty\u00e1r\u00f3l, \u00e9s DHCP-n kereszt\u00fcl kapcsolatba l\u00e9p az install-szerverrel, hogy megkapja a h\u00e1l\u00f3zati c\u00edmet.<\/li>\n<li>Az install-szerver DHCP-je c\u00edmet ad ki, valamint utas\u00edt\u00e1st a PXE-n kereszt\u00fcli tov\u00e1bbi ind\u00edt\u00e1shoz.<\/li>\n<li>A szerver PXE-n kereszt\u00fcl bet\u00f6lti a h\u00e1l\u00f3zati bet\u00f6lt\u0151t az install-szerverr\u0151l, a tov\u00e1bbi ind\u00edt\u00e1s a PXE konfigur\u00e1ci\u00f3s f\u00e1jl szerint zajlik.<\/li>\n<li>Az ind\u00edt\u00e1s a kapott param\u00e9terek (kernel, initramfs, csatol\u00e1si pontok, squashfs image stb.) alapj\u00e1n t\u00f6rt\u00e9nik.<\/li>\n<\/ul>\n<p>\nMegjegyz\u00e9s: A cikk a PXE ind\u00edt\u00e1st BIOS m\u00f3dban ismerteti. Jelenleg a gy\u00e1rt\u00f3k akt\u00edvan bevezetik az UEFI ind\u00edt\u00f3 m\u00f3dot. A PXE eset\u00e9ben a k\u00fcl\u00f6nbs\u00e9g a DHCP-szerver konfigur\u00e1ci\u00f3j\u00e1ban \u00e9s egy tov\u00e1bbi bet\u00f6lt\u0151 megl\u00e9t\u00e9ben rejlik.<\/p>\n<p>Tekints\u00fck \u00e1t egy PXE-szerver konfigur\u00e1ci\u00f3j\u00e1t (pxelinux men\u00fc p\u00e9ld\u00e1ja).<\/p>\n<p>A f\u00e1jl pxelinux.cfg\/default:<\/p>\n<pre><code class=\"plaintext\">default menu.c32\nprompt 0\ntimeout 100\nmenu title X5 PXE Boot Menu\nLABEL InstallServer Menu\n\tMENU LABEL InstallServer\n\tKERNEL menu.c32\n\tAPPEND pxelinux.cfg\/installserver\nLABEL VMware Menu\n\tMENU LABEL VMware ESXi Install\n\tKERNEL menu.c32\n\tAPPEND pxelinux.cfg\/vmware\nLABEL toolkit \/\/ alap\u00e9rtelmezett men\u00fc\n\tMENU LABEL Linux Scripting Toolkits\n\tMENU default\n\tKERNEL menu.c32\n\tAPPEND pxelinux.cfg\/toolkit \/\/ k\u00f6vetkez\u0151 men\u00fcre ugr\u00e1s<\/code><\/pre>\n<p>\nA f\u00e1jl pxelinux.cfg\/toolkit:<\/p>\n<pre><code class=\"plaintext\">prompt 0\ntimeout 100\nmenu title X5 PXE Boot Menu\nlabel mainmenu\n    menu label ^Vissza a F\u0151men\u00fcbe\n    kernel menu.c32\n    append pxelinux.cfg\/default\nlabel x5toolkit-auto \/\/ alap\u00e9rtelmezett - automatikus m\u00f3d\n        menu label x5 toolkit autoinstall\n        menu default\n        kernel toolkit\/tkcustom-kernel\n        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=\"\u2026\"\nlabel x5toolkit-shell \/\/ hibakeres\u00e9shez - konzol\n        menu label x5 toolkit shell\n        kernel toolkit\/tkcustom-kernel\n        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=\"\u2026\"<\/code><\/pre>\n<p>\nA kernel \u00e9s az initramfs ebben a szakaszban egy k\u00f6ztes linux k\u00e9p, amellyel a szerver f\u0151bb el\u0151k\u00e9sz\u00edt\u00e9se \u00e9s be\u00e1ll\u00edt\u00e1sa t\u00f6rt\u00e9nik.<\/p>\n<p>Ahogy l\u00e1tjuk, a bet\u00f6lt\u0151 sok param\u00e9tert ad \u00e1t a kernelnek. Ezek k\u00f6z\u00fcl n\u00e9h\u00e1nyat a kernel haszn\u00e1l, m\u00edg n\u00e9h\u00e1nyat a saj\u00e1t c\u00e9ljainkra felhaszn\u00e1lhatunk. Err\u0151l k\u00e9s\u0151bb lesz sz\u00f3, addig is \u00e9rdemes megjegyezni, hogy minden \u00e1tadott param\u00e9ter el\u00e9rhet\u0151 lesz a k\u00f6ztes linux k\u00e9pen kereszt\u00fcl a \/proc\/cmdline-on.<\/p>\n<p>Honnan szerezhetj\u00fck be a kernelt \u00e9s az initramfs-t?<br \/>\nAlapk\u00e9nt b\u00e1rmilyen linux disztrib\u00faci\u00f3t v\u00e1laszthatunk. Mire figyel\u00fcnk a v\u00e1laszt\u00e1s sor\u00e1n:<\/p>\n<ul>\n<li>A boot image must be universal (with drivers included, possibilities for installing additional utilities);<\/li>\n<li>It is likely that customization of the initramfs will be required.<\/li>\n<\/ul>\n<p>\nHow is this done in our solution for X5? We chose CentOS 7 as the base. We'll perform the following trick: prepare the future structure of the image, pack it into an archive, and create an initramfs, inside which will be our file system archive. When the image is booted, the archive will be unpacked into the created tmpfs partition. Thus, we will get a minimal yet fully functional live Linux image with all necessary utilities, consisting of just two files: vmkernel and initramfs. <\/p>\n<pre><code class=\"plaintext\">#\u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438: \n\nmkdir -p \/tftpboot\/toolkit\/CustomTK\/rootfs \/tftpboot\/toolkit\/CustomTK\/initramfs\/bin\n\n#\u043f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443:\n\nyum groups -y install &quot;Minimal Install&quot; --installroot=\/tftpboot\/toolkit\/CustomTK\/rootfs\/\nyum -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\/\nyum -y remove biosdevname --installroot=\/tftpboot\/toolkit\/CustomTK\/rootfs\/\n\n# \u043f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c initramfs:\n\nwget https:\/\/busybox.net\/downloads\/binaries\/1.31.0-defconfig-multiarch-musl\/busybox-x86_64 -O \/tftpboot\/toolkit\/CustomTK\/initramfs\/bin\/busybox\nchmod a+x \/tftpboot\/toolkit\/CustomTK\/initramfs\/bin\/busybox\ncp \/tftpboot\/toolkit\/CustomTK\/rootfs\/boot\/vmlinuz-3.10.0-957.el7.x86_64 \/tftpboot\/toolkit\/tkcustom-kernel\n\n# \u0441\u043e\u0437\u0434\u0430\u0435\u043c \/tftpboot\/toolkit\/CustomTK\/initramfs\/init (\u043d\u0438\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430):\n\n#!\/bin\/busybox sh\n\/bin\/busybox --install \/bin\nmkdir -p \/dev \/proc \/sys \/var\/run \/newroot\nmount -t proc proc \/proc\nmount -o mode=0755 -t devtmpfs devtmpfs \/dev\nmkdir -p \/dev\/pts \/dev\/shm \/dev\/mapper \/dev\/vc\nmount -t devpts -o gid=5,mode=620 devpts \/dev\/pts\nmount -t sysfs sysfs \/sys\nmount -t tmpfs -o size=4000m tmpfs \/newroot\necho -n &quot;Extracting rootfs... &quot;\nxz -d -c -f rootfs.tar.xz | tar -x -f - -C \/newroot\necho &quot;done&quot;\nmkdir -p \/newroot\/dev \/newroot\/proc \/newroot\/sys\nmount --move \/sys  \/newroot\/sys\nmount --move \/proc \/newroot\/proc\nmount --move \/dev  \/newroot\/dev\nexec switch_root \/newroot \/sbin\/init\n\n# \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c rootfs \u0438 initramfs:\n\ncd \/tftpboot\/toolkit\/CustomTK\/rootfs\ntar cJf \/tftpboot\/toolkit\/CustomTK\/initramfs\/rootfs.tar.xz --exclude .\/proc --exclude .\/sys --exclude .\/dev .\ncd \/tftpboot\/toolkit\/CustomTK\/initramfs\nfind . -print0 | cpio --null -ov --format=newc | gzip -9 &gt; \/tftpboot\/toolkit\/tkcustom-initramfs-new.gz<\/code><\/pre>\n<p>\nSo, we specified the kernel and initramfs that should be loaded. As a result, at this stage, loading the intermediate Linux image via PXE will give us an OS console.<\/p>\n<p>Great, but now we need to pass control to our 'automation'.<\/p>\n<p>This can be done as follows.<\/p>\n<p>Suppose after booting the image we plan to pass control to the mount.sh script.<br \/>\nWe will include the mount.sh script in the auto-start. For this, it will be necessary to modify the initramfs:<\/p>\n<ul>\n<li>unpack the initramfs (if we are using the above-provided initramfs option, this is not required)<\/li>\n<li>include in the auto-start code that will analyze the parameters passed via \/proc\/cmdline and pass control further;<\/li>\n<li>pack the initramfs.<\/li>\n<\/ul>\n<p>\nNote. In the case of X5, control of the boot process is passed to the script <code>\/opt\/x5\/toolkit\/bin\/hook.sh \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e override.conf \u0432 getty tty1 (ExecStart=\u2026) <\/code><\/p>\n<p>So, the image is booted, in which the mount.sh script starts in auto-start. Next, the mount.sh script analyzes the passed parameters (script_cmd=) during execution and launches the necessary program\/script.<\/p>\n<p>label toolkit-<b>auto<\/b><br \/>\nkernel \u2026<br \/>\nappend \u2026 nfs_toolkit_script=scripts\/mount.sh <b>script_cmd=master-install.sh<br \/>\n<\/b><br \/>\nlabel toolkit-<b>shell<\/b><br \/>\nkernel \u2026<br \/>\nappend \u2026 nfs_toolkit_script=scripts\/mount.sh <b>script_cmd=\/bin\/bash<\/b><\/p>\n<p><img decoding=\"async\" alt=\"Bare-Metal Provisioning saj\u00e1t kez\u0171leg, vagy Automatikus szerver el\u0151k\u00e9sz\u00edt\u00e9s null\u00e1r\u00f3l\" src=\"\/wp-content\/uploads\/2020\/03\/943eeb64fbf746feab5119ead5b1ca66.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHere, on the left is the PXE menu, on the right - the control transfer scheme.<\/p>\n<p>We figured out the control transfer. Depending on the choice of PXE menu, either the auto-configuration script or the console for debugging is launched.<\/p>\n<p>In the case of automatic configuration, the necessary directories from the install server are mounted, which include:<\/p>\n<ul>\n<li>scripts;<\/li>\n<li>saved BIOS\/UEFI templates for various servers;<\/li>\n<li>firmware;<\/li>\n<li>utilities for servers;<\/li>\n<li>logs.<\/li>\n<\/ul>\n<p>\nNext, the mount.sh script passes control to the master-install.sh script from the scripts directory.<\/p>\n<p>The script tree (the order of their execution) looks approximately like this:<\/p>\n<ul>\n<li>master-install<\/li>\n<li>sharefunctions (common functions)<\/li>\n<li>info (inform\u00e1ci\u00f3k ki\u00edr\u00e1sa)<\/li>\n<li>models (a telep\u00edt\u00e9si param\u00e9terek be\u00e1ll\u00edt\u00e1sa a szervermodell alapj\u00e1n)<\/li>\n<li>prepare_utils (a sz\u00fcks\u00e9ges seg\u00e9dprogramok telep\u00edt\u00e9se)<\/li>\n<li>fwupdate (firmware friss\u00edt\u00e9se)<\/li>\n<li>diag (alapdiagnosztika)<\/li>\n<li>biosconf (BIOS\/UEFI be\u00e1ll\u00edt\u00e1sa)<\/li>\n<li>clockfix (id\u0151k be\u00e1ll\u00edt\u00e1sa az alaplapon)<\/li>\n<li>srmconf (a t\u00e1voli interf\u00e9sz be\u00e1ll\u00edt\u00e1sa)<\/li>\n<li>raidconf (logikai k\u00f6tetek be\u00e1ll\u00edt\u00e1sa)<\/li>\n<\/ul>\n<p>\negyik a k\u00f6vetkez\u0151k k\u00f6z\u00fcl:<\/p>\n<ul>\n<li>preinstall (az OS vagy hypervisor telep\u00edt\u0151t ind\u00edtja, p\u00e9ld\u00e1ul ESXi)<\/li>\n<li>merged-install (az image kib\u0151v\u00edt\u00e9s\u00e9nek k\u00f6zvetlen ind\u00edt\u00e1sa)<\/li>\n<\/ul>\n<p>\n<b>Most m\u00e1r tudjuk:<\/p>\n<ul>\n<li>hogyan kell a szervert PXE-n kereszt\u00fcl bet\u00f6lteni;<\/li>\n<li>hogyan lehet \u00e1tadni a vez\u00e9rl\u00e9st saj\u00e1t scriptnek.<\/li>\n<\/ul>\n<p><\/b><br \/>\nFolytassuk. A k\u00f6vetkez\u0151 k\u00e9rd\u00e9sek v\u00e1ltak aktu\u00e1liss\u00e1:<\/p>\n<ul>\n<li>Hogyan azonos\u00edtsuk a k\u00e9sz\u00fcl\u0151 szervert?<\/li>\n<li>Milyen seg\u00e9dprogramokat \u00e9s hogyan \u00e1ll\u00edtsuk be a szervert?<\/li>\n<li>Hogyan kaphatunk be\u00e1ll\u00edt\u00e1sokat egy konkr\u00e9t szerverhez?<\/li>\n<\/ul>\n<p><\/p>\n<h3>Hogyan azonos\u00edtsuk a k\u00e9sz\u00fcl\u0151 szervert?<\/h3>\n<p>\nEz egyszer\u0171 \u2013 DMI:<\/p>\n<pre><code class=\"plaintext\">dmidecode \u2013s system-product-name\ndmidecode \u2013s system-manufacturer\ndmidecode \u2013s system-serial-number<\/code><\/pre>\n<p>\nItt minden sz\u00fcks\u00e9ges inform\u00e1ci\u00f3 megtal\u00e1lhat\u00f3: gy\u00e1rt\u00f3, modell, sorozatsz\u00e1m. Ha nem biztos benne, hogy ez az inform\u00e1ci\u00f3 minden szerveren el\u00e9rhet\u0151, akkor a MAC-c\u00edm alapj\u00e1n is azonos\u00edthatja \u0151ket. Vagy mindk\u00e9t m\u00f3dszert egyszerre, ha a szervergy\u00e1rt\u00f3k k\u00fcl\u00f6nb\u00f6z\u0151ek, \u00e9s egyes modellek eset\u00e9ben a sorozatsz\u00e1m inform\u00e1ci\u00f3 egyszer\u0171en hi\u00e1nyzik.<\/p>\n<p>A megszerzett inform\u00e1ci\u00f3k alapj\u00e1n h\u00e1l\u00f3zati mapp\u00e1k ker\u00fclnek becsatol\u00e1sra az install szerverr\u0151l, \u00e9s bet\u00f6lt\u0151dik minden sz\u00fcks\u00e9ges dolog (seg\u00e9dprogramok, firmware stb.).<\/p>\n<h3>Milyen seg\u00e9dprogramokat \u00e9s hogyan \u00e1ll\u00edtsuk be a szervert?<\/h3>\n<p>\nN\u00e9h\u00e1ny gy\u00e1rt\u00f3 linuxos seg\u00e9dprogramjait mutatom be. Minden seg\u00e9dprogram el\u00e9rhet\u0151 a gy\u00e1rt\u00f3k hivatalos weboldalain.<\/p>\n<p><img decoding=\"async\" alt=\"Bare-Metal Provisioning saj\u00e1t kez\u0171leg, vagy Automatikus szerver el\u0151k\u00e9sz\u00edt\u00e9s null\u00e1r\u00f3l\" src=\"\/wp-content\/uploads\/2020\/03\/fab53d1fa6e9a222ec69248439551ad7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA firmware-rel kapcsolatban gondolom, minden vil\u00e1gos. \u00c1ltal\u00e1ban t\u00f6m\u00f6r\u00edtett v\u00e9grehajthat\u00f3 f\u00e1jlokk\u00e9nt \u00e9rkeznek. A v\u00e9grehajthat\u00f3 f\u00e1jl ir\u00e1ny\u00edtja a firmware friss\u00edt\u00e9si folyamat\u00e1t, \u00e9s megadja a visszat\u00e9r\u00e9si k\u00f3dot.<\/p>\n<p>A BIOS \u00e9s az IPMI \u00e1ltal\u00e1ban sablonokon kereszt\u00fcl konfigur\u00e1lhat\u00f3. Ha sz\u00fcks\u00e9ges, a sablon szerkeszthet\u0151 a t\u00f6lt\u00e9s el\u0151tt.<\/p>\n<p>N\u00e9h\u00e1ny gy\u00e1rt\u00f3 RAID seg\u00e9dprogramjai is be\u00e1ll\u00edthat\u00f3k sablon alapj\u00e1n. Ha nem, akkor egy konfigur\u00e1l\u00f3 scriptet kell \u00edrni.<\/p>\n<p>A RAID be\u00e1ll\u00edt\u00e1s\u00e1nak sorrendje a legt\u00f6bb esetben a k\u00f6vetkez\u0151:<\/p>\n<ul>\n<li>Lek\u00e9rdezz\u00fck a jelenlegi konfigur\u00e1ci\u00f3t.<\/li>\n<li>Ha m\u00e1r l\u00e9teznek logikai t\u00f6mb\u00f6k \u2013 t\u00f6r\u00f6lj\u00fck azokat.<\/li>\n<li>Megn\u00e9zz\u00fck, milyen fizikai lemezek vannak \u00e9s h\u00e1nyan.<\/li>\n<li>\u00daj logikai t\u00f6mb\u00f6t hozunk l\u00e9tre. Hib\u00e1s m\u0171k\u00f6d\u00e9s eset\u00e9n meg\u00e1ll\u00edtjuk a folyamatot.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Hogyan kaphatunk be\u00e1ll\u00edt\u00e1sokat egy konkr\u00e9t szerverhez?<\/h3>\n<p>\nTegy\u00fck fel, hogy a szerverek be\u00e1ll\u00edt\u00e1sait az install\u00e1l\u00f3 szerveren t\u00e1rolj\u00e1k. Ebben az esetben, hogy v\u00e1laszoljunk a k\u00e9rd\u00e9s\u00fcnkre, el\u0151sz\u00f6r meg kell hat\u00e1roznunk: milyen m\u00f3don adjuk \u00e1t a be\u00e1ll\u00edt\u00e1sokat az install\u00e1l\u00f3 szervernek.<\/p>\n<p>Kezdetben elegend\u0151 lehet sz\u00f6veges f\u00e1jlokat haszn\u00e1lni. (A j\u00f6v\u0151ben a sz\u00f6veges f\u00e1jl haszn\u00e1lhat\u00f3 a be\u00e1ll\u00edt\u00e1sok tartal\u00e9k m\u00f3djak\u00e9nt.) <\/p>\n<p>Megoszthatunk egy sz\u00f6veges f\u00e1jlt az install\u00e1l\u00f3 szerveren, \u00e9s hozz\u00e1adhatjuk a csatol\u00e1s\u00e1t a mount.sh szkripthez.<\/p>\n<p>A sorok p\u00e9ld\u00e1ul a k\u00f6vetkez\u0151 form\u00e1tumban lesznek:<\/p>\n<p><\/p>\n<p>Ez a sor az engineer munkag\u00e9p\u00e9b\u0151l fog \u00e1tker\u00fclni egy f\u00e1jlba, \u00e9s a szerver be\u00e1ll\u00edt\u00e1sakor a konkr\u00e9t szerver param\u00e9terei a f\u00e1jlb\u00f3l lesznek olvasva.<\/p>\n<p>De a j\u00f6v\u0151 szempontj\u00e1b\u00f3l jobb lenne adatb\u00e1zist haszn\u00e1lni a be\u00e1ll\u00edt\u00e1sok, \u00e1llapotok \u00e9s a szerverek telep\u00edt\u00e9si napl\u00f3j\u00e1nak t\u00e1rol\u00e1s\u00e1ra.<\/p>\n<p>Term\u00e9szetesen csak egy adatb\u00e1zis nem elegend\u0151, l\u00e9tre kell hozni egy kliensoldalt is, amellyel a be\u00e1ll\u00edt\u00e1sokat \u00e1tadhatjuk az adatb\u00e1zisnak. Ezt megval\u00f3s\u00edtani nehezebb, mint sz\u00f6veges f\u00e1jl eset\u00e9n, de val\u00f3j\u00e1ban minden nem olyan neh\u00e9z, mint amilyennek t\u0171nik. A minim\u00e1lis verzi\u00f3ja a kliensnek, amely egyszer\u0171en adatokat ad \u00e1t az adatb\u00e1zisnak, el\u00e9g k\u00f6nnyen meg\u00edrhat\u00f3. A kliensprogram tov\u00e1bbfejleszt\u00e9se szabad m\u00f3don is lehets\u00e9ges lesz (jelent\u00e9sek, c\u00edmk\u00e9k nyomtat\u00e1sa, \u00e9rtes\u00edt\u00e9sek k\u00fcld\u00e9se \u00e9s minden m\u00e1s, ami esz\u00fcnkbe jut).<\/p>\n<p>Egy adott lek\u00e9rdez\u00e9s v\u00e9grehajt\u00e1sa ut\u00e1n az adatb\u00e1zisban, megadva a szerver sorozatsz\u00e1m\u00e1t, megkaphatjuk a sz\u00fcks\u00e9ges param\u00e9tereket a szerver be\u00e1ll\u00edt\u00e1s\u00e1hoz.<\/p>\n<p>Tov\u00e1bb\u00e1, nem kell a sz\u00f6veges f\u00e1jl eset\u00e9n megoldanunk a p\u00e1rhuzamos hozz\u00e1f\u00e9r\u00e9s blokkol\u00e1s\u00e1t.<\/p>\n<p>A be\u00e1ll\u00edt\u00e1si napl\u00f3t minden szakaszban r\u00f6gz\u00edthetj\u00fck az adatb\u00e1zisban, \u00e9s a telep\u00edt\u00e9si folyamatot esem\u00e9nyeken \u00e9s \u00e1llapotf\u00e1kon kereszt\u00fcl ellen\u0151rizhetj\u00fck.<\/p>\n<p><b>Most m\u00e1r tudjuk, hogyan:<\/p>\n<ul>\n<li>szervert ind\u00edtani PXE-n kereszt\u00fcl;<\/li>\n<li>\u00e1tadni a vez\u00e9rl\u00e9st a szkripth\u00f6z;<\/li>\n<li>a sz\u00fcks\u00e9ges szervert azonos\u00edtani a sorozatsz\u00e1ma alapj\u00e1n;<\/li>\n<li>konfigur\u00e1lni a szervert a megfelel\u0151 eszk\u00f6z\u00f6kkel;<\/li>\n<li>\u00e1tadni a be\u00e1ll\u00edt\u00e1sokat az install\u00e1l\u00f3 szerver adatb\u00e1zis\u00e1ba a kliensoldal seg\u00edts\u00e9g\u00e9vel.<\/li>\n<\/ul>\n<p>\nKider\u00edtett\u00fck, hogyan:<\/p>\n<ul>\n<li>az install\u00e1l\u00e1sra ker\u00fcl\u0151 szerver az adatb\u00e1zisb\u00f3l kapja meg a sz\u00fcks\u00e9ges be\u00e1ll\u00edt\u00e1sokat;<\/li>\n<li>a felk\u00e9sz\u00fcl\u00e9s teljes folyamat\u00e1t r\u00f6gz\u00edtj\u00fck az adatb\u00e1zisban (napl\u00f3k, esem\u00e9nyek, \u00e1llapotok).<\/li>\n<\/ul>\n<p><\/b><\/p>\n<h3>Mit sz\u00f3lnak a telep\u00edthet\u0151 szoftverek k\u00fcl\u00f6nb\u00f6z\u0151 t\u00edpusaihoz? Hogyan telep\u00edts\u00fcnk hipervizort, m\u00e1soljunk VM-et \u00e9s \u00e1ll\u00edtsuk be mindezt?<\/h3>\n<p>\nHa Linux f\u00e1jlrendszer-k\u00e9pet telep\u00edt\u00fcnk a hardverre, akkor minden el\u00e9g egyszer\u0171:<\/p>\n<ul>\n<li>Miut\u00e1n be\u00e1ll\u00edtottuk a szerver \u00f6sszes komponens\u00e9t, telep\u00edtj\u00fck a k\u00e9pet.<\/li>\n<li>Telep\u00edtj\u00fck a grub bet\u00f6lt\u0151t.<\/li>\n<li>V\u00e9grehajtunk egy chroot-ot, \u00e9s konfigur\u00e1lunk minden sz\u00fcks\u00e9ges dolgot.<\/li>\n<\/ul>\n<p>\n<b>Hogyan adjuk \u00e1t az ir\u00e1ny\u00edt\u00e1st az oper\u00e1ci\u00f3s rendszer telep\u00edt\u0151j\u00e9nek (ESXi p\u00e9lda alapj\u00e1n).<\/b><\/p>\n<ul>\n<li>Szervezz\u00fck meg az ir\u00e1ny\u00edt\u00e1s \u00e1tad\u00e1s\u00e1t a hipervizor telep\u00edt\u0151j\u00e9nek a v\u00e1laszf\u00e1jl (kickstart) seg\u00edts\u00e9g\u00e9vel:<\/li>\n<li>T\u00f6r\u00f6lj\u00fck a megl\u00e9v\u0151 part\u00edci\u00f3kat a lemezen.<\/li>\n<li>Hozzunk l\u00e9tre egy 500MB m\u00e9ret\u0171 part\u00edci\u00f3t.<\/li>\n<li>Jel\u00f6lj\u00fck meg boot-p\u00e1rt\u00edci\u00f3k\u00e9nt.<\/li>\n<li>Form\u00e1zzuk FAT32-re.<\/li>\n<li>M\u00e1soljuk r\u00e1 a kezdeti ESXi f\u00e1jlokat a gy\u00f6k\u00e9rbe.<\/li>\n<li>Telep\u00edtj\u00fck a syslinux-t.<\/li>\n<li>M\u00e1soljuk a syslinux.cfg-t a \/syslinux\/ mapp\u00e1ba.<\/li>\n<\/ul>\n<p><\/p>\n<pre><code class=\"plaintext\">default esxi\nprompt 1\ntimeout 50\nlabel esxi\nkernel mboot.c32\nappend -c boot.cfg<\/code><\/pre>\n<p><\/p>\n<ul>\n<li>M\u00e1soljuk az mboot.c32-t a \/syslinux\/ mapp\u00e1ba.<\/li>\n<li>A boot.cfg f\u00e1jlban a kernelopt=ks=ftp:\/\/\/ks_esxi.cfg kell legyen<\/li>\n<li>\u00dajraind\u00edtjuk a szervert.<\/li>\n<\/ul>\n<p>\nA szerver \u00fajraind\u00edt\u00e1sa ut\u00e1n a merevlemez\u00e9r\u0151l az ESXi telep\u00edt\u0151je fog elindulni. Az \u00f6sszes sz\u00fcks\u00e9ges telep\u00edt\u0151 f\u00e1jl bet\u00f6lt\u0151dik a mem\u00f3ri\u00e1ba, \u00e9s ezut\u00e1n megkezd\u0151dik az ESXi install\u00e1ci\u00f3 a megadott v\u00e1laszf\u00e1jl szerint.<\/p>\n<p>Itt n\u00e9h\u00e1ny sort hozok a v\u00e1laszf\u00e1jlb\u00f3l, a ks_esxi.cfg-b\u0151l:<\/p>\n<pre><code class=\"plaintext\">%firstboot --interpreter=busybox\n\u2026\n# lek\u00e9rdezz\u00fck a sorozatsz\u00e1mot\n\nSYSSN=$(esxcli hardware platform get | grep Serial | awk -F \" \" '{print $3}')\n\n# lek\u00e9rdezz\u00fck az IP-t\n\nIPADDRT=$(esxcli network ip interface ipv4 get | grep vmk0 | awk -F \" \" '{print $2}')\nLAST_OCTET=$(echo $IPADDRT | awk -F'.' '{print $4}')\n\n# csatlakoztatjuk az NFS telep\u00edt\u0151 szervert\n\nesxcli storage nfs add -H is -s \/srv\/nfs_share -v nfsshare1\n\n# m\u00e1soljuk a SSH ideiglenes be\u00e1ll\u00edt\u00e1sait, hogy haszn\u00e1lni tudjuk az ssh klienst\n\nmv \/etc\/ssh \/etc\/ssh.tmp\ncp -R \/vmfs\/volumes\/nfsshare1\/ssh \/etc\/\nchmod go-r \/etc\/ssh\/ssh_host_rsa_key\n\n# m\u00e1soljuk az ovftool-t, hogy az VM-eket most telep\u00edthess\u00fck, plusz k\u00e9s\u0151bb is hasznos lehet\n\ncp -R \/vmfs\/volumes\/nfsshare1\/ovftool \/vmfs\/volumes\/datastore1\/\n\n# telep\u00edtj\u00fck az VM-et\n\n\/vmfs\/volumes\/datastore1\/ovftool\/tools\/ovftool --acceptAllEulas --noSSLVerify --datastore=datastore1 --name=VM1 \/vmfs\/volumes\/nfsshare1\/VM_T\/VM1.ova vi:\/\/root:esxi_password@127.0.0.1\n\/vmfs\/volumes\/datastore1\/ovftool\/tools\/ovftool --acceptAllEulas --noSSLVerify --datastore=datastore1 --name=VM2 \/vmfs\/volumes\/nfsshare1\/VM_T\/VM2.ova vi:\/\/root:esxi_password@127.0.0.1\n\n# lek\u00e9rdezz\u00fck a szerver\u00fcnk be\u00e1ll\u00edt\u00e1saival kapcsolatos sort\n\nssh 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' &gt; \/tmp\/servers\n...\n# gener\u00e1ljuk a h\u00e1l\u00f3zati be\u00e1ll\u00edt\u00e1sok scriptj\u00e9t\n\necho '#!\/bin\/sh' &gt; \/vmfs\/volumes\/datastore1\/netconf.sh\necho \"esxcli network ip interface ipv4 set -i=vmk0 -t=static --ipv4=$IPADDR --netmask=$S_SUB || exit 1\" &gt;&gt; \/vmfs\/volumes\/datastore1\/netconf.sh\necho \"esxcli network ip route ipv4 add -g=$S_GW -n=default || exit 1\" &gt;&gt; \/vmfs\/volumes\/datastore1\/netconf.sh\nchmod a+x \/vmfs\/volumes\/datastore1\/netconf.sh\n\n# be\u00e1ll\u00edtjuk a guestinfo.esxihost.id param\u00e9tert, amelyben a sorozatsz\u00e1mot adjuk meg\n\necho \"guestinfo.esxihost.id = \"$SYSSN\"\" &gt;&gt; \/vmfs\/volumes\/datastore1\/VM1\/VM1.vmx\necho \"guestinfo.esxihost.id = \"$SYSSN\"\" &gt;&gt; \/vmfs\/volumes\/datastore1\/VM2\/VM2.vmx\n...\n# friss\u00edtj\u00fck az inform\u00e1ci\u00f3t az adatb\u00e1zisban\n\nSYSNAME=$(esxcli hardware platform get | grep Product | sed 's\/Product Name:\/\/;s\/^ *\/\/')\nUUID=$(vim-cmd hostsvc\/hostsummary | grep uuid | sed 's\/ \/\/g;s\/,$\/\/;s\/^uuid=\"\/\/;s\/\"$\/\/')\nssh root@is \"mysql -D'servers' -u'user' -p'secretpassword' -e \"UPDATE servers ... SET ... WHERE servers.serial='$SYSSN'\"\"\nssh root@is \"mysql -D'servers' -u'user' -p'secretpassword' -e \"INSERT INTO events ...\"\"\n\n# vissza\u00e1ll\u00edtjuk a SSH be\u00e1ll\u00edt\u00e1sokat\n\nrm -rf \/etc\/ssh\nmv \/etc\/ssh.tmp \/etc\/ssh\n\n# be\u00e1ll\u00edtjuk a h\u00e1l\u00f3zatot \u00e9s \u00fajraindulunk\n\nesxcli system hostname set --fqdn=esx-${G_NICK}.x5.ru\n\/vmfs\/volumes\/datastore1\/netconf.sh\nreboot\n<\/code><\/pre>\n<p>\nEzen a ponton a hipervizor telep\u00edtve \u00e9s be\u00e1ll\u00edtva van, a virtu\u00e1lis g\u00e9pek m\u00e1solva lettek.<\/p>\n<p>Hogyan \u00e1ll\u00edthatjuk be most a virtu\u00e1lis g\u00e9peket?<\/p>\n<p>Kicsit r\u00e1szl\u00f3ztunk: a telep\u00edt\u00e9s sor\u00e1n be\u00e1ll\u00edtottuk a guestinfo.esxihost.id = \"$SYSSN\" param\u00e9tert a VM1.vmx f\u00e1jlban, ami a fizikai szerver sorozatsz\u00e1m\u00e1t tartalmazza.<\/p>\n<p>Most a virtu\u00e1lis g\u00e9p ind\u00edt\u00e1sa ut\u00e1n (vmware-tools csomaggal telep\u00edtve) hozz\u00e1f\u00e9rhet ehhez a param\u00e9terhez:<\/p>\n<pre><code class=\"plaintext\">ESXI_SN=$(vmtoolsd --cmd \"info-get guestinfo.esxihost.id\")<\/code><\/pre>\n<p>\nA VM can identify itself (it knows the serial number of the physical host), make a request to the install server database, and obtain the parameters that need to be configured. This is all scripted in a command that should be automatically executed upon the start of the guest OS VM (but only once: RunOnce).<\/p>\n<p><b>Most m\u00e1r tudjuk, hogyan:<\/p>\n<ul>\n<li>szervert ind\u00edtani PXE-n kereszt\u00fcl;<\/li>\n<li>\u00e1tadni a vez\u00e9rl\u00e9st a szkripth\u00f6z;<\/li>\n<li>a sz\u00fcks\u00e9ges szervert azonos\u00edtani a sorozatsz\u00e1ma alapj\u00e1n;<\/li>\n<li>configure the server with appropriate utilities;<\/li>\n<li>pass settings to the install server database using the client side;<\/li>\n<li>configure various types of software, including deploying the ESXi hypervisor and setting up virtual machines (all automatically).<\/li>\n<\/ul>\n<p>\nKider\u00edtett\u00fck, hogyan:<\/p>\n<ul>\n<li>az install\u00e1l\u00e1sra ker\u00fcl\u0151 szerver az adatb\u00e1zisb\u00f3l kapja meg a sz\u00fcks\u00e9ges be\u00e1ll\u00edt\u00e1sokat;<\/li>\n<li>a felk\u00e9sz\u00fcl\u00e9s teljes folyamat\u00e1t r\u00f6gz\u00edtj\u00fck az adatb\u00e1zisban (napl\u00f3k, esem\u00e9nyek, \u00e1llapotok).<\/li>\n<\/ul>\n<p><\/b><br \/>\n<u><b>\u00d6sszegz\u00e9s:<\/b><\/u><\/p>\n<p>I believe the uniqueness of this solution lies in its flexibility, simplicity, capabilities, and versatility.<\/p>\n<p>Please write in the comments what you think.<br \/>\n<br \/>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/X5RetailGroup\/blog\/493124\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u044f \u0414\u0435\u043d\u0438\u0441 \u0438 \u043e\u0434\u043d\u043e \u0438\u0437 \u043c\u043e\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u2013 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0432 X5. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u0431\u0430\u0437\u0435 \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432. \u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435, \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0438 \u0433\u0438\u0431\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041f\u043e\u0434 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u043e\u0439 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f: \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437 \u043d\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438, \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":74906,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-74905","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u044f \u0414\u0435\u043d\u0438\u0441 \u0438 \u043e\u0434\u043d\u043e \u0438\u0437 \u043c\u043e\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u2013 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0432 X5.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/bare-metal-provisioning-svoimi-rukami-ili-avtomaticheskaya-podgotovka-serverov-s-nulya\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Bare-Metal Provisioning \u0441\u0432\u043e\u0438\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438, \u0438\u043b\u0438 \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0441 \u043d\u0443\u043b\u044f | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u044f \u0414\u0435\u043d\u0438\u0441 \u0438 \u043e\u0434\u043d\u043e \u0438\u0437 \u043c\u043e\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u2013 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0432 X5.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/bare-metal-provisioning-svoimi-rukami-ili-avtomaticheskaya-podgotovka-serverov-s-nulya\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-03-21T17:42:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-21T17:42:25+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Bare-Metal Provisioning by yourself, or Automated server setup from scratch | ProHoster","description":"Hi, I'm Denis and one of my areas of expertise is developing infrastructure solutions at X5.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/bare-metal-provisioning-svoimi-rukami-ili-avtomaticheskaya-podgotovka-serverov-s-nulya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Bare-Metal Provisioning \u0441\u0432\u043e\u0438\u043c\u0438 \u0440\u0443\u043a\u0430\u043c\u0438, \u0438\u043b\u0438 \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0441 \u043d\u0443\u043b\u044f | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u044f \u0414\u0435\u043d\u0438\u0441 \u0438 \u043e\u0434\u043d\u043e \u0438\u0437 \u043c\u043e\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u2013 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0432 X5.","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/bare-metal-provisioning-svoimi-rukami-ili-avtomaticheskaya-podgotovka-serverov-s-nulya","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-03-21T17:42:25+00:00","article:modified_time":"2020-03-21T17:42:25+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"74905","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:05:46","updated":"2026-02-09 16:50:18","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/74905","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=74905"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/74905\/revisions"}],"predecessor-version":[{"id":158713,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/74905\/revisions\/158713"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/74906"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=74905"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=74905"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=74905"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}