{"id":15020,"date":"2025-11-08T18:24:32","date_gmt":"2025-11-08T17:24:32","guid":{"rendered":"https:\/\/webhosting.de\/automatisierte-infrastruktur-provisionierung-terraform-ansible-setup-modular\/"},"modified":"2025-11-08T18:24:32","modified_gmt":"2025-11-08T17:24:32","slug":"automatiseret-tilvejebringelse-af-infrastruktur-terraform-ansible-setup-modulaer","status":"publish","type":"post","link":"https:\/\/webhosting.de\/da\/automatisierte-infrastruktur-provisionierung-terraform-ansible-setup-modular\/","title":{"rendered":"Automatiseret tilvejebringelse af infrastruktur i hosting: Terraform og Ansible forklaret"},"content":{"rendered":"<p>Jeg viser, hvordan Terraform Ansible interagerer i hosting: Terraform bygger reproducerbar infrastruktur, Ansible rekonfigurerer effektivt servere, tjenester og apps. S\u00e5dan automatiserer jeg klarg\u00f8ring, konfiguration og livscyklusstyring fra start til slut - fra VM'en til WordPress-stakken.<\/p>\n\n<h2>Centrale punkter<\/h2>\n<ul>\n  <li><strong>IaC-tilgang<\/strong>Definere infrastruktur som kode og udrulle den p\u00e5 en gentagelig m\u00e5de<\/li>\n  <li><strong>Afklaring af roller<\/strong>Terraform til ressourcer, Ansible til konfiguration<\/li>\n  <li><strong>Arbejdsgang<\/strong>Dag 0 med Terraform, dag 1\/2 med Ansible<\/li>\n  <li><strong>kvalitet<\/strong>Konsistens, sporbarhed, f\u00e6rre fejl<\/li>\n  <li><strong>Skalering<\/strong>Multi-cloud, moduler, playbooks og pipelines<\/li>\n<\/ul>\n\n<h2>Automatiseret tilvejebringelse af infrastruktur i hosting forklaret kort<\/h2>\n\n<p>Jeg stoler p\u00e5 <strong>Infrastruktur<\/strong> Jeg bruger koden til at oprette servere, netv\u00e6rk og storage deklarativt i stedet for manuelt. Det giver mig mulighed for at dokumentere alle \u00f8nskede m\u00e5ltilstande som kode og implementere dem sikkert. Fordelene er indlysende: Jeg opretter hostingmilj\u00f8er hurtigere, holder dem konsistente og reducerer antallet af tastefejl. Jeg sparer tid p\u00e5 tilbagevendende opgaver, is\u00e6r i forbindelse med WordPress- eller shop-ops\u00e6tninger. Analyserbare statusser, reproducerbare implementeringer og rene sletningsprocesser sikrer mere <strong>Gennemsigtighed<\/strong> omkostninger og styring.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/11\/terraform-ansible-serverraum-8472.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Terraform: Udrulning af infrastruktur p\u00e5 en planl\u00e6gbar m\u00e5de<\/h2>\n\n<p>Jeg bruger Terraform til at beskrive ressourcer i HCL som <strong>Moduler<\/strong> og registrere tilstande i tilstandsfilen. Det giver mig mulighed for at planl\u00e6gge \u00e6ndringer p\u00e5 forh\u00e5nd, genkende virkningerne og implementere dem p\u00e5 en kontrolleret m\u00e5de. Multi-cloud-scenarier er fortsat mulige, da der findes udbydere til almindelige platforme. Jeg standardiserer netv\u00e6rk, compute, databaser og load balancers ved hj\u00e6lp af genanvendelige moduler. For begyndere er det v\u00e6rd at tage et kig p\u00e5 <a href=\"https:\/\/webhosting.de\/da\/terraform-infrastructure-as-code-basics-best-practices-2\/\">Grundl\u00e6ggende om Terraform<\/a>, at mestre syntaks, tilstandsh\u00e5ndtering og politikker.<\/p>\n\n<p>For teams adskiller jeg tilstande pr. milj\u00f8 (Dev\/Staging\/Prod) via <strong>Arbejdspladser<\/strong> og eksterne backends med l\u00e5sning. Ren tagging, klart definerede variabler og en konsekvent mappestruktur (f.eks. <em>envs\/<\/em>, <em>moduler\/<\/em>, <em>live\/<\/em>) forhindrer ukontrolleret v\u00e6kst. Jeg integrerer f\u00f8lsomme udbyder- og variabelv\u00e6rdier via KMS\/Vault og holder dem ude af kodelageret. P\u00e5 den m\u00e5de bliver implementeringer reproducerbare og kontrollerbare, selv om flere operat\u00f8rer arbejder parallelt p\u00e5 platformen.<\/p>\n\n<h2>Bootstrap og adgang: Cloud-Init, SSH og Bastion<\/h2>\n<p>Efter klarg\u00f8ring bruger jeg <strong>Cloud-Init<\/strong> eller brugerdata til at indstille grundl\u00e6ggende konfigurationer direkte ved f\u00f8rste opstart: V\u00e6rtsnavn, tidssynkronisering, pakkekilder, f\u00f8rste brugere og SSH-n\u00f8gler. Til isolerede netv\u00e6rk bruger jeg en <strong>Bastion<\/strong> (Jump Host) og dirigerer alle Ansible-forbindelser via ProxyCommand eller SSH-konfiguration. P\u00e5 den m\u00e5de holder jeg produktive subnet private og bruger stadig agentl\u00f8s automatisering. Jeg beskriver de n\u00f8dvendige firewalls og sikkerhedsgrupper i Terraform, s\u00e5 adgangen forbliver minimal og sporbar.<\/p>\n\n<h2>Ansible: Sikker automatisering af konfiguration og orkestrering<\/h2>\n\n<p>Efter implementeringen overtager Ansible <strong>Konfigurationsstyring<\/strong> agentl\u00f8s via SSH. Jeg skriver playbooks i YAML og beskriver trin for pakker, tjenester, brugere, rettigheder og skabeloner. Idempotente opgaver garanterer, at gentagne k\u00f8rsler opretholder m\u00e5ltilstanden. Det er s\u00e5dan, jeg installerer PHP, databaser, cacher, TLS-certifikater og overv\u00e5gning uden manuelt arbejde. Til udrulninger kombinerer jeg roller, variabler og lagerbeholdninger for at holde staging, test og produktion konsistente. <strong>Drift<\/strong> for at undg\u00e5.<\/p>\n\n<p>I hverdagen bruger jeg <strong>H\u00e5ndterere<\/strong> konsekvent kun at genstarte tjenester, n\u00e5r der sker relevante \u00e6ndringer, og validere skabeloner med <em>check_mode<\/em> og <em>diff<\/em>. Til store fl\u00e5der bruger jeg parallelisering via <em>Gafler<\/em> med batchst\u00f8rrelser og afh\u00e6ngigheder, som jeg kontrollerer via serialisering eller tags. Det g\u00f8r, at \u00e6ndringer har lav risiko og kan spores.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/11\/terraform_ansible_meeting_2043.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Et overblik over Terraform vs Ansible<\/h2>\n\n<p>Jeg adskiller opgaverne tydeligt: Terraform tager sig af at oprette og \u00e6ndre ressourcer, Ansible konfigurerer systemer, der k\u00f8rer p\u00e5 dem. Denne adskillelse reducerer fejl, fremskynder \u00e6ndringer og \u00f8ger overblikket. Deklaration i Terraform passer perfekt til plan-only-tilgangen for VM'er, netv\u00e6rk og tjenester. Procedurem\u00e6ssige opgaver i Ansible d\u00e6kker installationer, fil\u00e6ndringer, genstarter og udrulninger. Tilsammen garanterer dette en ren <strong>Fordeling af roller<\/strong> og korte afstande til \u00e6ndringer.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Funktion<\/th>\n      <th>Terraform<\/th>\n      <th>Ansible<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td><strong>M\u00e5ls\u00e6tning<\/strong><\/td>\n      <td>Tilvejebringelse af ressourcer (dag 0)<\/td>\n      <td>Konfiguration og orkestrering (dag 1\/2)<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Fremgangsm\u00e5de<\/strong><\/td>\n      <td>Deklarativ (m\u00e5ltilstand)<\/td>\n      <td>Procedurem\u00e6ssige (trin\/opgaver)<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Stat<\/strong><\/td>\n      <td>Statsfil tilg\u00e6ngelig<\/td>\n      <td>Tilstandsl\u00f8s (idempotens)<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Tyngdepunkt<\/strong><\/td>\n      <td>VM'er, netv\u00e6rk, databaser, LB<\/td>\n      <td>Pakker, tjenester, implementeringer, sikkerhed<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Agenter<\/strong><\/td>\n      <td>Uden agent<\/td>\n      <td>Typisk agentl\u00f8s via SSH<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Skalering<\/strong><\/td>\n      <td>Multi-cloud-udbyder<\/td>\n      <td>Roller, opg\u00f8relser, parallelisering<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Output og dynamiske opg\u00f8relser<\/h2>\n<p>For at Ansible skal vide pr\u00e6cis, hvilke v\u00e6rter der skal konfigureres, overf\u00f8rer jeg <strong>Terraform-udgange<\/strong> direkte ind i en oversigt. Jeg eksporterer IP'er, v\u00e6rtsnavne, roller og labels som strukturerede v\u00e6rdier og bruger v\u00e6rtsgrupper, der er genereret ud fra dem. P\u00e5 den m\u00e5de forbliver inventaret altid synkroniseret med den virkelige tilstand. En enkel tilgang er at skrive output som JSON og eksportere dem med Ansible som <em>YAML\/JSON-opg\u00f8relse<\/em> til at l\u00e6se ind. Det giver mig mulighed for at lukke hullet mellem provisionering og konfiguration uden manuelle mellemtrin.<\/p>\n\n<h2>S\u00e5dan arbejder Terraform og Ansible sammen<\/h2>\n\n<p>Jeg starter med Terraform og opretter netv\u00e6rk, undernet, sikkerhedsregler, virtuelle maskiner og administrationsadgang; jeg sender de oprettede IP-adresser og v\u00e6rtsnavne videre til Ansible. Derefter bruger jeg playbooks til at installere operativsystempakker, agenter, webservere, PHP-FPM, databaser og cachelag. Jeg implementerer politikker som password-regler, firewall-regler og protokolrotationer automatisk og holder dem konsistente. N\u00e5r jeg skalerer, forbinder jeg nye instanser via Terraform og lader Ansible overtage konfigurationen. Til sidst fjerner jeg ressourcer p\u00e5 en kontrolleret m\u00e5de for at l\u00f8se afh\u00e6ngigheder p\u00e5 en ren m\u00e5de og <strong>Omkostninger<\/strong> gennemsigtig.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/11\/terraform-ansible-hosting-setup-9183.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>WordPress-hosting: eksempel fra praksis<\/h2>\n\n<p>Til en WordPress-ops\u00e6tning definerer jeg VPC, subnet, routing, sikkerhedsgrupper, databaseinstanser og en autoskalerende webklynge i Terraform. Ansible ops\u00e6tter derefter NGINX eller Apache, PHP-udvidelser, MariaDB\/MySQL-parametre, objektcache og TLS. Jeg implementerer WordPress-installationen, konfigurerer FPM-Worker, aktiverer HTTP\/2 og sikrer wp-config med de rette filtilladelser. Jeg automatiserer ogs\u00e5 Fail2ban, Logrotate, backup-jobs og metrikker for belastning, RAM, I\/O og <strong>Forsinkelse<\/strong>. Det giver mig gentagelige implementeringer med klare rollback-veje og hurtig gendannelse.<\/p>\n\n<p>For risikofrie opdateringer stoler jeg p\u00e5 <strong>Bl\u00e5\/gr\u00f8n<\/strong> eller rullende implementeringer: Nye webinstanser s\u00e6ttes op parallelt, konfigureres, testes og forbindes f\u00f8rst derefter bag load balanceren. Jeg h\u00e5ndterer database\u00e6ndringer omhyggeligt med migrationsvinduer, l\u00e6sereplikaer og sikkerhedskopier. Jeg inkluderer statiske aktiver, cache-varme og CDN-regler i playbooks, s\u00e5 skift k\u00f8rer uden overraskelser.<\/p>\n\n<h2>Styring af tilstand, drift og sikkerhed<\/h2>\n\n<p>Jeg gemmer Terraform-statusfilen centralt med versionskontrol og en l\u00e5semekanisme, s\u00e5 ingen overskriver \u00e6ndringer p\u00e5 samme tid. Jeg dokumenterer planlagte afvigelser ved hj\u00e6lp af variabler, og jeg l\u00f8ser u\u00f8nskede afvigelser ved hj\u00e6lp af en plan og efterf\u00f8lgende anvendelse. Jeg bruger Vault eller KMS-integrationer til hemmeligheder, mens Ansible forbliver f\u00f8lsom med krypterede variabler. Playbooks indeholder sikkerhedsbaselines, som jeg regelm\u00e6ssigt h\u00e5ndh\u00e6ver over for nye v\u00e6rter. Jeg holder logs, metrikker og advarsler konsistente, s\u00e5 jeg kan <strong>H\u00e6ndelser<\/strong> genkende og forst\u00e5 dem hurtigere.<\/p>\n\n<p>Jeg tjekker ogs\u00e5 <strong>Tagging og navngivningskonventioner<\/strong> Streng: Ressourcer f\u00e5r obligatoriske etiketter for omkostningscentre, milj\u00f8er og ansvarlige parter. Det letter FinOps-analyser, livscykluspolitikker (f.eks. automatisk nedlukning af ikke-produktive systemer) og forenkler compliance-audits. Til f\u00f8lsomme \u00e6ndringer er jeg afh\u00e6ngig af <em>Skift vinduer<\/em> med en godkendt Terraform-plan og dokumenterede Ansible-k\u00f8rsler.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/11\/infra_provision_techoffice_4827.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Politik som kodeks, overholdelse og styring<\/h2>\n<p>I anker <strong>Politikker<\/strong> i koden: Hvilke regioner er tilladt, hvilke instanstyper, hvilke netv\u00e6rkssegmenter? Jeg h\u00e5ndh\u00e6ver konventioner via moduler og valideringer. Jeg k\u00f8rer politiktjek f\u00f8r hver anvendelse, s\u00e5 afvigelser opdages tidligt. I Ansible definerer jeg sikkerhedsbenchmarks (f.eks. SSH-h\u00e6rdning, adgangskode- og revisionspolitikker) som roller, der g\u00e6lder konsekvent p\u00e5 alle v\u00e6rter. P\u00e5 den m\u00e5de forbliver styringskravene m\u00e5lbare, og undtagelser dokumenteres bevidst i stedet for at blive tolereret tilf\u00e6ldigt.<\/p>\n\n<h2>At t\u00e6nke containere, Kubernetes og IaC sammen<\/h2>\n\n<p>Mange hosting-teams kombinerer VM'er til databaser med containere til webprocesser for at optimere t\u00e6theden og opstartstiderne. Jeg modellerer begge dele med Terraform og overlader host-h\u00e6rdning, runtime-installation og adgang til registreringsdatabasen til Ansible. For klyngearbejdsbelastninger sammenligner jeg orkestreringskoncepter og beslutter, hvilken tilgang der passer til styringen. Hvis du vil vide mere, kan du l\u00e6se artiklen <a href=\"https:\/\/webhosting.de\/da\/sammenligning-af-docker-og-kubernetes\/\">Docker vs. Kubernetes<\/a> nyttige overvejelser. Det er stadig vigtigt: Jeg holder implementeringer reproducerbare og sikre. <strong>Billeder<\/strong> mod afdrift, s\u00e5 udgivelserne forbliver p\u00e5lidelige.<\/p>\n\n<p>I hybride ops\u00e6tninger definerer jeg klynger, nodegrupper og storage med Terraform, mens Ansible standardiserer det grundl\u00e6ggende OS-lag. Adgang til container-registre, hemmeligheder og netv\u00e6rkspolitikker er en del af playbooks. Det betyder, at selv en blandet stak af database-VM'er og containerbaserede webfrontends forbliver i en ensartet livscyklus.<\/p>\n\n<h2>CI\/CD, tests og rollbacks<\/h2>\n\n<p>Jeg integrerer Terraform- og Ansible-k\u00f8rsler i pipelines, s\u00e5 \u00e6ndringer automatisk kontrolleres, planl\u00e6gges og rulles ud med minimale fejl. Jeg beskytter unit og lint checks med quality gates, planer og dry runs giver mig gennemsigtighed f\u00f8r hver anvendelse. Til playbooks bruger jeg testmilj\u00f8er til at validere handlers, idempotens og afh\u00e6ngigheder p\u00e5 en ren m\u00e5de. Klare rollback-strategier og versionering af moduler og roller fremskynder fejlfinding. Hvis du vil i gang, kan du finde inspiration i <a href=\"https:\/\/webhosting.de\/da\/cicd-pipelines-webhosting-implementering\/\">CI\/CD-pipelines i hosting<\/a> og kan bruge sin egen <strong>Arbejdsgange<\/strong> udvides trin for trin.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/11\/infrastruktur_automation_9823.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Performance og skalering af pipelinen<\/h2>\n<p>Til store fl\u00e5der skalerer jeg Terraform med veldoseret parallelisering og granul\u00e6re m\u00e5l uden at \u00f8del\u00e6gge arkitekturen. Jeg beskriver afh\u00e6ngigheder eksplicit for at undg\u00e5 race conditions. I Ansible kontrollerer jeg <strong>Gafler<\/strong>, <strong>Serie<\/strong> og <strong>max_fejl_procent<\/strong>, til sikkert at udrulle \u00e6ndringer i b\u00f8lger. Caching (fakta, pakkecache, galakse-roller) og genanvendelige artefakter reducerer runtimes m\u00e6rkbart. Det giver hurtig levering uden at g\u00e5 p\u00e5 kompromis med p\u00e5lideligheden.<\/p>\n\n<h2>Praktiske anbefalinger til at komme i gang<\/h2>\n\n<p>Jeg starter i det sm\u00e5: et repo, en klar mappestruktur, navngivningskonventioner og versionering. Derefter definerer jeg et minimalt milj\u00f8 med et netv\u00e6rk, en VM og en simpel webrolle for at \u00f8ve hele flowet. Jeg opretter tidligt variabler, hemmeligheder og fjerntilstande, s\u00e5 senere teamtrin k\u00f8rer problemfrit. Derefter modulariserer jeg i henhold til komponenter som VPC, compute, DB, LB og roller til web, DB og overv\u00e5gning. Dette skaber gradvist en genanvendelig <strong>Bibliotek<\/strong> af moduler og playbooks, der sikkert kortl\u00e6gger udgivelser.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/11\/terraform-ansible-hosting-5283.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Migrering af eksisterende milj\u00f8er<\/h2>\n<p>Mange teams starter ikke p\u00e5 et helt nyt sted. Jeg g\u00e5r frem trin for trin: F\u00f8rst laver jeg en opg\u00f8relse over manuelt oprettede ressourcer og overf\u00f8rer dem via <strong>Import<\/strong> i Terraform, ledsaget af moduler, der svarer til m\u00e5lbilledet. Samtidig introducerer jeg Ansible-roller, der gengiver den aktuelle tilstand og derefter gradvist h\u00e6ver den til den \u00f8nskede standardkonfiguration. P\u00e5 den m\u00e5de undg\u00e5r jeg big bang-projekter og reducerer risici gennem kontrollerede, sporbare \u00e6ndringer.<\/p>\n\n<h2>Fejlfinding og typiske fejlm\u00f8nstre<\/h2>\n<p>I praksis ser jeg tilbagevendende m\u00f8nstre: Oprettelse af manuelle hotfixes <strong>Drift<\/strong>, som annulleres under den n\u00e6ste k\u00f8rsel. Klare processer (tickets, PRs, reviews) og regelm\u00e6ssige k\u00f8rsler hj\u00e6lper med at genkende afvigelser tidligt. I Ansible f\u00f8rer ikke-idempotente opgaver til un\u00f8dvendige genstarter; jeg tjekker moduler i stedet for shell-kommandoer og s\u00e6tter <em>\u00e6ndret_hvorn\u00e5r<\/em>\/<em>mislykkedes_n\u00e5r<\/em> p\u00e5 en m\u00e5lrettet m\u00e5de. Jeg afklarer netv\u00e6rksproblemer (bastion, sikkerhedsgrupper, DNS) p\u00e5 et tidligt tidspunkt, s\u00e5 forbindelserne er stabile. Og jeg logger alle k\u00f8rsler, s\u00e5 jeg fuldt ud kan spore \u00e5rsagerne i audits.<\/p>\n\n<h2>Resum\u00e9: Hvad der virkelig t\u00e6ller<\/h2>\n\n<p>Jeg automatiserer klarg\u00f8ringen af infrastrukturen med Terraform og overlader konfigurationen til Ansible. Adskillelsen af opgaver sikrer konsistens, hastighed og f\u00e6rre menneskelige fejl. Moduler, roller og politikker g\u00f8r implementeringen h\u00e5ndterbar og reviderbar. De, der v\u00e6lger denne tilgang, sparer tid, reducerer risici og opn\u00e5r skalerbarhed p\u00e5 tv\u00e6rs af skyer og milj\u00f8er. Det, der t\u00e6ller i sidste ende, er sporbarhed <strong>Processer<\/strong>, der g\u00f8r alle \u00e6ndringer synlige, testbare og gentagelige.<\/p>","protected":false},"excerpt":{"rendered":"<p>L\u00e6r, hvordan automatiseret infrastrukturforsyning med Terraform &amp; Ansible transformerer hosting. Fokus p\u00e5 n\u00f8gleord: Terraform Ansible<\/p>","protected":false},"author":1,"featured_media":15013,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[780],"tags":[],"class_list":["post-15020","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administration-anleitungen"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"2302","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":null,"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":null,"_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"Terraform Ansible","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"15013","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/posts\/15020","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/comments?post=15020"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/posts\/15020\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/media\/15013"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/media?parent=15020"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/categories?post=15020"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/da\/wp-json\/wp\/v2\/tags?post=15020"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}