{"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\/ro\/blog\/administrirovanie\/bare-metal-provisioning-svoimi-rukami-ili-avtomaticheskaya-podgotovka-serverov-s-nulya","title":{"rendered":"Provisionare Bare-Metal de la zero, sau preg\u0103tirea automat\u0103 a serverelor de la \u00eenceput","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Bun\u0103, eu sunt Denis \u0219i unul dintre domeniile mele de activitate este dezvoltarea solu\u021biilor de infrastructur\u0103 \u00een X5. Azi a\u0219 dori s\u0103 \u00eemp\u0103rt\u0103\u0219esc cu voi cum se poate desf\u0103\u0219ura un sistem automatizat de preg\u0103tire a serverelor folosind unelte disponibile public. Din punctul meu de vedere, este o solu\u021bie interesant\u0103, simpl\u0103 \u0219i flexibil\u0103.<\/p>\n<p><img decoding=\"async\" alt=\"Provisionare Bare-Metal de la zero, sau preg\u0103tirea automat\u0103 a serverelor de la \u00eenceput\" 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 \/>\nPrin preg\u0103tire se \u00een\u021belege: a transforma un server nou din cutie \u00eentr-un server complet configurat cu sistem de operare Linux sau cu hypervisor ESXi (pe Windows acest subiect nu este discutat \u00een acest articol). <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/ro\/server\/\"   title=\"servere\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1469\">servere<\/a> Serverele care trebuie configurate.<\/p>\n<p><b>Termeni<\/b>:<\/p>\n<ul>\n<li>Server-installer \u2013 serverul principal care asigur\u0103 \u00eentregul proces de preg\u0103tire prin re\u021bea.<\/li>\n<li>De ce este necesar\u0103 automatizarea?<\/li>\n<\/ul>\n<p><\/p>\n<h3>S\u0103 presupunem c\u0103 exist\u0103 o sarcin\u0103: a preg\u0103ti \u00een mas\u0103 servere de la zero, cu un v\u00e2rf de 30 pe zi. Servere de diferi\u021bi produc\u0103tori \u0219i modele, pe acestea pot fi instalate diverse sisteme de operare, pot avea sau nu hypervisor.<\/h3>\n<p>\nCare sunt opera\u021biile incluse \u00een procesul de configurare (f\u0103r\u0103 automatizare):<\/p>\n<p>conectarea unui tastaturi, mouse \u0219i monitor la server;<\/p>\n<ul>\n<li>configurarea BIOS-ului, RAID-ului, IPMI;<\/li>\n<li>actualizarea firmware-ului componentelor;<\/li>\n<li>desf\u0103\u0219urarea imaginii sistemului de fi\u0219iere (sau instalarea hypervisor-ului \u0219i copierea ma\u0219inilor virtuale);<\/li>\n<li>Observa\u021bie. Ca o op\u021biune, desf\u0103\u0219urarea sistemului de operare este posibil\u0103 prin instalare cu un fi\u0219ier de r\u0103spuns automat. Dar acest lucru nu va fi discutat \u00een articol. De\u0219i mai jos ve\u021bi vedea c\u0103 ad\u0103ugarea acestei func\u021bionalit\u0103\u021bi nu este complicat\u0103.<\/li>\n<\/ul>\n<p>\nconfigurarea parametrilor sistemului de operare (hostname, IP, altele).<\/p>\n<ul>\n<li>\u00cen aceast\u0103 abordare, set\u0103rile identice sunt efectuate secven\u021bial pe fiecare server. Eficien\u021ba acestui mod de lucru este foarte sc\u0103zut\u0103.<\/li>\n<\/ul>\n<p>\nSuscinta automatiz\u0103rii este de a exclude participarea omului din procesul de preg\u0103tire a serverului. At\u00e2t de mult c\u00e2t este posibil.<\/p>\n<p>Datorit\u0103 automatiz\u0103rii, timpul de nefunc\u021bionare \u00eentre opera\u021bii este redus \u0219i apare posibilitatea de a preg\u0103ti mai multe servere simultan. De asemenea, se reduce considerabil riscul apari\u021biei erorilor din cauza factorului uman. <\/p>\n<p>Cum se desf\u0103\u0219oar\u0103 configurarea automat\u0103 a serverelor?<\/p>\n<p><img decoding=\"async\" alt=\"Provisionare Bare-Metal de la zero, sau preg\u0103tirea automat\u0103 a serverelor de la \u00eenceput\" src=\"\/wp-content\/uploads\/2020\/03\/8c196058891a7f41c5b93e7f6721480b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>S\u0103 analiz\u0103m toate etapele \u00een detaliu.<\/h3>\n<p>\nAve\u021bi un server Linux pe care \u00eel folosi\u021bi ca server de instalare PXE. Pe acesta sunt instalate \u0219i configurate serviciile: DHCP, TFTP.<\/p>\n<p>A\u0219adar, pornim serverul (care trebuie configurat) prin PXE. S\u0103 ne amintim cum func\u021bioneaz\u0103:<\/p>\n<p>Serverul este setat s\u0103 se conecteze prin re\u021bea.<\/p>\n<ul>\n<li>Serverul ales pentru pornire este unul din re\u021bea.<\/li>\n<li>Serverul \u00eencarc\u0103 PXE-ROM-ul pl\u0103cii de re\u021bea \u0219i se conecteaz\u0103 la serverul de instalare prin DHCP pentru a ob\u021bine o adres\u0103 de re\u021bea.<\/li>\n<li>Serverul DHCP al serverului de instalare ofer\u0103 o adres\u0103, precum \u0219i instruc\u021biuni pentru \u00eenc\u0103rcarea suplimentar\u0103 prin PXE.<\/li>\n<li>Serverul \u00eencarc\u0103 \u00eenc\u0103rc\u0103torul de re\u021bea de la serverul de instalare prin PXE, \u00eenc\u0103rcarea suplimentar\u0103 av\u00e2ndu-se loc conform fi\u0219ierului de configurare PXE.<\/li>\n<li>Se efectueaz\u0103 \u00eenc\u0103rcarea pe baza parametrilor ob\u021binu\u021bi (nucleu, initramfs, puncte de montare, imagine squashfs \u0219i altele).<\/li>\n<\/ul>\n<p>\nNot\u0103. Articolul prezint\u0103 descrierea \u00eenc\u0103rc\u0103rii prin PXE \u00een modul BIOS. \u00cen prezent, produc\u0103torii implementeaz\u0103 activ modul de boot UEFI. Pentru PXE, distinc\u021bia va fi \u00een configura\u021bia serverului DHCP \u0219i \u00een existen\u021ba unui \u00eenc\u0103rc\u0103tor suplimentar.<\/p>\n<p>S\u0103 examin\u0103m un exemplu de configurare a serverului PXE (meniul pxelinux).<\/p>\n<p>Fi\u0219ierul 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 \/\/ menu implicit\n\tMENU LABEL Linux Scripting Toolkits\n\tMENU default\n\tKERNEL menu.c32\n\tAPPEND pxelinux.cfg\/toolkit \/\/ trecerea la urm\u0103torul meniu<\/code><\/pre>\n<p>\nFi\u0219ierul pxelinux.cfg\/toolkit:<\/p>\n<pre><code class=\"plaintext\">prompt 0\ntimeout 100\nmenu title X5 PXE Boot Menu\nlabel mainmenu\n    menu label ^\u00cenapoi la meniul principal\n    kernel menu.c32\n    append pxelinux.cfg\/default\nlabel x5toolkit-auto \/\/ implicit - modul automat\n        menu label x5 toolkit instalare automat\u0103\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=\"...\"\nlabel x5toolkit-shell \/\/ pentru depanare - consol\u0103\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=\"...\"<\/code><\/pre>\n<p>\nNucleul \u0219i initramfs \u00een acest stadiu reprezint\u0103 o imagine linux intermediar\u0103, cu ajutorul c\u0103reia se va desf\u0103\u0219ura preg\u0103tirea \u0219i configurarea principal\u0103 a serverului.<\/p>\n<p>Dup\u0103 cum vede\u021bi, \u00eenc\u0103rc\u0103torul transmite multe parametri nucleului. O parte din ace\u0219ti parametri sunt utiliza\u021bi de nucleu. \u0218i anume, al\u021bii pot fi folosi\u021bi \u00een scopuri proprii. Despre aceasta se va vorbi mai departe, iar \u00eentre timp putem re\u021bine c\u0103 to\u021bi parametrii transmi\u0219i vor fi disponibili \u00een imaginea linux intermediar\u0103 prin \/proc\/cmdline.<\/p>\n<p>De unde \u00eei putem ob\u021bine, nucleul \u0219i initramfs?<br \/>\nCa baz\u0103, se poate alege orice distribu\u021bie linux. Ce trebuie s\u0103 lu\u0103m \u00een considerare la alegere:<\/p>\n<ul>\n<li>imaginea de boot trebuie s\u0103 fie universal\u0103 (s\u0103 con\u021bin\u0103 drivere, posibilitatea de instalare a utilitarelor suplimentare);<\/li>\n<li>cel mai probabil, va fi necesar s\u0103 personaliz\u0103m initramfs.<\/li>\n<\/ul>\n<p>\nCum este realizat acest lucru \u00een solu\u021bia noastr\u0103 pentru X5? Ca baz\u0103, am ales CentOS 7. Vom face urm\u0103torul truc: vom preg\u0103ti viitoarea structur\u0103 a imaginii, o vom \u00eempacheta \u00eentr-un arhiv \u0219i vom crea initramfs, \u00een care va fi arhiva noastr\u0103 a sistemului de fi\u0219iere. La pornirea imaginii, arhiva va fi desf\u0103cut\u0103 \u00een parti\u021bia tmpfs creat\u0103. Astfel, vom ob\u021bine o imagine live Linux minim\u0103, dar complet func\u021bional\u0103, cu toate utilitarele necesare, alc\u0103tuit\u0103 din doar dou\u0103 fi\u0219iere: vmkernel \u0219i 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>\nDeci, am specificat nucleul \u0219i initramfs care trebuie \u00eenc\u0103rcate. Ca rezultat, \u00een aceast\u0103 etap\u0103, \u00eencarc\u00e2nd imaginea intermediar\u0103 Linux prin PXE, vom ob\u021bine consola OS.<\/p>\n<p>Excelent, dar acum trebuie s\u0103 prelu\u0103m controlul de la automatizarea noastr\u0103.<\/p>\n<p>Acest lucru se poate face astfel.<\/p>\n<p>S\u0103 presupunem c\u0103, dup\u0103 \u00eenc\u0103rcarea imaginii, planific\u0103m s\u0103 redirec\u021bion\u0103m controlul c\u0103tre scriptul mount.sh.<br \/>\nVom include scriptul mount.sh \u00een auto-start. Pentru aceasta, va fi necesar s\u0103 modific\u0103m initramfs:<\/p>\n<ul>\n<li>desfacem initramfs (dac\u0103 folosim varianta de mai sus a initramfs, acest lucru nu este necesar)<\/li>\n<li>includem codul \u00een autoconfigurare care va analiza parametrii transmi\u0219i prin \/proc\/cmdline \u0219i va preda controlul mai departe;<\/li>\n<li>\u00eempachet\u0103m initramfs.<\/li>\n<\/ul>\n<p>\nNot\u0103. \u00cen cazul toolkit-ului X5, controlul boot-ului este predat scriptului <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>Deci, imaginea se \u00eencarc\u0103, \u00een care la autoconfigurare se porne\u0219te scriptul mount.sh. Mai departe, scriptul mount.sh analizeaz\u0103 parametrii transmi\u0219i (script_cmd=) \u0219i porne\u0219te programul\/scriptul necesar.<\/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=\"Provisionare Bare-Metal de la zero, sau preg\u0103tirea automat\u0103 a serverelor de la \u00eenceput\" src=\"\/wp-content\/uploads\/2020\/03\/943eeb64fbf746feab5119ead5b1ca66.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAici, \u00een partea st\u00e2ng\u0103, este meniul PXE, iar \u00een partea dreapt\u0103 - schema de predare a controlului.<\/p>\n<p>Ne-am descurcat cu predarea controlului. \u00cen func\u021bie de alegerea din meniul PXE, se lanseaz\u0103 fie scriptul de auto-configurare, fie consola de depanare.<\/p>\n<p>\u00cen cazul auto-configur\u0103rii, se monteaz\u0103 directoarele necesare de pe serverul de instalare, care con\u021bin:<\/p>\n<ul>\n<li>scripturi;<\/li>\n<li>\u0219abloane BIOSS\/UEFI salvate pentru diferite servere;<\/li>\n<li>firmware;<\/li>\n<li>utilitare pentru servere;<\/li>\n<li>jurnale.<\/li>\n<\/ul>\n<p>\nApoi, scriptul mount.sh pred\u0103 controlul scriptului master-install.sh din directorul cu scripturi.<\/p>\n<p>Arborele scripturilor (ordinea lor de execu\u021bie) arat\u0103 cam a\u0219a:<\/p>\n<ul>\n<li>master-install<\/li>\n<li>sharefunctions (func\u021bii comune)<\/li>\n<li>info (afisare informa\u021bii)<\/li>\n<li>models (instalarea parametrilor de instalare pe baza modelului serverului)<\/li>\n<li>prepare_utils (instalarea utilitarelor necesare)<\/li>\n<li>fwupdate (actualizarea firmware-ului)<\/li>\n<li>diag (diagnosticare elementar\u0103)<\/li>\n<li>biosconf (configurarea BIOS-ului\/UEFI)<\/li>\n<li>clockfix (configurarea timpului pe placa de baz\u0103)<\/li>\n<li>srmconf (configurarea interfe\u021bei de acces de la distan\u021b\u0103)<\/li>\n<li>raidconf (configurarea volumelor logice)<\/li>\n<\/ul>\n<p>\nunu din:<\/p>\n<ul>\n<li>preinstall (transferul controlului c\u0103tre instalatorul de sistem de operare sau hipervizor, de exemplu ESXi)<\/li>\n<li>merged-install (\u00eenceperea direct\u0103 a extragerii imaginii)<\/li>\n<\/ul>\n<p>\n<b>Acum \u0219tim:<\/p>\n<ul>\n<li>cum s\u0103 pornim serverul prin PXE;<\/li>\n<li>cum s\u0103 transfer\u0103m controlul c\u0103tre propriul script.<\/li>\n<\/ul>\n<p><\/b><br \/>\nS\u0103 continu\u0103m. Au ap\u0103rut urm\u0103toarele \u00eentreb\u0103ri:<\/p>\n<ul>\n<li>Cum s\u0103 identific\u0103m serverul pe care \u00eel preg\u0103tim?<\/li>\n<li>Ce utilitare \u0219i cum s\u0103 configur\u0103m serverul?<\/li>\n<li>Cum s\u0103 ob\u021binem set\u0103rile pentru un server specific?<\/li>\n<\/ul>\n<p><\/p>\n<h3>Cum s\u0103 identific\u0103m serverul pe care \u00eel preg\u0103tim?<\/h3>\n<p>\nEste simplu \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>\nAici exist\u0103 toate informa\u021biile necesare: furnizorul, modelul, num\u0103rul de serie. Dac\u0103 nu sunte\u021bi sigur c\u0103 aceste informa\u021bii sunt disponibile pe toate serverele, le pute\u021bi identifica dup\u0103 adresa MAC. Sau prin ambele metode simultan, dac\u0103 furnizorii serverelor sunt diferi\u021bi \u0219i pe unele modele informa\u021biile despre num\u0103rul de serie lipsesc.<\/p>\n<p>Pe baza informa\u021biilor ob\u021binute, se monteaz\u0103 folderele de re\u021bea de pe serverul de instalare \u0219i se \u00eencarc\u0103 tot ceea ce este necesar (utilitare, firmware \u0219i altele).<\/p>\n<h3>Ce utilitare \u0219i cum s\u0103 configur\u0103m serverul?<\/h3>\n<p>\nVoi prezenta utilitarele pentru linux pentru unii furnizori. Toate utilitarele sunt disponibile pe website-urile oficiale ale furnizorilor.<\/p>\n<p><img decoding=\"async\" alt=\"Provisionare Bare-Metal de la zero, sau preg\u0103tirea automat\u0103 a serverelor de la \u00eenceput\" src=\"\/wp-content\/uploads\/2020\/03\/fab53d1fa6e9a222ec69248439551ad7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00cen ceea ce prive\u0219te firmware-urile, cred c\u0103 este clar. De obicei, acestea sunt furnizate sub form\u0103 de fi\u0219iere executabile comprimate. Fi\u0219ierul executabil controleaz\u0103 procesul de actualizare a firmware-ului \u0219i raporteaz\u0103 codul de returnare.<\/p>\n<p>BIOS \u0219i IPMI sunt de obicei configurate prin \u0219abloane. Dac\u0103 este necesar, \u0219ablonul poate fi editat \u00eenainte de \u00eenc\u0103rcare.<\/p>\n<p>Utilitarele RAID ale unor furnizori pot fi, de asemenea, configurate prin \u0219abloane. Dac\u0103 nu, va trebui s\u0103 scrie\u021bi un script de configurare.<\/p>\n<p>Ordinea de configurare a RAID-ului este, de cele mai multe ori, urm\u0103toarea:<\/p>\n<ul>\n<li>Cerem configura\u021bia curent\u0103.<\/li>\n<li>Dac\u0103 exist\u0103 deja volume logice \u2013 le \u0219tergem.<\/li>\n<li>Vedem ce discuri fizice sunt prezente \u0219i c\u00e2te sunt.<\/li>\n<li>Cre\u0103m un nou volum logic. Oprim procesul \u00een caz de eroare.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Cum s\u0103 ob\u021binem set\u0103rile pentru un server specific?<\/h3>\n<p>\nS\u0103 presupunem c\u0103 set\u0103rile tuturor serverelor vor fi stocate pe serverul de instalare. \u00cen acest caz, pentru a r\u0103spunde la \u00eentrebarea noastr\u0103, trebuie mai \u00eent\u00e2i s\u0103 stabilim cum s\u0103 transmitem set\u0103rile c\u0103tre serverul de instalare.<\/p>\n<p>La \u00eenceput, este suficient s\u0103 folosim fi\u0219iere text. (Pe viitor, fi\u0219ierul text poate fi folosit ca metod\u0103 de rezerv\u0103 pentru transferul set\u0103rilor). <\/p>\n<p>Putem \u201epartaja\u201d fi\u0219ierul text pe serverul de instalare. \u0218i s\u0103 ad\u0103ug\u0103m montarea acestuia \u00een scriptul mount.sh.<\/p>\n<p>Linile vor ar\u0103ta, de exemplu, \u00een felul urm\u0103tor:<\/p>\n<p><\/p>\n<p>Aceste linii vor fi transmise \u00eentr-un fi\u0219ier de inginer de pe ma\u0219ina sa de lucru. Apoi, la configurarea serverului, parametrii pentru serverul specific vor fi citi\u021bi din fi\u0219ier.<\/p>\n<p>Dar, pe termen lung, este mai bine s\u0103 folosim o baz\u0103 de date pentru a stoca set\u0103rile, st\u0103rile \u0219i jurnalul instal\u0103rilor serverelor.<\/p>\n<p>Desigur, nu ne putem descurca doar cu o baz\u0103 de date, va fi nevoie s\u0103 cre\u0103m o parte client, prin care set\u0103rile vor fi transmise \u00een baza de date. Implementarea acestui lucru este mai complicat\u0103, \u00een compara\u021bie cu un fi\u0219ier text, dar, de fapt, totul nu este at\u00e2t de greu cum pare. O versiune minim\u0103 a clientului, care va preda pur \u0219i simplu date \u00een baza de date, poate fi scris\u0103 de unul singur. Iar \u00eembun\u0103t\u0103\u021birea programului client \u00een viitor poate fi realizat\u0103 \u0219i \u00een modul liber (rapoarte, imprimarea etichetelor, trimiterea notific\u0103rilor \u0219i altele ce pot fi imaginabile).<\/p>\n<p>F\u0103c\u00e2nd o anumit\u0103 interogare \u00een baza de date \u0219i specific\u00e2nd seria num\u0103rului serverului, vom ob\u021bine parametrii necesari pentru configurarea serverului.<\/p>\n<p>Plus, nu va trebui s\u0103 invent\u0103m blocaje pentru acces simultan, a\u0219a cum ar fi \u00een cazul unui fi\u0219ier text.<\/p>\n<p>Jurnalul de configurare putem s\u0103-l scriem \u00een baza de date \u00een toate etapele \u0219i s\u0103 control\u0103m procesul de instalare prin evenimente \u0219i steaguri ale etapelor de preg\u0103tire.<\/p>\n<p><b>Acum \u0219tim cum s\u0103:<\/p>\n<ul>\n<li>boot\u0103m serverul prin PXE;<\/li>\n<li>transmitem controlul scriptului nostru;<\/li>\n<li>identific\u0103m serverul care trebuie preg\u0103tit dup\u0103 seria num\u0103rului;<\/li>\n<li>configur\u0103m serverul cu utilitarele corespunz\u0103toare;<\/li>\n<li>transmitem set\u0103rile \u00een baza de date a serverului de instalare prin partea client.<\/li>\n<\/ul>\n<p>\nAm aflat cum:<\/p>\n<ul>\n<li>serverul care urmeaz\u0103 a fi instalat prime\u0219te set\u0103rile necesare din baza de date;<\/li>\n<li>\u00eentreaga progresie a preg\u0103tirii este \u00eenregistrat\u0103 \u00een baza de date (jurnale, evenimente, steaguri ale etapelor).<\/li>\n<\/ul>\n<p><\/b><\/p>\n<h3>Ce se \u00eent\u00e2mpl\u0103 cu diferitele tipuri de software instalat? Cum instal\u0103m hipervizorul, copiem VM-ul \u0219i configur\u0103m totul?<\/h3>\n<p>\n\u00cen cazul desf\u0103\u0219ur\u0103rii imaginii sistemului de fi\u0219iere (linux) pe hardware, totul este destul de simplu:<\/p>\n<ul>\n<li>Dup\u0103 configurarea tuturor componentelor serverului, desf\u0103\u0219ur\u0103m imaginea.<\/li>\n<li>Instal\u0103m bootloader-ul grub.<\/li>\n<li>Facem chroot \u0219i configur\u0103m tot ce este necesar.<\/li>\n<\/ul>\n<p>\n<b>Cum s\u0103 transferi controlul c\u0103tre installer-ul OS (\u00een cazul ESXi).<\/b><\/p>\n<ul>\n<li>Organiz\u0103m transmiterea controlului din scriptul nostru c\u0103tre installer-ul hypervisor-ului printr-un fi\u0219ier de r\u0103spuns automat (kickstart):<\/li>\n<li>\u0218tergem parti\u021biile curente de pe disc.<\/li>\n<li>Cre\u0103m o parti\u021bie de 500MB.<\/li>\n<li>O marc\u0103m ca fiind bootabil\u0103.<\/li>\n<li>Formataz\u0103 \u00een FAT32.<\/li>\n<li>Copiem fi\u0219ierele de instalare ESXi \u00een r\u0103d\u0103cina acesteia.<\/li>\n<li>Instal\u0103m syslinux.<\/li>\n<li>Copiem syslinux.cfg \u00een \/syslinux\/<\/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>Copiem mboot.c32 \u00een \/syslinux.<\/li>\n<li>\u00cen boot.cfg trebuie s\u0103 fie kernelopt=ks=ftp:\/\/\/ks_esxi.cfg<\/li>\n<li>Reboot\u0103m serverul.<\/li>\n<\/ul>\n<p>\nDup\u0103 repornirea serverului din hard disk-ul s\u0103u, se va \u00eenc\u0103rca installer-ul ESXi. Toate fi\u0219ierele necesare pentru instalare se vor \u00eenc\u0103rca \u00een memorie \u0219i apoi va \u00eencepe instalarea ESXi, conform fi\u0219ierului de r\u0103spuns automat specificat.<\/p>\n<p>Iat\u0103 c\u00e2teva linii din fi\u0219ierul de r\u0103spuns automat ks_esxi.cfg:<\/p>\n<pre><code class=\"plaintext\">%firstboot --interpreter=busybox\n\u2026\n# ob\u021binem num\u0103rul de serie\n\nSYSSN=$(esxcli hardware platform get | grep Serial | awk -F \" \" '{print $3}')\n\n# ob\u021binem IP\n\nIPADDRT=$(esxcli network ip interface ipv4 get | grep vmk0 | awk -F \" \" '{print $2}')\nLAST_OCTET=$(echo $IPADDRT | awk -F'.' '{print $4}')\n\n# conect\u0103m serverul de instalare NFS\n\nesxcli storage nfs add -H is -s \/srv\/nfs_share -v nfsshare1\n\n# copiem set\u0103rile temporare ssh, pentru a utiliza clientul ssh\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# copiem ovftool, pentru desf\u0103\u0219urarea VM-ului acum, plus c\u0103 ar putea fi de ajutor mai t\u00e2rziu\n\ncp -R \/vmfs\/volumes\/nfsshare1\/ovftool \/vmfs\/volumes\/datastore1\/\n\n# desf\u0103\u0219ur\u0103m VM-ul\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# ob\u021binem un r\u00e2nd cu set\u0103rile serverului nostru\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\u0103m scriptul de configurare a re\u021belei\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# set\u0103m parametrul guestinfo.esxihost.id, specific\u00e2nd num\u0103rul de serie\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# actualiz\u0103m informa\u021biile din baz\u0103\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# restaur\u0103m set\u0103rile SSH\n\nrm -rf \/etc\/ssh\nmv \/etc\/ssh.tmp \/etc\/ssh\n\n# configur\u0103m re\u021beaua \u0219i ne repornim\n\nesxcli system hostname set --fqdn=esx-${G_NICK}.x5.ru\n\/vmfs\/volumes\/datastore1\/netconf.sh\nreboot\n<\/code><\/pre>\n<p>\n\u00cen acest moment, hipervizorul este instalat \u0219i configurat, iar ma\u0219inile virtuale au fost copiate.<\/p>\n<p>Cum s\u0103 configur\u0103m acum ma\u0219inile virtuale?<\/p>\n<p>Am fost un pic ghinioni\u0219ti: \u00een timpul instal\u0103rii am setat parametrul guestinfo.esxihost.id = \"$SYSSN\" \u00een fi\u0219ierul VM1.vmx, specific\u00e2nd num\u0103rul de serie al serverului fizic.<\/p>\n<p>Acum, dup\u0103 pornire, ma\u0219ina virtual\u0103 (cu pachetul vmware-tools instalat) poate accesa acest parametru:<\/p>\n<pre><code class=\"plaintext\">ESXI_SN=$(vmtoolsd --cmd \"info-get guestinfo.esxihost.id\")<\/code><\/pre>\n<p>\nAdic\u0103, VM-ul va putea s\u0103 se identifice (\u0219tie num\u0103rul de serie al gazdei fizice), va face o solicitare la baza de date a serverului de instalare \u0219i va ob\u021bine parametrii care trebuie configura\u021bi. Totul este organizat \u00eentr-un script care trebuie s\u0103 fie rulat automat la pornirea VM-ului guestos (dar o singur\u0103 dat\u0103: RunOnce).<\/p>\n<p><b>Acum \u0219tim cum s\u0103:<\/p>\n<ul>\n<li>boot\u0103m serverul prin PXE;<\/li>\n<li>transmitem controlul scriptului nostru;<\/li>\n<li>identific\u0103m serverul care trebuie preg\u0103tit dup\u0103 seria num\u0103rului;<\/li>\n<li>configurarea serverului cu utilitarele corespunz\u0103toare;<\/li>\n<li>transmiterea set\u0103rilor \u00een baza de date a serverului de instalare prin intermediul p\u0103r\u021bii client;<\/li>\n<li>configurarea diferitelor tipuri de software, inclusiv desf\u0103\u0219urarea hypervisor-ului ESXi \u0219i configurarea ma\u0219inilor virtuale (totul automat).<\/li>\n<\/ul>\n<p>\nAm aflat cum:<\/p>\n<ul>\n<li>serverul care urmeaz\u0103 a fi instalat prime\u0219te set\u0103rile necesare din baza de date;<\/li>\n<li>\u00eentreaga progresie a preg\u0103tirii este \u00eenregistrat\u0103 \u00een baza de date (jurnale, evenimente, steaguri ale etapelor).<\/li>\n<\/ul>\n<p><\/b><br \/>\n<u><b>Concluzie:<\/b><\/u><\/p>\n<p>Cred c\u0103 unicitatea acestei solu\u021bii const\u0103 \u00een flexibilitatea, simplitatea, capacit\u0103\u021bile sale \u0219i universalitatea.<\/p>\n<p>Te rog, scrie \u00een comentarii ce p\u0103rere ai.<br \/>\n<br \/>Sursa: <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.2.1 - 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\/ro\/blog\/administrirovanie\/bare-metal-provisioning-svoimi-rukami-ili-avtomaticheskaya-podgotovka-serverov-s-nulya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Provisioning Bare-Metal de unul singur, sau Preg\u0103tirea automat\u0103 a serverelor de la zero | ProHoster","description":"Salut, sunt Denis \u0219i una dintre activit\u0103\u021bile mele este dezvoltarea solu\u021biilor de infrastructur\u0103 \u00een X5.","canonical_url":"https:\/\/prohoster.info\/ro\/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":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/74905","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=74905"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/74905\/revisions"}],"predecessor-version":[{"id":158713,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/74905\/revisions\/158713"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/74906"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=74905"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=74905"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=74905"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}