{"id":52367,"date":"2019-11-07T00:00:00","date_gmt":"2019-11-06T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/pereshel-s-terraform-na-cloudformation-i-pozhalel"},"modified":"2020-02-18T14:00:04","modified_gmt":"2020-02-18T11:00:04","slug":"pereshel-s-terraform-na-cloudformation-i-pozhalel","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/pereshel-s-terraform-na-cloudformation-i-pozhalel","title":{"rendered":"Ich bin von Terraform auf CloudFormation umgestiegen \u2013 und habe es bereut.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Infrastruktur als Code im wiederholbaren Textformat darzustellen, ist eine bew\u00e4hrte Praxis f\u00fcr Systeme, die sich nicht vor einem Mouse-Over scheuen. Diese Praxis wird auch genannt \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Infrastructure_as_code\">Infrastructure as Code<\/a><\/noindex>, und bisher gibt es zwei beliebte Werkzeuge, um dies zu realisieren, besonders bei AWS: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.terraform.io\/\">Terraform<\/a><\/noindex> und <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/cloudformation\/\">CloudFormation<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ich bin von Terraform auf CloudFormation umgestiegen \u2013 und habe es bereut.\" src=\"\/wp-content\/uploads\/2019\/11\/e33084fb81ca06107b341eef01e69adc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Ich vergleiche die Erfahrungen mit Terraform und CloudFormation<\/em><\/p>\n<p><\/p>\n<p>Bevor ich zu <noindex><a rel=\"nofollow\" href=\"https:\/\/www.twitch.tv\/\">Twitch<\/a><\/noindex> (auch bekannt als <noindex><a rel=\"nofollow\" href=\"https:\/\/www.businessinsider.com\/amazon-buys-twitch-2014-8\">Amazon Jr.<\/a><\/noindex>) kam, arbeitete ich <noindex><a rel=\"nofollow\" href=\"https:\/\/www.signalfx.com\/\">in einem Startup<\/a><\/noindex> und nutzte drei Jahre lang Terraform. An meinem neuen Arbeitsplatz verwendete ich ebenfalls intensiv Terraform, aber schlie\u00dflich setzte das Unternehmen auf alles aus der Amazon-Welt, einschlie\u00dflich CloudFormation. Ich entwickelte eifrig Best Practices f\u00fcr beide Werkzeuge und setzte sie in sehr komplexen Arbeitsabl\u00e4ufen auf Unternehmensebene ein. Nachdem ich die Konsequenzen des Wechsels von Terraform zu CloudFormation durchdacht hatte, stellte ich fest, dass Terraform wahrscheinlich die beste Wahl f\u00fcr die Organisation ist.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"terraform-uzhasnyy\">Terraform ist schrecklich<\/h2>\n<p><\/p>\n<h3 id=\"beta-versiya-po\">Beta-Software<\/h3>\n<p><\/p>\n<p>Terraform hat noch nicht einmal die Version 1.0 erreicht, und das ist ein guter Grund, es nicht zu verwenden. Seitdem ich es zum ersten Mal ausprobiert habe, hat es sich stark ver\u00e4ndert, aber damals war noch <code>terraform apply<\/code> Der Dienst hat nach ein paar Updates oder einfach nach einigen Jahren Nutzung oft versagt. Man k\u00f6nnte sagen: \u201eJetzt ist alles anders\u201c, aber\u2026 so h\u00f6rt man das stets, oder? Es gibt \u00c4nderungen, die nicht mit vorherigen Versionen kompatibel sind, auch wenn sie sinnvoll sind. Man hat sogar das Gef\u00fchl, dass die Syntax und die Abstraktionen der Ressourcenverwaltung nun passen. Das Tool scheint wirklich besser geworden zu sein, aber\u2026 :-0<\/p>\n<p><\/p>\n<p>Auf der anderen Seite hat AWS gute Arbeit geleistet, um die Kompatibilit\u00e4t mit vorherigen Versionen zu wahren. Wahrscheinlich, weil ihre Dienste oft gr\u00fcndlich innerhalb der Organisation getestet werden, bevor sie umbenannt und ver\u00f6ffentlicht werden. Daher ist \u201egut gearbeitet\u201c noch schwach ausgedr\u00fcckt. Die Unterst\u00fctzung der Kompatibilit\u00e4t mit vorherigen API-Versionen in einem so vielseitigen und komplexen System wie AWS ist unglaublich herausfordernd. Jeder, der schon einmal \u00f6ffentliche APIs betreut hat, die so weit verbreitet sind, sollte verstehen, wie schwierig es ist, das \u00fcber viele Jahre hinweg zu tun. Das Verhalten von CloudFormation hat sich in meinen Erinnerungen \u00fcber die Jahre hinweg nicht ge\u00e4ndert.<\/p>\n<p><\/p>\n<h3 id=\"znakomsya-noga-eto-pulya\">Lernt kennen, Fu\u00df\u2026 das ist eine Kugel.<\/h3>\n<p><\/p>\n<p>Soweit ich wei\u00df, kann man eine Ressource entfernen. <strong>fremd<\/strong> Es ist nicht m\u00f6glich, einen CloudFormation-Stack aus seinem CF-Stack zu extrahieren. \u00c4hnlich verh\u00e4lt es sich mit Terraform. Es erm\u00f6glicht das Importieren bestehender Ressourcen in seinen Stack. Diese Funktion ist wirklich beeindruckend, aber mit gro\u00dfer Macht kommt auch gro\u00dfe Verantwortung. Sobald eine Ressource im Stack ist, kann sie nicht mehr entfernt oder ver\u00e4ndert werden, w\u00e4hrend man mit dem Stack arbeitet. Einmal gab es ein Vorfall. Auf der Website von Twitch importierte jemand, ohne b\u00f6se Absichten, versehentlich eine Sicherheitsgruppe von AWS in seinen eigenen Terraform-Stack. Er gab ein paar Befehle ein und\u2026 die Sicherheitsgruppe (samt dem eingehenden Verkehr) war verschwunden.<\/p>\n<p><\/p>\n<h2 id=\"terraform-velikiy\">Terraform ist gro\u00dfartig<\/h2>\n<p><\/p>\n<h3 id=\"vosstanovlenie-iz-nepolnyh-sostoyaniy\">Wiederherstellung aus unvollst\u00e4ndigen Zust\u00e4nden<\/h3>\n<p><\/p>\n<p>Manchmal kann CloudFormation nicht vollst\u00e4ndig von einem Zustand in einen anderen \u00fcbergehen. In diesem Fall wird es versuchen, zum vorherigen Zustand zur\u00fcckzukehren. Schade, dass dies nicht immer m\u00f6glich ist. Es kann be\u00e4ngstigend sein, das, was dabei herauskommt, zu debuggen \u2013 man wei\u00df nie, ob sich CloudFormation freut, dass es gehackt wird \u2013 auch wenn es nur zur Reparatur dient. Ob es gelingt, zum vorherigen Zustand zur\u00fcckzukehren, kann es nicht richtig bestimmen und h\u00e4ngt standardm\u00e4\u00dfig stundenlang auf in der Hoffnung auf ein Wunder.<\/p>\n<p><\/p>\n<p>Terraform hingegen ist dazu in der Lage, sich nach fehlgeschlagenen \u00dcberg\u00e4ngen eleganter zu erholen und bietet ein erweitertes Debugging-Toolkit.<\/p>\n<p><\/p>\n<h3 id=\"bolee-yasnye-izmeneniya-v-sostoyaniya-dokumenta\">Eindeutigere \u00c4nderungen im Dokumentzustand<\/h3>\n<p><\/p>\n<blockquote><p>\u201eOkay, Lastenverteiler, du ver\u00e4nderst dich. Aber wie?\u201c<\/p>\n<p>\u2014 ein besorgter Ingenieur, bereit, den Button \u201eAkzeptieren\u201c zu dr\u00fccken.<\/p><\/blockquote>\n<p>Manchmal muss ich einige Anpassungen am Lastenausgleich im CloudFormation-Stack vornehmen \u2013 zum Beispiel die Portnummer hinzuf\u00fcgen oder die Sicherheitsgruppe \u00e4ndern. CloudFormation zeigt \u00c4nderungen schwach an. Ich pr\u00fcfe die YAML-Datei zehnmal, um sicherzustellen, dass ich nichts Wichtiges gel\u00f6scht und nichts \u00dcberfl\u00fcssiges hinzugef\u00fcgt habe.<\/p>\n<p><\/p>\n<p>In dieser Hinsicht ist Terraform deutlich transparenter. Manchmal ist er sogar zu transparent (sprich: nervig). Gl\u00fccklicherweise wurde in die letzte Version eine verbesserte \u00c4nderungsanzeige eingef\u00fchrt \u2013 jetzt ist genau ersichtlich, was sich \u00e4ndert.<\/p>\n<p><\/p>\n<h3 id=\"gibkost\">Flexibilit\u00e4t<\/h3>\n<p><\/p>\n<blockquote><p>Schreiben Sie Software r\u00fcckw\u00e4rts.<\/p><\/blockquote>\n<p>Um es direkt zu sagen, das wichtigste Unterscheidungsmerkmal langlebiger Software ist die F\u00e4higkeit, sich an Ver\u00e4nderungen anzupassen. Jede Software sollte man von hinten her denken. Oft habe ich den Fehler gemacht, einen \u201eeinfachen\u201c Service zu w\u00e4hlen und ihn dann in einen einzigen CloudFormation- oder Terraform-Stack zu integrieren. Und wie es nun einmal so ist, stellte sich Monate sp\u00e4ter heraus, dass ich es ganz falsch verstanden hatte und der Service in Wirklichkeit gar nicht so einfach war! Also musste ich irgendwie einen gro\u00dfen Stack in kleine Komponenten aufteilen. Wenn man mit CloudFormation arbeitet, ist das nur m\u00f6glich, wenn man zun\u00e4chst den bestehenden Stack neu erstellt, und das mache ich mit meinen Datenbanken nicht. Terraform hingegen erlaubte es mir, den Stack zu zerlegen und in verst\u00e4ndlichere kleinere Teile zu zergliedern.<\/p>\n<p><\/p>\n<h3 id=\"moduli-v-git\">Module in git<\/h3>\n<p><\/p>\n<p>Es ist viel einfacher, Terraform-Code zwischen mehreren Stacks zu teilen als CloudFormation-Code. Mit Terraform kann man den Code in ein Git-Repository legen und \u00fcber semantische Versionskontrolle darauf zugreifen. Jeder, der Zugriff auf dieses Repository hat, kann den gemeinsamen Code erneut nutzen. Das \u00c4quivalent in CloudFormation ist S3, aber es bietet nicht die gleichen Vorteile und es gibt keinen Grund, warum wir Git zugunsten von S3 \u00fcberhaupt aufgeben sollten.<\/p>\n<p><\/p>\n<p>Das Unternehmen wuchs und die F\u00e4higkeit, gemeinsame Stacks zu teilen, erreichte einen kritischen Punkt. Mit Terraform funktioniert das ganz einfach und nat\u00fcrlich, w\u00e4hrend CloudFormation Sie durch mehrere H\u00fcrden springen l\u00e4sst, bevor Sie etwas \u00c4hnliches zum Laufen bringen k\u00f6nnen.<\/p>\n<p><\/p>\n<h3 id=\"operations-as-code\">Operations als Code<\/h3>\n<p><\/p>\n<blockquote><p>\u201eLass uns das einfach skripten.\u201c<\/p>\n<p>\u2014 Ingenieur drei Jahre, bevor Terraform das Fahrrad erfand.<\/p><\/blockquote>\n<p>Wenn es um Softwareentwicklung geht, ist Go oder ein Java-Programm nicht nur Code.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ich bin von Terraform auf CloudFormation umgestiegen \u2013 und habe es bereut.\" src=\"\/wp-content\/uploads\/2019\/11\/a5c61fd318b9b5aa62ebb69e38ca1b0e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Code als Code<\/em><\/p>\n<p><\/p>\n<p>Es gibt schlie\u00dflich auch die Infrastruktur, auf der es l\u00e4uft.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ich bin von Terraform auf CloudFormation umgestiegen \u2013 und habe es bereut.\" src=\"\/wp-content\/uploads\/2019\/11\/301c0323baa18563f05503e701af069b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Infrastructure as Code<\/em><\/p>\n<p><\/p>\n<p>Aber woher kommt sie? Wie wird sie \u00fcberwacht? Wo wohnt Ihr Code? Brauchen die Entwickler Zugriffserlaubnis?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ich bin von Terraform auf CloudFormation umgestiegen \u2013 und habe es bereut.\" src=\"\/wp-content\/uploads\/2019\/11\/5cb0b6f720682b7bb6d5f485287b618b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Operations als Code<\/em><\/p>\n<p><\/p>\n<blockquote><p>Softwareentwickler zu sein bedeutet nicht nur, Code zu schreiben.<\/p><\/blockquote>\n<p>Nicht nur AWS: Sie nutzen mit Sicherheit auch Dienste anderer Anbieter wie SignalFx, PagerDuty oder GitHub. Vielleicht haben Sie einen internen Jenkins-Server f\u00fcr CI\/CD oder ein internes Grafana-Dashboard zur \u00dcberwachung. Infra as Code wird aus verschiedenen Gr\u00fcnden ausgew\u00e4hlt, und jeder ist ebenso wichtig f\u00fcr alles, was mit Software zu tun hat.<\/p>\n<p><\/p>\n<p>Als ich bei Twitch arbeitete, haben wir die Services in gemischten Embedded-Systemen und den AWS-Systemen von Amazon beschleunigt. Wir haben zahlreiche Mikrodienste erstellt und gewartet, was die Betriebskosten erh\u00f6ht hat. Die Diskussionen liefen ungef\u00e4hr so ab:<\/p>\n<p><\/p>\n<ul>\n<li><strong>Ich<\/strong>: Wow, das ist ganz sch\u00f6n viel Aufwand, um einen einzelnen Mikrodienst zu beschleunigen. Ich werde diese ganze Sache brauchen, um ein AWS-Konto zu erstellen (wir haben auf 2 Konten aufgestockt, <strong>Mikrodienst<\/strong>), danach diese \u2014 f\u00fcr die Benachrichtigungseinstellungen, dann diese \u2014 f\u00fcr das Code-Repository, und diese hier \u2014 f\u00fcr die Liste der E-Mail-Adressen, und diese&#8230;<\/li>\n<li><strong>Lead<\/strong>: Lass uns das skripten und gut ist.<\/li>\n<li><strong>Ich<\/strong>: Alles klar, aber das Skript selbst wird sich \u00e4ndern. Es wird eine M\u00f6glichkeit ben\u00f6tigt, um zu \u00fcberpr\u00fcfen, dass all diese integrierten Amazon-Komponenten aktuell sind.<\/li>\n<li><strong>Lead<\/strong>: Klingt gut. Daf\u00fcr schreiben wir ein Skript.<\/li>\n<li><strong>Ich<\/strong>: Super! Das Skript wird sicher auch Parameter ben\u00f6tigen. Wird es die akzeptieren?<\/li>\n<li><strong>Lead<\/strong>: Klar wird es das akzeptieren, was denkst du denn?<\/li>\n<li><strong>Ich<\/strong>: Der Prozess k\u00f6nnte sich \u00e4ndern, die R\u00fcckw\u00e4rtskompatibilit\u00e4t geht verloren. Wir brauchen eine Art semantische Versionskontrolle.<\/li>\n<li><strong>Lead<\/strong>: Tolle Idee!<\/li>\n<li><strong>Ich<\/strong>: Werkzeuge k\u00f6nnen manuell im Benutzerinterface ge\u00e4ndert werden. Wir ben\u00f6tigen einen Weg, um dies zu \u00fcberpr\u00fcfen und zu korrigieren.<\/li>\n<\/ul>\n<p><\/p>\n<p><em>&#8230;3 Jahre sp\u00e4ter:<\/em><\/p>\n<p><\/p>\n<ul>\n<li><strong>Lead<\/strong>: Und wir haben Terraform erstellt.<\/li>\n<\/ul>\n<p><\/p>\n<p>Die Moral der Geschichte ist: Selbst wenn Sie <strong>bis \u00fcber beide Ohren in allem, was Amazon betrifft<\/strong>nutzen Sie dennoch etwas, das nicht von AWS stammt, und diese Dienste haben einen Zustand, der Sprache zur Konfiguration verwendet, um diesen Zustand zu synchronisieren.<\/p>\n<p><\/p>\n<h3 id=\"cloudformation-lambda-vs-git-moduli-terraform\">CloudFormation Lambda vs. Git-Module Terraform<\/h3>\n<p><\/p>\n<p>Lambda ist die L\u00f6sung von CloudFormation f\u00fcr die Benutzerlogik. Mit Lambda k\u00f6nnen Sie <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.aws.amazon.com\/AWSCloudFormation\/latest\/UserGuide\/macros-example.html\">Makros erstellen<\/a><\/noindex> oder <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.aws.amazon.com\/AWSCloudFormation\/latest\/UserGuide\/walkthrough-custom-resources-lambda-lookup-amiids.html\">benutzerdefinierte Ressourcen<\/a><\/noindex>. Dieser Ansatz bringt zus\u00e4tzliche Herausforderungen mit sich, die im semantischen Versionskontrollsystem von Git bei Terraform nicht auftreten. F\u00fcr mich ist das dr\u00e4ngendste Problem die Verwaltung von Berechtigungen f\u00fcr all diese benutzerdefinierten Lambdas (und das sind Dutzende von AWS-Konten). Eine weitere wichtige Frage war die nach dem Henne-Ei-Prinzip: Was war zuerst \u2014 der Code oder die Lambda? Diese Funktion vereint Infrastruktur und Code, und sie muss selbst \u00fcberwacht und aktualisiert werden. Das letzte Problem, das es zu bew\u00e4ltigen galt, war die Schwierigkeit, semantische Aktualisierungen von Lambda-Code\u00e4nderungen durchzuf\u00fchren; es musste sichergestellt werden, dass die Stack-Aktionen ohne explizite Befehle zwischen den Ausf\u00fchrungen unver\u00e4ndert blieben.<\/p>\n<p><\/p>\n<p>Ich erinnere mich, dass ich einmal einen Canary-Deployment f\u00fcr die Elastic Beanstalk-Umgebung mit einem klassischen Lastenausgleich erstellen wollte. Es w\u00e4re am einfachsten gewesen, ein zweites Deployment f\u00fcr EB neben der Produktionsumgebung zu erstellen, und einen weiteren Schritt zu unternehmen, indem ich die automatisch skalierbare Gruppe des Canary-Deployments mit dem LB-Deployment in der Produktionsumgebung kombinierte. Und da Terraform verwendet <noindex><a rel=\"nofollow\" href=\"https:\/\/www.terraform.io\/docs\/providers\/aws\/r\/elastic_beanstalk_environment.html#autoscaling_groups\">ASG beantalk als Ausgabe<\/a><\/noindex>, das erfordert 4 zus\u00e4tzliche Codezeilen in Terraform. Als ich nach einer vergleichbaren L\u00f6sung in CloudFormation fragte, wurde ich auf ein ganzes Git-Repository mit einem Bereitstellungspipeline und mehr verwiesen: und das alles nur wegen 4 armen Zeilen Terraform-Code.<\/p>\n<p><\/p>\n<h3 id=\"on-luchshe-obnaruzhivaet-dreyf\">Es erkennt Drift besser<\/h3>\n<p><\/p>\n<blockquote><p>Stellen Sie sicher, dass die Realit\u00e4t den Erwartungen entspricht.<\/p><\/blockquote>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/blogs\/aws\/new-cloudformation-drift-detection\/\">Drifterkennung<\/a><\/noindex> ist eine sehr leistungsstarke Funktion von Operations as Code, da sie hilft sicherzustellen, dass die Realit\u00e4t den Erwartungen entspricht. Sie ist sowohl mit CloudFormation als auch mit Terraform verf\u00fcgbar. Aber mit zunehmender Gr\u00f6\u00dfe des Stacks gab es bei der Drifterkennung in CloudFormation immer mehr Fehlalarme.<\/p>\n<p><\/p>\n<p>Mit Terraform haben Sie viel fortschrittlichere Lifecycle-Hooks zur Drift-Erkennung. Zum Beispiel geben Sie den Befehl <noindex><a rel=\"nofollow\" href=\"https:\/\/www.terraform.io\/docs\/configuration\/resources.html#ignore_changes\">ignore_changes<\/a><\/noindex> direkt in der ECS-Aufgabenbeschreibung ein, wenn Sie \u00c4nderungen an der Beschreibung einer bestimmten Aufgabe ignorieren m\u00f6chten, ohne \u00c4nderungen an der gesamten ECS-Bereitstellung zu ignorieren.<\/p>\n<p><\/p>\n<h2 id=\"cdk-i-buduschee-cloudformation\">CDK und die Zukunft von CloudFormation<\/h2>\n<p><\/p>\n<p>CloudFormation ist in gro\u00dfen, inter-infrastrukturellen Ma\u00dfst\u00e4ben schwierig zu handhaben. Viele dieser Schwierigkeiten sind bekannt, und das Werkzeug ben\u00f6tigt Dinge wie <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.aws.amazon.com\/en_pv\/cdk\/latest\/guide\/home.html\">aws-cdk<\/a><\/noindex>, Struktur zur Definition von Cloud-Infrastruktur im Code und ihrer Implementierung \u00fcber AWS CloudFormation. Es wird interessant sein zu sehen, was die Zukunft f\u00fcr AWS CDK bereith\u00e4lt, aber es wird schwer sein, mit den anderen Vorteilen von Terraform zu konkurrieren; um CloudFormation wettbewerbsf\u00e4hig zu machen, sind umfassende \u00c4nderungen erforderlich.<\/p>\n<p><\/p>\n<h3 id=\"chtoby-terraform-ne-razocharoval\">Damit Terraform nicht entt\u00e4uscht.<\/h3>\n<p><\/p>\n<blockquote><p>Das ist doch &#171;Infrastructure as Code&#187;, nicht &#171;as Text&#187;.<\/p><\/blockquote>\n<p>Mein erstes Eindr\u00fcck von Terraform war eher negativ. Ich glaube, ich habe den Ansatz einfach nicht verstanden. Fast alle Ingenieure nehmen es zun\u00e4chst unfreiwillig als Textformat wahr, das in die gew\u00fcnschte Infrastruktur umgewandelt werden muss. DAS IST NICHT NOTWENDIG.<\/p>\n<p><\/p>\n<h3 id=\"propisnye-istiny-horoshey-razrabotki-po-otnosyatsya-i-k-terraform\">Die grundlegenden Prinzipien guter Softwareentwicklung gelten auch f\u00fcr Terraform.<\/h3>\n<p><\/p>\n<p>Ich habe gesehen, wie viele bew\u00e4hrte Praktiken f\u00fcr die Erstellung von gutem Code in Terraform ignoriert werden. Sie haben jahrelang gelernt, um ein guter Programmierer zu werden. Verwerfen Sie dieses Wissen nicht einfach, nur weil Sie mit Terraform arbeiten. Die grundlegenden Prinzipien guter Softwareentwicklung gelten auch f\u00fcr Terraform.<\/p>\n<p><\/p>\n<h3 id=\"kak-uzh-kod-i-ne-zadokumentirovat\">Wie kann man Code schreiben und ihn nicht dokumentieren?<\/h3>\n<p><\/p>\n<p>Ich bin auf riesige Terraform-Stacks gesto\u00dfen, die v\u00f6llig ohne Dokumentation auskamen. Wie kann man Code ohne jegliche Dokumentation schreiben? F\u00fcgen Sie Dokumentationen hinzu, die erkl\u00e4rt, was Ihr <strong>Code<\/strong> Terraform (der Schwerpunkt liegt hier auf dem Wort \u201eCode\u201c), warum dieser Abschnitt so wichtig ist und was Sie damit tun.<\/p>\n<p><\/p>\n<h3 id=\"kak-mozhno-razvorachivat-servisy-kotorye-nekogda-byli-odnoy-bolshoy-funkciey-main\">Wie k\u00f6nnen Sie Dienste bereitstellen, die fr\u00fcher eine gro\u00dfe Funktion in der main() waren?<\/h3>\n<p><\/p>\n<p>Ich habe sehr komplexe Terraform-Stacks gesehen, die als eine einzige Modulstruktur pr\u00e4sentiert wurden. Warum erstellen wir Software nicht so? Warum zerlegen wir gro\u00dfe Funktionen in kleinere? Dieselben Antworten gelten auch f\u00fcr Terraform. Wenn Ihr Modul zu gro\u00df ist, sollten Sie es in kleinere Module aufteilen.<\/p>\n<p><\/p>\n<h3 id=\"razve-vasha-kompaniya-ne-polzuetsya-bibliotekami\">Verwendet Ihr Unternehmen nicht Bibliotheken?<\/h3>\n<p><\/p>\n<p>Ich habe gesehen, wie Ingenieure, w\u00e4hrend sie ein neues Projekt mit Terraform vorantrieben, einfach gro\u00dfe Teile von anderen Projekten kopierten und in ihre eigenen einf\u00fcgten, und dann daran herumwerkten, bis es funktionierte. W\u00fcrden Sie in Ihrem Unternehmen so mit \u201eLive\u201c-Code arbeiten? Wir verwenden doch nicht ohne Grund Bibliotheken. Ja, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=PAAkCSZUG1c&amp;t=9m28s\">nicht alles sollte eine Bibliothek sein,<\/a><\/noindex> aber wo w\u00e4ren wir ohne gemeinsame Bibliotheken im Grunde genommen?!<\/p>\n<p><\/p>\n<h3 id=\"razve-vy-ne-polzuetes-pep8-ili-gofmt\">Verwenden Sie nicht PEP8 oder gofmt?<\/h3>\n<p><\/p>\n<p>In den meisten Programmiersprachen gibt es ein anerkanntes Standardformatierungsschema. In Python ist es PEP8. In Go \u2013 gofmt. Terraform hat sein eigenes: <code>terraform fmt<\/code>. Viel Spa\u00df damit! <\/p>\n<p><\/p>\n<h3 id=\"vy-stanete-polzovatsya-react-ne-znaya-javascript\">W\u00fcrden Sie React verwenden, ohne JavaScript zu kennen?<\/h3>\n<p><\/p>\n<p>Terraform-Module k\u00f6nnen einige Teile Ihrer komplexen Infrastruktur vereinfachen, aber das bedeutet nicht, dass Sie die Grundlagen nicht verstehen m\u00fcssen. M\u00f6chten Sie Terraform richtig nutzen, ohne die Ressourcen zu verstehen? Das wird schwierig: die Zeit vergeht, und Sie werden Terraform nicht meistern.<\/p>\n<p><\/p>\n<h3 id=\"vy-kodite-singltonami-ili-vnedryaya-zavisimosti\">Programmieren Sie mit Singletons oder durch Dependency Injection?<\/h3>\n<p><\/p>\n<p>Dependency Injection ist eine weithin anerkannte Best Practice in der Softwareentwicklung, die von Singletons bevorzugt wird. Wie kommt das in Terraform zum Tragen? Ich habe Terraform-Module gesehen, die auf den Remote-Status angewiesen sind. Anstatt Module zu schreiben, die aus dem Remote-Status herauslesen, erstellen Sie ein Modul, das Parameter akzeptiert. \u00dcbergeben Sie diese Parameter dann an das Modul.<\/p>\n<p><\/p>\n<h3 id=\"vashi-biblioteki-delayut-desyat-veschey-horosho-ili-odnu---otlichno\">Machen Ihre Bibliotheken zehn Dinge gut oder eine Sache ausgezeichnet?<\/h3>\n<p><\/p>\n<p>Bibliotheken, die sich auf eine einzige Aufgabe konzentrieren, funktionieren am besten. Anstatt gro\u00dfe Terraform-Module zu schreiben, die versuchen, alles gleichzeitig zu erledigen, teilen Sie sie in Teile auf, die jeweils eine Sache gut k\u00f6nnen. Kombinieren Sie dann diese Teile nach Bedarf.<\/p>\n<p><\/p>\n<h3 id=\"kak-vy-proizvodite-izmeneniya-v-bibliotekah-bez-obratnoy-sovmestimosti\">Wie nehmen Sie \u00c4nderungen an Bibliotheken ohne Abw\u00e4rtskompatibilit\u00e4t vor?<\/h3>\n<p><\/p>\n<p>Ein allgemeines Terraform-Modul ben\u00f6tigt wie jede Bibliothek einen Weg, um Benutzer \u00fcber \u00c4nderungen ohne Abw\u00e4rtskompatibilit\u00e4t zu informieren. Solche \u00c4nderungen in Bibliotheken sind \u00e4rgerlich, und ebenso \u00e4rgerlich sind \u00c4nderungen ohne Abw\u00e4rtskompatibilit\u00e4t in Terraform-Modulen. Es wird empfohlen, Git-Tags und Semver bei der Verwendung von Terraform-Modulen zu verwenden.<\/p>\n<p><\/p>\n<h3 id=\"proizvodstvennyy-servis-zapuschen-u-vas-na-noutbuke-ili-v-datacentre\">L\u00e4uft Ihr Produktionsservice auf Ihrem Laptop oder im Rechenzentrum?<\/h3>\n<p><\/p>\n<p>Hashicorp bietet Werkzeuge wie <noindex><a rel=\"nofollow\" href=\"https:\/\/www.terraform.io\/docs\/cloud\/index.html\">terraform cloud<\/a><\/noindex> zur Ausf\u00fchrung Ihres Terraform. Diese zentralisierten Dienste erleichtern das Management, die \u00dcberpr\u00fcfung und die Genehmigung von Terraform-\u00c4nderungen.<\/p>\n<p><\/p>\n<h3 id=\"razve-vy-ne-pishete-testy\">Schreiben Sie keine Tests?<\/h3>\n<p><\/p>\n<p>Ingenieure erkennen an, dass Code getestet werden muss, ignorieren jedoch oft die Pr\u00fcfungen, w\u00e4hrend sie mit Terraform arbeiten. F\u00fcr die Infrastruktur kann das zu t\u00fcckischen Situationen f\u00fchren. Ich empfehle, \u201eTests\u201c oder \u201eBeispiele\u201c von Stacks zu erstellen, die mit Modulen verwendet werden k\u00f6nnen, die korrekt deployt werden k\u00f6nnen, um sie w\u00e4hrend der CI\/CD zu \u00fcberpr\u00fcfen.<\/p>\n<p><\/p>\n<h3 id=\"terraform-i-mikroservisy\">Terraform und Mikrodienste<\/h3>\n<p><\/p>\n<blockquote><p>Das Leben und die Zukunft von Unternehmen, die auf Mikrodiensten basieren, h\u00e4ngt von der Geschwindigkeit, Aktualisierung und Zerst\u00f6rung neuer Mikrodienst-Produktionsstacks ab.<\/p><\/blockquote>\n<p>Das am h\u00e4ufigsten genannte negative Merkmal von Mikrodienstarchitekturen, dem sich kaum entkommen l\u00e4sst, betrifft die Arbeitsweise und nicht den Code. Wenn man Terraform nur als Werkzeug betrachtet, um die infrastrukturelle Seite der Mikrodienstarchitektur zu automatisieren, beraubt man sich der echten Vorteile dieses Systems. Heutzutage ist bereits alles \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=HcmPi7-IVQo\">alles als Code<\/a><\/noindex>.<\/p>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/474546\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u0434\u0430 \u0432 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u2014 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043b\u0443\u0447\u0448\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043c\u044b\u0448\u0435\u0432\u043e\u0437\u0438\u0442\u044c. \u0417\u0430 \u044d\u0442\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439 \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u043b\u043e\u0441\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u2014 Infrastructure as Code, \u0438 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u0434\u043b\u044f \u0435\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u0438\u044f, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 AWS, \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430: Terraform \u0438 CloudFormation. \u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e \u043e\u043f\u044b\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Terraform \u0438 CloudFormation \u0414\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0430 \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-52367","post","type-post","status-publish","format-standard","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\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u0434\u0430 \u0432 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u2014 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043b\u0443\u0447\u0448\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043c\u044b\u0448\u0435\u0432\u043e\u0437\u0438\u0442\u044c. \u0417\u0430 \u044d\u0442\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439 \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u043b\u043e\u0441\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u2014 Infrastructure as Code, \u0438 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u0434\u043b\u044f \u0435\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u0438\u044f, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 AWS, \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430: Terraform \u0438 CloudFormation. \u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e \u043e\u043f\u044b\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Terraform \u0438 CloudFormation \u0414\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0430 \u0432\" \/>\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\/pereshel-s-terraform-na-cloudformation-i-pozhalel\" \/>\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\udd47\u041f\u0435\u0440\u0435\u0448\u0435\u043b \u0441 Terraform \u043d\u0430 CloudFormation \u2014 \u0438 \u043f\u043e\u0436\u0430\u043b\u0435\u043b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u0434\u0430 \u0432 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u2014 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043b\u0443\u0447\u0448\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043c\u044b\u0448\u0435\u0432\u043e\u0437\u0438\u0442\u044c. \u0417\u0430 \u044d\u0442\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439 \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u043b\u043e\u0441\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u2014 Infrastructure as Code, \u0438 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u0434\u043b\u044f \u0435\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u0438\u044f, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 AWS, \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430: Terraform \u0438 CloudFormation. \u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e \u043e\u043f\u044b\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Terraform \u0438 CloudFormation \u0414\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0430 \u0432\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/pereshel-s-terraform-na-cloudformation-i-pozhalel\" \/>\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=\"2019-11-06T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:00:04+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\udd47 Von Terraform zu CloudFormation gewechselt \u2013 und es bereut | ProHoster","description":"Infrastruktur als Code in einem wiederholbaren Textformat darzustellen, ist eine bew\u00e4hrte Vorgehensweise f\u00fcr Systeme, die einfach zu handhaben ist. Dieser Ansatz wird als Infrastructure as Code bezeichnet, und derzeit gibt es zwei beliebte Werkzeuge daf\u00fcr, insbesondere in AWS: Terraform und CloudFormation. Ich vergleiche meine Erfahrungen mit Terraform und CloudFormation vor meinem Wechsel zu","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/pereshel-s-terraform-na-cloudformation-i-pozhalel","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\udd47\u041f\u0435\u0440\u0435\u0448\u0435\u043b \u0441 Terraform \u043d\u0430 CloudFormation \u2014 \u0438 \u043f\u043e\u0436\u0430\u043b\u0435\u043b | ProHoster","og:description":"\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u0434\u0430 \u0432 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u2014 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043b\u0443\u0447\u0448\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043c\u044b\u0448\u0435\u0432\u043e\u0437\u0438\u0442\u044c. \u0417\u0430 \u044d\u0442\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439 \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u043b\u043e\u0441\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u2014 Infrastructure as Code, \u0438 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u0434\u043b\u044f \u0435\u0435 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u0438\u044f, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 AWS, \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430: Terraform \u0438 CloudFormation. \u0421\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e \u043e\u043f\u044b\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Terraform \u0438 CloudFormation \u0414\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0430 \u0432","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/pereshel-s-terraform-na-cloudformation-i-pozhalel","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":"2019-11-06T21:00:00+00:00","article:modified_time":"2020-02-18T11:00:04+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"52367","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":"2026-01-24 03:23:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:44:44","updated":"2026-01-24 03:23:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/52367","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=52367"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/52367\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=52367"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=52367"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=52367"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}