{"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\/de\/blog\/administrirovanie\/bare-metal-provisioning-svoimi-rukami-ili-avtomaticheskaya-podgotovka-serverov-s-nulya","title":{"rendered":"Bare-Metal Bereitstellung selbstgemacht: Automatische Servervorbereitung von Grund auf","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hallo, ich bin Denis und eine meiner T\u00e4tigkeiten ist die Entwicklung von Infrastruktur-L\u00f6sungen bei X5. Heute m\u00f6chte ich mit Ihnen teilen, wie man mit \u00f6ffentlichen Tools ein automatisiertes System zur Servervorbereitung aufbauen kann. Meiner Meinung nach ist dies eine interessante, einfache und flexible L\u00f6sung.<\/p>\n<p><img decoding=\"async\" alt=\"Bare-Metal Bereitstellung selbstgemacht: Automatische Servervorbereitung von Grund auf\" 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 \/>\nUnter Vorbereitung versteht man: aus einem neuen Server \u201eout of the box\u201c einen vollst\u00e4ndig konfigurierten Server mit Linux-Betriebssystem oder mit dem Hypervisor ESXi zu erstellen (Windows wird in diesem Artikel nicht behandelt). <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/de\/server\/\"   title=\"Server\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1469\">Server<\/a> Server \u2013 Server, die konfiguriert werden m\u00fcssen.<\/p>\n<p><b>Begriffe<\/b>:<\/p>\n<ul>\n<li>Installationsserver \u2013 der Hauptserver, der den gesamten Vorbereitungsprozess \u00fcber das Netzwerk bereitstellt.<\/li>\n<li>Warum ist Automatisierung erforderlich?<\/li>\n<\/ul>\n<p><\/p>\n<h3>Angenommen, es gibt die Aufgabe, Server massenhaft von Grund auf vorzubereiten, im H\u00f6chstfall 30 pro Tag. Server verschiedener Hersteller und Modelle, auf denen unterschiedliche Betriebssysteme installiert werden k\u00f6nnen, und es kann ein Hypervisor vorhanden sein oder nicht.<\/h3>\n<p>\nWelche Operationen geh\u00f6ren zum Konfigurationsprozess (ohne Automatisierung):<\/p>\n<p>eine Tastatur, eine Maus und einen Monitor mit dem Server verbinden;<\/p>\n<ul>\n<li>BIOS, RAID, IPMI konfigurieren;<\/li>\n<li>Firmware der Komponenten aktualisieren;<\/li>\n<li>Firmware der Komponenten aktualisieren;<\/li>\n<li>ein Dateisystem-Image bereitstellen (oder einen Hypervisor installieren und virtuelle Maschinen kopieren);<\/li>\n<\/ul>\n<p>\nHinweis. Alternativ kann das Betriebssystem \u00fcber eine Installation mit einer Antwortdatei bereitgestellt werden. Dies wird jedoch nicht in diesem Artikel besprochen. Unten sehen Sie jedoch, dass es nicht schwierig ist, diese Funktionalit\u00e4t hinzuzuf\u00fcgen.<\/p>\n<ul>\n<li>die Betriebssystemparameter konfigurieren (Hostname, IP, andere).<\/li>\n<\/ul>\n<p>\nBei diesem Ansatz werden dieselben Einstellungen nacheinander auf jedem Server vorgenommen. Die Effizienz dieser Arbeit ist sehr gering.<\/p>\n<p>Das Wesen der Automatisierung besteht darin, menschliche Beteiligung am Prozess der Servervorbereitung auszuschlie\u00dfen. So weit wie m\u00f6glich. <\/p>\n<p>Dank der Automatisierung wird die Ausfallzeit zwischen den Vorg\u00e4ngen verringert und es wird erm\u00f6glicht, mehrere Server gleichzeitig vorzubereiten. Auch die Wahrscheinlichkeit von Fehlern aufgrund menschlicher Faktoren sinkt erheblich.<\/p>\n<p><img decoding=\"async\" alt=\"Bare-Metal Bereitstellung selbstgemacht: Automatische Servervorbereitung von Grund auf\" src=\"\/wp-content\/uploads\/2020\/03\/8c196058891a7f41c5b93e7f6721480b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Wie erfolgt die automatische Serverkonfiguration?<\/h3>\n<p>\nLassen Sie uns alle Schritte im Detail durchgehen.<\/p>\n<p>Sie haben einen Linux-Server, den Sie als PXE-Installationsserver verwenden. Darauf sind die Dienste DHCP und TFTP installiert und konfiguriert.<\/p>\n<p>Laden wir also den Server, der konfiguriert werden muss, \u00fcber PXE. Lassen Sie uns erinnern, wie das funktioniert:<\/p>\n<ul>\n<li>Beim Server wird die Netzwerkboot-Option ausgew\u00e4hlt.<\/li>\n<li>Der Server l\u00e4dt das PXE-ROM der Netzwerkkarte und kontaktiert den Installationsserver \u00fcber DHCP, um die Netzwerkadresse zu erhalten.<\/li>\n<li>Der DHCP-Installationsserver verteilt die Adresse sowie die Anweisung f\u00fcr das weitere Booten \u00fcber PXE.<\/li>\n<li>Der Server l\u00e4dt den Netzwerkbootloader vom Installationsserver \u00fcber PXE, das weitere Booten erfolgt gem\u00e4\u00df der PXE-Konfigurationsdatei.<\/li>\n<li>Das Booten erfolgt basierend auf den erhaltenen Parametern (Kernel, initramfs, Mount-Punkte, squashfs-Image usw.).<\/li>\n<\/ul>\n<p>\nHinweis: Der Artikel beschreibt das Booten \u00fcber PXE im BIOS-Modus. Derzeit wird von Herstellern aktiv der UEFI-Bootmodus eingef\u00fchrt. Der Unterschied f\u00fcr PXE liegt in der Konfiguration des DHCP-Servers und dem Vorhandensein eines zus\u00e4tzlichen Bootloaders.<\/p>\n<p>Betrachten wir ein Beispiel f\u00fcr die Konfiguration des PXE-Servers (men\u00fc pxelinux).<\/p>\n<p>Datei pxelinux.cfg\/default:<\/p>\n<pre><code class=\"plaintext\">default menu.c32\nprompt 0\ntimeout 100\nmenu title X5 PXE Boot Men\u00fc\nLABEL InstallServer Men\u00fc\n\tMENU LABEL InstallServer\n\tKERNEL menu.c32\n\tAPPEND pxelinux.cfg\/installserver\nLABEL VMware Men\u00fc\n\tMENU LABEL VMware ESXi Installieren\n\tKERNEL menu.c32\n\tAPPEND pxelinux.cfg\/vmware\nLABEL toolkit \/\/ Standardmen\u00fc\n\tMENU LABEL Linux Scripting Toolkits\n\tMENU default\n\tKERNEL menu.c32\n\tAPPEND pxelinux.cfg\/toolkit \/\/ Wechsel zum n\u00e4chsten Men\u00fc<\/code><\/pre>\n<p>\nDatei pxelinux.cfg\/toolkit:<\/p>\n<pre><code class=\"plaintext\">prompt 0\ntimeout 100\nmenu title X5 PXE Boot Menu\nlabel mainmenu\n    menu label ^Zur\u00fcck zum Hauptmen\u00fc\n    kernel menu.c32\n    append pxelinux.cfg\/default\nlabel x5toolkit-auto \/\/ standardm\u00e4\u00dfig - automatischer Modus\n        menu label x5 Toolkit Autoinstallation\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 \/\/ zur Fehlersuche - Konsole\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>\nDer Kernel und das Initramfs in dieser Phase sind ein vorl\u00e4ufiges Linux-Image, mit dem die Hauptvorbereitung und -konfiguration des Servers erfolgen wird.<\/p>\n<p>Wie Sie sehen k\u00f6nnen, \u00fcbergibt der Bootloader viele Parameter an den Kernel. Ein Teil dieser Parameter wird vom Kernel selbst verwendet. Einige k\u00f6nnen wir f\u00fcr unsere Zwecke nutzen. Dar\u00fcber wird sp\u00e4ter gesprochen, und vorerst kann man sich einfach merken, dass alle \u00fcbergebenen Parameter im vorl\u00e4ufigen Linux-Image \u00fcber \/proc\/cmdline verf\u00fcgbar sind.<\/p>\n<p>Woher bekommt man den Kernel und das Initramfs?<br \/>\nAls Grundlage kann man jede Linux-Distribution w\u00e4hlen. Worauf wir bei der Auswahl achten:<\/p>\n<ul>\n<li>Das Boot-Image muss universell sein (z. B. Treiber, M\u00f6glichkeit zur Installation zus\u00e4tzlicher Tools);<\/li>\n<li>Es wird wahrscheinlich notwendig sein, das initramfs anzupassen.<\/li>\n<\/ul>\n<p>\nWie haben wir das in unserer L\u00f6sung f\u00fcr X5 umgesetzt? Grundlage ist CentOS 7. Wir werden den folgenden Trick anwenden: Wir bereiten die zuk\u00fcnftige Struktur des Images vor, packen sie in ein Archiv und erstellen ein initramfs, in dem sich unser Archiv des Dateisystems befindet. Beim Laden des Images wird das Archiv im erstellten tmpfs-Bereich entpackt. So erhalten wir ein minimales, aber vollst\u00e4ndiges Live-Linux-Image mit allen notwendigen Tools, bestehend aus nur zwei Dateien: vmkernel und 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>\nSomit haben wir den Kernel und das initramfs angegeben, die geladen werden sollen. Ergebnis ist, dass wir zu diesem Zeitpunkt, nachdem wir das Zwischen-Image von Linux per PXE geladen haben, die OS-Konsole erhalten.<\/p>\n<p>Gut, aber jetzt m\u00fcssen wir die Kontrolle an unsere \"Automatisierung\" \u00fcbergeben.<\/p>\n<p>Das kann so gemacht werden.<\/p>\n<p>Angenommen, nach dem Laden des Images planen wir, die Kontrolle an das Skript mount.sh zu \u00fcbergeben.<br \/>\nWir f\u00fcgen das Skript mount.sh zum Autostart hinzu. Daf\u00fcr wird es notwendig sein, das initramfs zu modifizieren:<\/p>\n<ul>\n<li>das initramfs entpacken (wenn wir die oben genannte Variante des initramfs verwenden, ist das nicht erforderlich)<\/li>\n<li>Aktivieren Sie den Auto-Start-Code, der die \u00fcber \/proc\/cmdline \u00fcbergebenen Parameter analysiert und die Kontrolle weitergibt;<\/li>\n<li>initramfs packen.<\/li>\n<\/ul>\n<p>\nHinweis: Im Fall des X5-Toolkits wird die Bootsteuerung an das Skript \u00fcbergeben. <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>Das Image wird geladen, in dem im Auto-Start das Skript mount.sh startet. Im weiteren Verlauf analysiert das Skript mount.sh die \u00fcbergebenen Parameter (script_cmd=) und startet das erforderliche Programm\/Skript.<\/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 Bereitstellung selbstgemacht: Automatische Servervorbereitung von Grund auf\" src=\"\/wp-content\/uploads\/2020\/03\/943eeb64fbf746feab5119ead5b1ca66.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLinks befindet sich das PXE-Men\u00fc, rechts \u2013 das Steuerungsschema.<\/p>\n<p>Mit der Steuerungs\u00fcbergabe sind wir fertig. Je nach Auswahl im PXE-Men\u00fc wird entweder das Auto-Setup-Skript oder die Debug-Konsole gestartet.<\/p>\n<p>Im Fall der automatischen Konfiguration werden die erforderlichen Verzeichnisse vom Installationsserver eingebunden, in denen sich befinden:<\/p>\n<ul>\n<li>Skripte;<\/li>\n<li>gespeicherte BIOS\/UEFI-Vorlagen verschiedener Server;<\/li>\n<li>Firmware;<\/li>\n<li>Utilities f\u00fcr Server;<\/li>\n<li>Logs.<\/li>\n<\/ul>\n<p>\nAnschlie\u00dfend \u00fcbergibt das Skript mount.sh die Kontrolle an das Skript master-install.sh aus dem Skriptverzeichnis.<\/p>\n<p>Der Baum der Skripte (Reihenfolge ihrer Ausf\u00fchrung) sieht ungef\u00e4hr so aus:<\/p>\n<ul>\n<li>master-install<\/li>\n<li>sharefunctions (gemeinsame Funktionen)<\/li>\n<li>info (Informationsausgabe)<\/li>\n<li>Modelle (Installationseinstellungen basierend auf dem Servermodell)<\/li>\n<li>prepare_utils (Installation der notwendigen Utilities)<\/li>\n<li>fwupdate (Firmware-Updates)<\/li>\n<li>diag (einfache Diagnose)<\/li>\n<li>biosconf (BIOS\/UEFI-Konfiguration)<\/li>\n<li>clockfix (Zeit auf dem Motherboard einstellen)<\/li>\n<li>srmconf (Konfiguration der Remote-Management-Schnittstelle)<\/li>\n<li>raidconf (Konfiguration der logischen Volumes)<\/li>\n<\/ul>\n<p>\neiner von:<\/p>\n<ul>\n<li>preinstall (\u00dcbergabe der Kontrolle an den OS- oder Hypervisor-Installer, z.B. ESXi)<\/li>\n<li>merged-install (sofortiger Start der Entpackung des Images)<\/li>\n<\/ul>\n<p>\n<b>Jetzt wissen wir:<\/p>\n<ul>\n<li>wie man den Server \u00fcber PXE bootet;<\/li>\n<li>wie man die Kontrolle an ein eigenes Skript \u00fcbergibt.<\/li>\n<\/ul>\n<p><\/b><br \/>\nLassen Sie uns fortfahren. Es sind folgende Fragen relevant geworden:<\/p>\n<ul>\n<li>Wie identifizieren wir den Server, den wir vorbereiten?<\/li>\n<li>Mit welchen Tools und wie konfigurieren wir den Server?<\/li>\n<li>Wie erhalten wir die Einstellungen f\u00fcr einen bestimmten Server?<\/li>\n<\/ul>\n<p><\/p>\n<h3>Wie identifizieren wir den Server, den wir vorbereiten?<\/h3>\n<p>\nDas ist einfach \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>\nHier finden Sie alles, was n\u00f6tig ist: Vendor, Modell, Seriennummer. Wenn Sie sich nicht sicher sind, ob diese Informationen auf allen Servern vorhanden sind, k\u00f6nnen Sie sie anhand der MAC-Adresse identifizieren. Oder beide M\u00f6glichkeiten gleichzeitig, wenn die Vendoren der Server unterschiedlich sind und bei einigen Modellen die Informationen zur Seriennummer einfach fehlen.<\/p>\n<p>Basierend auf den erhaltenen Informationen werden Netzwerkordner mit den Installationsservern verbunden und alles Notwendige (Utilities, Firmware usw.) geladen.<\/p>\n<h3>Mit welchen Tools und wie konfigurieren wir den Server?<\/h3>\n<p>\nIch gebe einige Utilities f\u00fcr Linux f\u00fcr bestimmte Hersteller an. Alle Utilities sind auf den offiziellen Websites der Vendoren verf\u00fcgbar.<\/p>\n<p><img decoding=\"async\" alt=\"Bare-Metal Bereitstellung selbstgemacht: Automatische Servervorbereitung von Grund auf\" src=\"\/wp-content\/uploads\/2020\/03\/fab53d1fa6e9a222ec69248439551ad7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBei den Firmwares denke ich, ist alles klar. Normalerweise werden sie in Form von gepackten ausf\u00fchrbaren Dateien geliefert. Die ausf\u00fchrbare Datei \u00fcberwacht den Firmware-Upgrade-Prozess und gibt einen R\u00fcckgabewert zur\u00fcck.<\/p>\n<p>BIOS und IPMI werden normalerweise \u00fcber Templates konfiguriert. Falls erforderlich, kann das Template vor dem Bootvorgang bearbeitet werden.<\/p>\n<p>Die RAID-Utilities einiger Vendoren k\u00f6nnen ebenfalls \u00fcber ein Template konfiguriert werden. Wenn nicht, muss ein Konfigurationsskript geschrieben werden.<\/p>\n<p>Der Ablauf der RAID-Konfiguration sieht meistens folgenderma\u00dfen aus:<\/p>\n<ul>\n<li>Wir fordern die aktuelle Konfiguration an.<\/li>\n<li>Falls bereits logische Arrays vorhanden sind, l\u00f6schen wir sie.<\/li>\n<li>Wir \u00fcberpr\u00fcfen, welche physischen Festplatten vorhanden sind und wie viele es sind.<\/li>\n<li>Wir erstellen ein neues logisches Array. Den Prozess im Falle eines Fehlers abbrechen.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Wie erhalten wir die Einstellungen f\u00fcr einen bestimmten Server?<\/h3>\n<p>\nAngenommen, die Einstellungen aller Server werden auf dem Installationsserver gespeichert. In diesem Fall m\u00fcssen wir zun\u00e4chst entscheiden, wie die Einstellungen an den Installationsserver \u00fcbertragen werden.<\/p>\n<p>In der Anfangsphase k\u00f6nnen wir mit einfachen Textdateien auskommen. (Zuk\u00fcnftig kann eine Textdatei als Backup-Methode zur \u00dcbertragung der Einstellungen verwendet werden). <\/p>\n<p>Es ist m\u00f6glich, eine Textdatei auf dem Installationsserver zu \"teilen\" und deren Einbindung in das Skript mount.sh hinzuzuf\u00fcgen.<\/p>\n<p>Die Zeilen werden zum Beispiel folgenderma\u00dfen aussehen:<\/p>\n<p><\/p>\n<p>Diese Zeilen werden von einem Ingenieur von seinem Arbeitscomputer in eine Datei \u00fcbertragen. Bei der Konfiguration des Servers werden die Parameter f\u00fcr den jeweiligen Server aus der Datei gelesen.<\/p>\n<p>Perspektivisch ist es jedoch besser, eine Datenbank zur Speicherung der Einstellungen, Zust\u00e4nde und Installationsprotokolle der Server zu verwenden.<\/p>\n<p>Nat\u00fcrlich kommt man nicht ohne eine Datenbank aus, und es muss eine Client-Seite erstellt werden, \u00fcber die die Einstellungen an die Datenbank \u00fcbertragen werden. Dies umzusetzen ist komplizierter als bei einer Textdatei, aber in Wirklichkeit ist es nicht so schwierig, wie es scheint. Eine minimalistische Version des Clients, die einfach Daten an die Datenbank \u00fcbertr\u00e4gt, k\u00f6nnen Sie durchaus selbst schreiben. Und die Client-Software kann sp\u00e4ter weiter verbessert werden (Berichte, Etikettendruck, Versenden von Benachrichtigungen und alles Weitere, was einem einf\u00e4llt).<\/p>\n<p>Wenn wir eine bestimmte Anfrage an die Datenbank stellen und die Seriennummer des Servers angeben, erhalten wir die notwendigen Parameter zur Serverkonfiguration.<\/p>\n<p>Zudem m\u00fcssen wir keine Sperren f\u00fcr den gleichzeitigen Zugriff erfinden, wie es bei einer Textdatei der Fall ist.<\/p>\n<p>Das Konfigurationsprotokoll k\u00f6nnen wir in allen Phasen in die Datenbank schreiben und den Installationsprozess \u00fcber Ereignisse und Flags in den Vorbereitungsphasen kontrollieren.<\/p>\n<p><b>Jetzt wissen wir, wie:<\/p>\n<ul>\n<li>einen Server \u00fcber PXE zu laden;<\/li>\n<li>die Kontrolle an unser Skript zu \u00fcbergeben;<\/li>\n<li>den Server, der vorbereitet werden muss, anhand der Seriennummer zu identifizieren;<\/li>\n<li>den Server mit den entsprechenden Tools zu konfigurieren;<\/li>\n<li>\u00dcbertragung der Einstellungen in die Datenbank des Installationsservers \u00fcber die Client-Seite.<\/li>\n<\/ul>\n<p>\nWir haben herausgefunden, wie:<\/p>\n<ul>\n<li>Der installierte Server erh\u00e4lt die erforderlichen Einstellungen aus der Datenbank;<\/li>\n<li>Der gesamte Vorbereitungsfortschritt wird in der Datenbank festgehalten (Protokolle, Ereignisse, Statusflags).<\/li>\n<\/ul>\n<p><\/b><\/p>\n<h3>Wie steht es um die verschiedenen Arten von installierter Software? Wie installiert man den Hypervisor, kopiert eine VM und konfiguriert alles?<\/h3>\n<p>\nIm Fall der Bereitstellung eines Dateisystemabbildes (Linux) auf Hardware ist alles ziemlich einfach:<\/p>\n<ul>\n<li>Nach der Konfiguration aller Serverkomponenten wird das Abbild bereitgestellt.<\/li>\n<li>Wir installieren den Bootloader Grub.<\/li>\n<li>Wir f\u00fchren Chroot aus und konfigurieren alles, was notwendig ist.<\/li>\n<\/ul>\n<p>\n<b>Wie \u00fcbergibt man die Kontrolle an den Betriebssystem-Installer (am Beispiel von ESXi).<\/b><\/p>\n<ul>\n<li>Wir organisieren die \u00dcbergabe der Kontrolle aus unserem Skript an den Hypervisor-Installer \u00fcber eine Antwortdatei (Kickstart):<\/li>\n<li>Wir l\u00f6schen die aktuellen Partitionen auf der Festplatte.<\/li>\n<li>Wir erstellen eine Partition mit einer Gr\u00f6\u00dfe von 500 MB.<\/li>\n<li>Wir kennzeichnen sie als bootf\u00e4hig.<\/li>\n<li>Wir formatieren sie in FAT32.<\/li>\n<li>Wir kopieren die Installationsdateien von ESXi in das Wurzelverzeichnis.<\/li>\n<li>Wir installieren Syslinux.<\/li>\n<li>Wir kopieren syslinux.cfg nach \/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>Wir kopieren mboot.c32 nach \/syslinux.<\/li>\n<li>In boot.cfg sollte stehen: kernelopt=ks=ftp:\/\/\/ks_esxi.cfg<\/li>\n<li>Wir starten den Server neu.<\/li>\n<\/ul>\n<p>\nNach dem Neustart des Servers wird der ESXi-Installer von seiner Festplatte geladen. Alle erforderlichen Installationsdateien werden in den Speicher geladen, und dann beginnt die Installation von ESXi gem\u00e4\u00df der angegebenen Antwortdatei.<\/p>\n<p>Hier sind einige Zeilen aus der Antwortdatei ks_esxi.cfg:<\/p>\n<pre><code class=\"plaintext\">%firstboot --interpreter=busybox\n\u2026\n# Seriennummer erhalten\n\nSYSSN=$(esxcli hardware platform get | grep Serial | awk -F \" \" '{print $3}')\n\n# IP erhalten\n\nIPADDRT=$(esxcli network ip interface ipv4 get | grep vmk0 | awk -F \" \" '{print $2}')\nLAST_OCTET=$(echo $IPADDRT | awk -F'.' '{print $4}')\n\n# NFS Installationsserver verbinden\n\nesxcli storage nfs add -H is -s \/srv\/nfs_share -v nfsshare1\n\n# Tempor\u00e4re SSH-Einstellungen f\u00fcr die Verwendung des SSH-Clients kopieren\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# ovftool kopieren, um VM jetzt bereitzustellen, k\u00f6nnte sp\u00e4ter n\u00fctzlich sein\n\ncp -R \/vmfs\/volumes\/nfsshare1\/ovftool \/vmfs\/volumes\/datastore1\/\n\n# VM bereitstellen\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# Zeile mit den Einstellungen unseres Servers erhalten\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# Skript zur Netzwerkkonfiguration generieren\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# Parameter guestinfo.esxihost.id festlegen, die Seriennummer angeben\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# Informationen in der Datenbank aktualisieren\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# SSH-Einstellungen zur\u00fcckgeben\n\nrm -rf \/etc\/ssh\nmv \/etc\/ssh.tmp \/etc\/ssh\n\n# Netzwerk konfigurieren und neu starten\n\nesxcli system hostname set --fqdn=esx-${G_NICK}.x5.ru\n\/vmfs\/volumes\/datastore1\/netconf.sh\nreboot\n<\/code><\/pre>\n<p>\nAn dieser Stelle wurde der Hypervisor installiert und konfiguriert, die virtuellen Maschinen wurden kopiert.<\/p>\n<p>Wie konfiguriere ich jetzt die virtuellen Maschinen?<\/p>\n<p>Wir haben ein wenig geschummelt: W\u00e4hrend der Installation haben wir den Parameter guestinfo.esxihost.id = \"$SYSSN\" in der Datei VM1.vmx festgelegt, wobei wir die Seriennummer des physischen Servers angegeben haben.<\/p>\n<p>Jetzt kann die virtuelle Maschine (mit installiertem vmware-tools-Paket) beim Start auf diesen Parameter zugreifen:<\/p>\n<pre><code class=\"plaintext\">ESXI_SN=$(vmtoolsd --cmd \"info-get guestinfo.esxihost.id\")<\/code><\/pre>\n<p>\nDas bedeutet, die VM kann sich identifizieren (sie kennt die Seriennummer des physischen Hosts), eine Anfrage an die Installationsserver-Datenbank stellen und die Einstellungen abrufen, die konfiguriert werden m\u00fcssen. Dies wird in ein Skript gegossen, das beim Start des guestos vm automatisch ausgef\u00fchrt werden soll (aber nur einmal: RunOnce).<\/p>\n<p><b>Jetzt wissen wir, wie:<\/p>\n<ul>\n<li>einen Server \u00fcber PXE zu laden;<\/li>\n<li>die Kontrolle an unser Skript zu \u00fcbergeben;<\/li>\n<li>den Server, der vorbereitet werden muss, anhand der Seriennummer zu identifizieren;<\/li>\n<li>den Server mit den entsprechenden Tools konfigurieren;<\/li>\n<li>die Einstellungen \u00fcber den Client in die Datenbank des Installationsservers \u00fcbertragen;<\/li>\n<li>verschiedene Arten von Software konfigurieren, einschlie\u00dflich der Bereitstellung des ESXi-Hypervisors und der Konfiguration der virtuellen Maschinen (alles automatisch).<\/li>\n<\/ul>\n<p>\nWir haben herausgefunden, wie:<\/p>\n<ul>\n<li>Der installierte Server erh\u00e4lt die erforderlichen Einstellungen aus der Datenbank;<\/li>\n<li>Der gesamte Vorbereitungsfortschritt wird in der Datenbank festgehalten (Protokolle, Ereignisse, Statusflags).<\/li>\n<\/ul>\n<p><\/b><br \/>\n<u><b>Fazit:<\/b><\/u><\/p>\n<p>Ich denke, die Einzigartigkeit dieser L\u00f6sung liegt in der Flexibilit\u00e4t, Einfachheit, ihren M\u00f6glichkeiten und Universalit\u00e4t.<\/p>\n<p>Bitte teilen Sie Ihre Meinung in den Kommentaren mit.<br \/>\n<br \/>Quelle: <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 4.9.10 - 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. \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\" \/>\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\/de\/blog\/administrirovanie\/bare-metal-provisioning-svoimi-rukami-ili-avtomaticheskaya-podgotovka-serverov-s-nulya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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. \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/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-Provisionierung selbst gemacht oder automatische Serverbereitstellung von Grund auf | ProHoster","description":"Hallo, ich bin Denis und eines meiner T\u00e4tigkeitsfelder ist die Entwicklung von Infrastruktur\u00adl\u00f6sungen bei X5. Heute m\u00f6chte ich mit Ihnen teilen, wie man mit \u00f6ffentlich verf\u00fcgbaren Werkzeugen ein automatisches System zur Vorbereitung von Servern aufbauen kann. Meiner Meinung nach ist dies eine interessante, einfache und flexible L\u00f6sung. Unter Vorbereitung verstehe ich: einen neuen Server aus der Verpackung zu einem vollst\u00e4ndig konfigurierten Server zu machen.","canonical_url":"https:\/\/prohoster.info\/de\/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":"de_DE","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. \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","og:url":"https:\/\/prohoster.info\/de\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/74905","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=74905"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/74905\/revisions"}],"predecessor-version":[{"id":158713,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/74905\/revisions\/158713"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/74906"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=74905"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=74905"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=74905"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}