{"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\/sv\/blog\/administrirovanie\/bare-metal-provisioning-svoimi-rukami-ili-avtomaticheskaya-podgotovka-serverov-s-nulya","title":{"rendered":"Bare-Metal Provisioning f\u00f6r egen hand, eller automatisk f\u00f6rberedelse av servrar fr\u00e5n grunden","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hej, jag heter Denis och en av mina verksamhetsomr\u00e5den \u00e4r utveckling av infrastrukturl\u00f6sningar p\u00e5 X5. Idag skulle jag vilja dela med mig av hur man med offentligt tillg\u00e4ngliga verktyg kan implementera ett automatiskt system f\u00f6r serverf\u00f6rberedelse. Enligt min mening \u00e4r detta en intressant, enkel och flexibel l\u00f6sning.<\/p>\n<p><img decoding=\"async\" alt=\"Bare-Metal Provisioning f\u00f6r egen hand, eller automatisk f\u00f6rberedelse av servrar fr\u00e5n grunden\" 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 \/>\nMed f\u00f6rberedelse menas: att g\u00f6ra om en ny server ur l\u00e5dan till en helt konfigurerad server med Linux OS eller med hypervisorn ESXi (denna artikel diskuterar inte Windows). <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sv\/server\/\"   title=\"servrar\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1469\">servrar<\/a> Windows diskuteras inte i denna artikel.<\/p>\n<p><b>Termer<\/b>:<\/p>\n<ul>\n<li>servrar \u2013 servrar som m\u00e5ste konfigureras.<\/li>\n<li>install-server \u2013 den huvudsakliga servern som s\u00e4kerst\u00e4ller hela f\u00f6rberedelseprocessen \u00f6ver n\u00e4tverket.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Varf\u00f6r beh\u00f6vs automatisering?<\/h3>\n<p>\nAnta att det finns en uppgift: att massf\u00f6rbereda servrar fr\u00e5n grunden, i toppar \u2013 30 per dag. Servrar av olika tillverkare och modeller, de kan ha olika operativsystem installerade och kan ha eller sakna en hypervisor.<\/p>\n<p>Vilka operationer ing\u00e5r i konfigurationsprocessen (utan automatisering):<\/p>\n<ul>\n<li>Anslut tangentbord, mus och monitor till servern;<\/li>\n<li>Konfigurera BIOS, RAID, IPMI;<\/li>\n<li>Uppdatera komponenternas firmware;<\/li>\n<li>Distribuera en filsystemavbildning (eller installera hypervisorn och kopiera virtuella maskiner);<\/li>\n<\/ul>\n<p>\nObs. Som ett alternativ kan OS-deployment g\u00f6ras genom installation med en svarfil. Men detta kommer inte att diskuteras i artikeln. \u00c4ven om du l\u00e4ngre ner kommer att se att det inte \u00e4r sv\u00e5rt att l\u00e4gga till denna funktionalitet.<\/p>\n<ul>\n<li>Konfigurera OS-inst\u00e4llningar (hostname, IP, etc.).<\/li>\n<\/ul>\n<p>\nVid denna metod utf\u00f6rs identiska inst\u00e4llningar sekventiellt p\u00e5 varje server. Effektiviteten av s\u00e5dant arbete \u00e4r mycket l\u00e5g.<\/p>\n<p>Syftet med automatisering \u00e4r att utesluta m\u00e4nniskans deltagande i serverf\u00f6rberedelseprocessen. S\u00e5 mycket som m\u00f6jligt. <\/p>\n<p>Tack vare automatiseringen minskar tiden f\u00f6r driftstopp mellan operationerna och m\u00f6jligheten att f\u00f6rbereda flera servrar samtidigt \u00f6kar. Risken f\u00f6r fel p\u00e5 grund av m\u00e4nskliga faktorer minskar ocks\u00e5 avsev\u00e4rt.<\/p>\n<p><img decoding=\"async\" alt=\"Bare-Metal Provisioning f\u00f6r egen hand, eller automatisk f\u00f6rberedelse av servrar fr\u00e5n grunden\" src=\"\/wp-content\/uploads\/2020\/03\/8c196058891a7f41c5b93e7f6721480b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Hur sker automatisk serverkonfiguration?<\/h3>\n<p>\nL\u00e5t oss g\u00e5 igenom alla steg i detalj.<\/p>\n<p>Du har en linux-server som du anv\u00e4nder som PXE install-server. P\u00e5 den \u00e4r tj\u00e4nsterna DHCP, TFTP installerade och konfigurerade.<\/p>\n<p>S\u00e5, vi startar servern (som ska konfigureras) via PXE. L\u00e5t oss p\u00e5minna oss om hur detta fungerar:<\/p>\n<ul>\n<li>Servern \u00e4r inst\u00e4lld f\u00f6r n\u00e4tverksboot.<\/li>\n<li>Servern laddar PXE-ROM f\u00f6r n\u00e4tverkskortet och kontaktar installationsservern via DHCP f\u00f6r att f\u00e5 en n\u00e4tverksadress.<\/li>\n<li>DHCP-installationsservern utf\u00e4rdar en adress och instruktioner f\u00f6r vidare nedladdning via PXE.<\/li>\n<li>Servern laddar n\u00e4tverksbootloadern fr\u00e5n installationsservern via PXE, och den fortsatta nedladdningen sker enligt PXE-konfigurationsfilen.<\/li>\n<li>Nedladdning sker baserat p\u00e5 de mottagna parametrarna (k\u00e4rna, initramfs, monteringspunkter, squashfs-avbildning och andra).<\/li>\n<\/ul>\n<p>\nObservera. I artikeln beskrivs nedladdning via PXE genom BIOS-l\u00e4ge. F\u00f6r n\u00e4rvarande implementeras UEFI bootmode aktivt av tillverkarna. F\u00f6r PXE kommer skillnaden att ligga i DHCP-serverkonfigurationen och n\u00e4rvaron av en ytterligare bootloader.<\/p>\n<p>L\u00e5t oss titta p\u00e5 ett exempel p\u00e5 konfiguration av PXE-server (pxelinux-meny).<\/p>\n<p>Fil 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 \/\/ standardmenyn\n\tMENU LABEL Linux Scripting Toolkits\n\tMENU default\n\tKERNEL menu.c32\n\tAPPEND pxelinux.cfg\/toolkit \/\/ g\u00e5 till n\u00e4sta meny<\/code><\/pre>\n<p>\nFil pxelinux.cfg\/toolkit:<\/p>\n<pre><code class=\"plaintext\">prompt 0\ntimeout 100\nmenu title X5 PXE Boot Menu\nlabel mainmenu\n    menu label ^\u00c5terv\u00e4nd till huvudmenyn\n    kernel menu.c32\n    append pxelinux.cfg\/default\nlabel x5toolkit-auto \/\/ standardl\u00e4get - automatiskt l\u00e4ge\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 \/\/ f\u00f6r fels\u00f6kning - konsol\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>\nK\u00e4rnan och initramfs vid detta stadium \u00e4r en mellanliggande linux-avbildning, med hj\u00e4lp av vilken den huvudsakliga f\u00f6rberedelsen och konfigurationen av servern kommer att ske.<\/p>\n<p>Som ni ser \u00f6verf\u00f6r bootloadern m\u00e5nga parametrar till k\u00e4rnan. Vissa av dessa parametrar anv\u00e4nds av sj\u00e4lva k\u00e4rnan. Andra kan vi anv\u00e4nda f\u00f6r v\u00e5ra egna \u00e4ndam\u00e5l. Mer om detta kommer att diskuteras senare, men f\u00f6r nu kan ni helt enkelt komma ih\u00e5g att alla \u00f6verf\u00f6rda parametrar kommer att vara tillg\u00e4ngliga i den mellanliggande linux-avbildningen via \/proc\/cmdline.<\/p>\n<p>Var kan man f\u00e5 tag p\u00e5 k\u00e4rnan och initramfs?<br \/>\nSom grund kan man v\u00e4lja valfri linux-distribution. Vad man ska t\u00e4nka p\u00e5 vid valet:<\/p>\n<ul>\n<li>den bootbara avbildningen m\u00e5ste vara universell (inneh\u00e5lla drivrutiner, m\u00f6jligheter att installera ytterligare verktyg);<\/li>\n<li>Det kommer troligen att kr\u00e4vas att vi anpassar initramfs.<\/li>\n<\/ul>\n<p>\nHur g\u00f6r vi det i v\u00e5r l\u00f6sning f\u00f6r X5? Som grund har vi valt CentOS 7. Vi kommer att g\u00f6ra f\u00f6ljande trick: f\u00f6rbereda den framtida bildstrukturen, packa den i ett arkiv och skapa initramfs, d\u00e4r v\u00e5rt arkiv av filsystemet kommer att finnas. Vid start av bilden kommer arkivet att extraheras till den skapade tmpfs-partitionen. P\u00e5 s\u00e5 s\u00e4tt f\u00e5r vi en minimal, men \u00e4nd\u00e5 fullst\u00e4ndig live-bild av Linux med alla n\u00f6dv\u00e4ndiga verktyg, best\u00e5ende av bara tv\u00e5 filer: vmkernel och 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>\nS\u00e5 vi har specificerat k\u00e4rnan och initramfs som ska laddas. Som ett resultat, i detta skede, genom att ladda den mellanliggande Linux-bilden via PXE, f\u00e5r vi OS-konsolen.<\/p>\n<p>Utm\u00e4rkt, men nu beh\u00f6ver vi \u00f6verf\u00f6ra kontrollen till v\u00e5r \"automatisering\".<\/p>\n<p>Detta kan g\u00f6ras s\u00e5 h\u00e4r.<\/p>\n<p>Anta att vi planerar att \u00f6verf\u00f6ra kontrollen till skriptet mount.sh efter att bilden har laddats.<br \/>\nVi kommer att inkludera skriptet mount.sh i autostart. F\u00f6r detta kr\u00e4vs det att vi modifierar initramfs:<\/p>\n<ul>\n<li>extrahera initramfs (om vi anv\u00e4nder det ovanst\u00e5ende alternativet f\u00f6r initramfs, \u00e4r detta inte n\u00f6dv\u00e4ndigt)<\/li>\n<li>inkludera i autostart koden som kommer att analysera de \u00f6verl\u00e4mnade parametrarna via \/proc\/cmdline och \u00f6verf\u00f6ra kontrollen vidare;<\/li>\n<li>packa initramfs.<\/li>\n<\/ul>\n<p>\nObservera. N\u00e4r det g\u00e4ller X5 toolkit \u00f6verf\u00f6rs kontrollen till skriptet <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>S\u00e5, bilden laddas d\u00e4r skriptet mount.sh startar i autostart. Efter det analyserar skriptet mount.sh de \u00f6verl\u00e4mnade parametrarna (script_cmd=) under k\u00f6rningen och startar det n\u00f6dv\u00e4ndiga programmet\/skriptet.<\/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 f\u00f6r egen hand, eller automatisk f\u00f6rberedelse av servrar fr\u00e5n grunden\" src=\"\/wp-content\/uploads\/2020\/03\/943eeb64fbf746feab5119ead5b1ca66.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nH\u00e4r p\u00e5 v\u00e4nster sida - PXE-menyn, p\u00e5 h\u00f6ger sida - schemat f\u00f6r \u00f6verf\u00f6ring av kontroll.<\/p>\n<p>Vi har f\u00f6rst\u00e5tt \u00f6verf\u00f6ringen av kontrollen. Beroende p\u00e5 valet i PXE-menyn antingen startas autoinst\u00e4llningsskrift eller konsol f\u00f6r fels\u00f6kning.<\/p>\n<p>Vid automatisk inst\u00e4llning monteras n\u00f6dv\u00e4ndiga kataloger fr\u00e5n installationsservern som inneh\u00e5ller:<\/p>\n<ul>\n<li>skript;<\/li>\n<li>sparade BIOS\/UEFI-mallar f\u00f6r olika servrar;<\/li>\n<li>firmware;<\/li>\n<li>verktyg f\u00f6r servrar;<\/li>\n<li>loggar.<\/li>\n<\/ul>\n<p>\nD\u00e4refter \u00f6verf\u00f6r skriptet mount.sh kontrollen till skriptet master-install.sh fr\u00e5n skriptkatalogen.<\/p>\n<p>Skripttr\u00e4d (ordningen f\u00f6r deras utf\u00f6rande) ser ungef\u00e4r ut s\u00e5 h\u00e4r:<\/p>\n<ul>\n<li>master-install<\/li>\n<li>sharefunctions (gemensamma funktioner)<\/li>\n<li>info (visar information)<\/li>\n<li>models (installerar installationsparametrar baserat p\u00e5 servermodell)<\/li>\n<li>prepare_utils (installerar n\u00f6dv\u00e4ndiga verktyg)<\/li>\n<li>fwupdate (firmwareuppdatering)<\/li>\n<li>diag (grunddiagnos)<\/li>\n<li>biosconf (BIOS\/UEFI-inst\u00e4llningar)<\/li>\n<li>clockfix (tidsinst\u00e4llning p\u00e5 moderkortet)<\/li>\n<li>srmconf (inst\u00e4llning av fj\u00e4rrgr\u00e4nssnittet)<\/li>\n<li>raidconf (inst\u00e4llning av logiska volymer)<\/li>\n<\/ul>\n<p>\nen av:<\/p>\n<ul>\n<li>preinstall (\u00f6verf\u00f6ring av kontroll till installationsprogrammet f\u00f6r operativsystemet eller hypervisorn, t.ex. ESXi)<\/li>\n<li>merged-install (direkt start av bilduppackning)<\/li>\n<\/ul>\n<p>\n<b>Nu vet vi:<\/p>\n<ul>\n<li>hur man startar servern via PXE;<\/li>\n<li>hur man \u00f6verf\u00f6r kontrollen till ett skr\u00e4ddarsytt skript.<\/li>\n<\/ul>\n<p><\/b><br \/>\nVi forts\u00e4tter. N\u00e4sta fr\u00e5gor har blivit aktuella:<\/p>\n<ul>\n<li>Hur identifierar vi servern som vi f\u00f6rbereder?<\/li>\n<li>Vilka verktyg och hur konfigurerar vi servern?<\/li>\n<li>Hur f\u00e5r vi inst\u00e4llningar f\u00f6r en specifik server?<\/li>\n<\/ul>\n<p><\/p>\n<h3>Hur identifierar vi servern som vi f\u00f6rbereder?<\/h3>\n<p>\nDet \u00e4r enkelt \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>\nH\u00e4r finns allt som beh\u00f6vs: tillverkare, modell, serienummer. Om du \u00e4r os\u00e4ker p\u00e5 att denna information finns p\u00e5 alla servrar kan du identifiera dem via MAC-adressen. Eller b\u00e5da metoderna samtidigt, om serverleverant\u00f6rerna \u00e4r olika och information om serienumret saknas p\u00e5 vissa modeller.<\/p>\n<p>Baserat p\u00e5 den information som erh\u00e5llits monteras n\u00e4tverksmappar fr\u00e5n installationsservern och allt n\u00f6dv\u00e4ndigt laddas ner (verktyg, firmware osv.).<\/p>\n<h3>Vilka verktyg och hur konfigurerar vi servern?<\/h3>\n<p>\nJag anger verktyg f\u00f6r Linux f\u00f6r vissa tillverkare. Alla verktyg finns tillg\u00e4ngliga p\u00e5 tillverkarnas officiella webbplatser.<\/p>\n<p><img decoding=\"async\" alt=\"Bare-Metal Provisioning f\u00f6r egen hand, eller automatisk f\u00f6rberedelse av servrar fr\u00e5n grunden\" src=\"\/wp-content\/uploads\/2020\/03\/fab53d1fa6e9a222ec69248439551ad7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMed firmware, tror jag att det \u00e4r klart. Oftast levereras de som packade k\u00f6rbara filer. Den k\u00f6rbara filen kontrollerar processen f\u00f6r firmwareuppdatering och rapporterar en returkod.<\/p>\n<p>BIOS och IPMI konfigureras vanligtvis via mallar. Om s\u00e5 beh\u00f6vs kan mallen redigeras f\u00f6re sj\u00e4lva starten.<\/p>\n<p>RAID-verktyg fr\u00e5n vissa tillverkare kan ocks\u00e5 konfigureras via mallar. Om s\u00e5 inte \u00e4r fallet m\u00e5ste ett konfigurationsskript skrivas.<\/p>\n<p>Ordningen f\u00f6r RAID-konfiguration \u00e4r oftast f\u00f6ljande:<\/p>\n<ul>\n<li>Beg\u00e4r nuvarande konfiguration.<\/li>\n<li>Om logiska volymer redan finns - rensa dem.<\/li>\n<li>Kontrollera vilka fysiska diskar som finns och hur m\u00e5nga de \u00e4r.<\/li>\n<li>Skapa en ny logisk volym. Avbryt processen vid fel.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Hur f\u00e5r vi inst\u00e4llningar f\u00f6r en specifik server?<\/h3>\n<p>\nAnta att inst\u00e4llningarna f\u00f6r alla servrar kommer att lagras p\u00e5 installationsservern. I s\u00e5 fall, f\u00f6r att svara p\u00e5 v\u00e5r fr\u00e5ga, m\u00e5ste vi f\u00f6rst besluta: p\u00e5 vilket s\u00e4tt vi ska \u00f6verf\u00f6ra inst\u00e4llningarna till installationsservern.<\/p>\n<p>I b\u00f6rjan kan textfiler r\u00e4cka. (I framtiden kan en textfil anv\u00e4ndas som en reservmetod f\u00f6r att \u00f6verf\u00f6ra inst\u00e4llningar). <\/p>\n<p>Man kan \"dela\" textfilen p\u00e5 installationsservern. Och l\u00e4gga till dess montering i skriptet mount.sh.<\/p>\n<p>Raderna kommer till exempel att se ut s\u00e5 h\u00e4r:<\/p>\n<p><\/p>\n<p>Dessa rader kommer att \u00f6verf\u00f6ras till en fil av ingenj\u00f6ren fr\u00e5n hans arbetsdator. Vid serverinst\u00e4llningen kommer parametrarna f\u00f6r den specifika servern att l\u00e4sas fr\u00e5n filen.<\/p>\n<p>Men p\u00e5 sikt \u00e4r det b\u00e4ttre att anv\u00e4nda en databas f\u00f6r att lagra inst\u00e4llningar, tillst\u00e5nd och installationsloggar f\u00f6r servrar.<\/p>\n<p>Naturligtvis r\u00e4cker inte en databas, utan vi beh\u00f6ver skapa en klientdel som kommer att \u00f6verf\u00f6ra inst\u00e4llningar till databasen. Att implementera detta \u00e4r sv\u00e5rare j\u00e4mf\u00f6rt med en textfil, men det \u00e4r faktiskt inte s\u00e5 sv\u00e5rt som det verkar. En minimal version av klienten, som helt enkelt kommer att \u00f6verf\u00f6ra data till databasen, kan man enkelt skriva sj\u00e4lv. Och att f\u00f6rb\u00e4ttra klientprogrammet senare kan g\u00f6ras i fri takt (rapporter, utskrift av etiketter, skicka meddelanden och allt annat som dyker upp).<\/p>\n<p>Genom att g\u00f6ra en viss fr\u00e5ga till databasen och ange serverns serienummer f\u00e5r vi n\u00f6dv\u00e4ndiga parametrar f\u00f6r serverkonfiguration.<\/p>\n<p>Dessutom beh\u00f6ver vi inte t\u00e4nka p\u00e5 l\u00e5s f\u00f6r samtidig \u00e5tkomst, som i fallet med textfilen.<\/p>\n<p>Vi kan skriva installationsloggen i databasen i alla steg och kontrollera installationsprocessen via h\u00e4ndelser och flaggor f\u00f6r f\u00f6rberedelsestegen.<\/p>\n<p><b>Nu vet vi hur:<\/p>\n<ul>\n<li>ladda servern via PXE;<\/li>\n<li>\u00f6verl\u00e4mna kontrollen till v\u00e5rt skript;<\/li>\n<li>identifiera servern som ska f\u00f6rberedas med serienumret;<\/li>\n<li>konfigurera servern med l\u00e4mpliga verktyg;<\/li>\n<li>\u00f6verf\u00f6ra inst\u00e4llningar till installationsserverns databas med hj\u00e4lp av klientdelen.<\/li>\n<\/ul>\n<p>\nVi har klargjort hur:<\/p>\n<ul>\n<li>den installerade servern f\u00e5r n\u00f6dv\u00e4ndiga inst\u00e4llningar fr\u00e5n databasen;<\/li>\n<li>alla framsteg i f\u00f6rberedelsen registreras i databasen (loggar, h\u00e4ndelser, flaggor f\u00f6r stegen).<\/li>\n<\/ul>\n<p><\/b><\/p>\n<h3>Vad g\u00e4ller olika typer av installerad mjukvara? Hur installerar man hypervisorn, kopierar VM och konfigurerar allt detta?<\/h3>\n<p>\nVid distribution av en filsystemavbildning (linux) p\u00e5 h\u00e5rdvara \u00e4r allt ganska enkelt:<\/p>\n<ul>\n<li>Efter att ha konfigurerat alla serverkomponenter distribuerar vi avbildningen.<\/li>\n<li>Vi installerar bootloader grub.<\/li>\n<li>Vi g\u00f6r chroot och konfigurerar allt som beh\u00f6vs.<\/li>\n<\/ul>\n<p>\n<b>Hur man \u00f6verf\u00f6r kontrollen till OS-installat\u00f6ren (exempel med ESXi).<\/b><\/p>\n<ul>\n<li>Vi organiserar \u00f6verf\u00f6ringen av kontrollen fr\u00e5n v\u00e5rt skript till hypervisorinstallat\u00f6ren via en svarfil (kickstart):<\/li>\n<li>Vi tar bort de nuvarande partitionerna p\u00e5 disken.<\/li>\n<li>Vi skapar en partition som \u00e4r 500 MB stor.<\/li>\n<li>Vi markerar den som startpartition.<\/li>\n<li>Vi formaterar den i FAT32.<\/li>\n<li>Vi kopierar installationsfilerna f\u00f6r ESXi till roten av den.<\/li>\n<li>Vi installerar syslinux.<\/li>\n<li>Vi kopierar syslinux.cfg till \/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>Vi kopierar mboot.c32 till \/syslinux.<\/li>\n<li>I boot.cfg ska kernelopt=ks=ftp:\/\/\/ks_esxi.cfg<\/li>\n<li>Starta om servern.<\/li>\n<\/ul>\n<p>\nEfter omstart av servern kommer installationsprogrammet f\u00f6r ESXi att laddas fr\u00e5n dess h\u00e5rddisk. Alla n\u00f6dv\u00e4ndiga installationsfiler laddas in i minnet och installationen av ESXi p\u00e5b\u00f6rjas enligt den angivna svarfilen.<\/p>\n<p>H\u00e4r \u00e4r n\u00e5gra rader fr\u00e5n svarfilen ks_esxi.cfg:<\/p>\n<pre><code class=\"plaintext\">%firstboot --interpreter=busybox\n\u2026\n# H\u00e4mtar serienummer\n\nSYSSN=$(esxcli hardware platform get | grep Serial | awk -F \" \" '{print $3}')\n\n# H\u00e4mtar 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# Ansluter till NFS installera server\n\nesxcli storage nfs add -H is -s \"\/srv\/nfs_share\" -v nfsshare1\n\n# Kopierar tillf\u00e4lliga SSH-inst\u00e4llningar f\u00f6r att anv\u00e4nda SSH-klienten\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# Kopiera ovftool f\u00f6r att distribuera VM nu, kan \u00e4ven beh\u00f6vas senare\n\ncp -R \"\/vmfs\/volumes\/nfsshare1\/ovftool\" \"\/vmfs\/volumes\/datastore1\/\"\n\n# Distribuerar VM\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# H\u00e4mtar raden med inst\u00e4llningar f\u00f6r v\u00e5r server\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# Genererar n\u00e4tverkskonfigurationsskript\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# S\u00e4tter parameter guestinfo.esxihost.id, anger serienummer\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# Uppdaterar informationen i databasen\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# \u00c5terst\u00e4ller SSH-inst\u00e4llningar\n\nrm -rf \"\/etc\/ssh\"\nmv \"\/etc\/ssh.tmp\" \"\/etc\/ssh\"\n\n# Konfigurerar n\u00e4tverket och startar om\n\nesxcli system hostname set --fqdn=esx-${G_NICK}.x5.ru\n\/vmfs\/volumes\/datastore1\/netconf.sh\nreboot\n<\/code><\/pre>\n<p>\nVid detta steg har hypervisor installerats och konfigurerats, virtuella maskiner har kopierats.<\/p>\n<p>Hur konfigurerar man nu de virtuella maskinerna?<\/p>\n<p>Vi trickade lite: under installationen st\u00e4llde vi in parametern guestinfo.esxihost.id = \"$SYSSN\" i filen VM1.vmx, d\u00e4r vi angav serienummer f\u00f6r den fysiska servern.<\/p>\n<p>Nu kan den virtuella maskinen (med installerad vmware-tools-paket) f\u00e5 \u00e5tkomst till denna parameter:<\/p>\n<pre><code class=\"plaintext\">ESXI_SN=$(vmtoolsd --cmd \"info-get guestinfo.esxihost.id\")<\/code><\/pre>\n<p>\nDet vill s\u00e4ga, VM kommer att kunna identifiera sig sj\u00e4lv (den k\u00e4nner till det fysiska v\u00e4rdets serienummer), g\u00f6ra en beg\u00e4ran till databasinstallationsservern och h\u00e4mta de parametrar som beh\u00f6ver konfigureras. Detta hela formuleras i ett skript som ska k\u00f6ras automatiskt vid start av guestos vm (men endast en g\u00e5ng: RunOnce).<\/p>\n<p><b>Nu vet vi hur:<\/p>\n<ul>\n<li>ladda servern via PXE;<\/li>\n<li>\u00f6verl\u00e4mna kontrollen till v\u00e5rt skript;<\/li>\n<li>identifiera servern som ska f\u00f6rberedas med serienumret;<\/li>\n<li>konfigurera servern med l\u00e4mpliga verktyg;<\/li>\n<li>\u00f6verf\u00f6ra inst\u00e4llningar till databasinstallationsservern med hj\u00e4lp av klientdelen;<\/li>\n<li>konfigurera olika typer av programvara, inklusive att distribuera hypervisor esxi och st\u00e4lla in virtuella maskiner (och allt automatiskt).<\/li>\n<\/ul>\n<p>\nVi har klargjort hur:<\/p>\n<ul>\n<li>den installerade servern f\u00e5r n\u00f6dv\u00e4ndiga inst\u00e4llningar fr\u00e5n databasen;<\/li>\n<li>alla framsteg i f\u00f6rberedelsen registreras i databasen (loggar, h\u00e4ndelser, flaggor f\u00f6r stegen).<\/li>\n<\/ul>\n<p><\/b><br \/>\n<u><b>Slutsats:<\/b><\/u><\/p>\n<p>Jag tror att den unika egenskapen hos denna l\u00f6sning ligger i dess flexibilitet, enkelhet, m\u00f6jligheter och m\u00e5ngsidighet.<\/p>\n<p>Skriv g\u00e4rna i kommentarerna vad du tycker.<br \/>\n<br \/>K\u00e4lla: <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.4 - 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\/sv\/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.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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 p\u00e5 egen hand, eller Automatisk f\u00f6rberedelse av servrar fr\u00e5n grunden | ProHoster","description":"Hej, jag heter Denis och en av mina verksamhetsomr\u00e5den \u00e4r att utveckla infrastrukturl\u00f6sningar p\u00e5 X5.","canonical_url":"https:\/\/prohoster.info\/sv\/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":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/74905","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=74905"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/74905\/revisions"}],"predecessor-version":[{"id":158713,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/74905\/revisions\/158713"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/74906"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=74905"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=74905"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=74905"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}