Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

MÄnga kÀnner till och anvÀnder Terraform i sitt dagliga arbete, men bÀsta praxis för det har Ànnu inte tagits fram. Varje team mÄste uppfinna sina egna tillvÀgagÄngssÀtt och metoder.

Din infrastruktur börjar nÀstan sÀkert enkelt: nÄgra resurser + nÄgra utvecklare. Med tiden vÀxer det Ät alla möjliga hÄll. Hittar du sÀtt att gruppera resurser i Terraform-moduler, organisera kod i mappar och vad mer som kan gÄ fel? (kÀnda sista ord)

Tiden gÄr och du kÀnner att din infrastruktur Àr ditt nya husdjur, men varför? Du Àr orolig för oförklarliga förÀndringar i infrastrukturen, du Àr rÀdd för att röra infrastrukturen och koden - som ett resultat försenar du ny funktionalitet eller minskar kvaliteten...

Efter tre Är av att hantera en samling Terraform-gemenskapsmoduler för AWS pÄ Github och lÄngsiktigt underhÄll av Terraform i produktion, Àr Anton Babenko redo att dela med sig av sin erfarenhet: hur man skriver TF-moduler sÄ att det inte skadar i framtiden.

I slutet av föredraget kommer deltagarna att vara mer bekanta med principer för resurshantering i Terraform, bÀsta praxis förknippade med moduler i Terraform och nÄgra kontinuerliga integrationsprinciper förknippade med infrastrukturhantering.

Varning: Jag noterar att denna rapport Ă€r daterad november 2018—2 Ă„r har redan gĂ„tt. Den version av Terraform 0.11 som diskuteras i rapporten stöds inte lĂ€ngre. Under de senaste 2 Ă„ren har 2 nya releaser slĂ€ppts, som innehĂ„ller en hel del innovationer, förbĂ€ttringar och förĂ€ndringar. Var uppmĂ€rksam pĂ„ detta och kontrollera dokumentationen.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

LĂ€nkar:

Jag heter Anton Babenko. NÄgra av er anvÀnde förmodligen koden jag skrev. Jag kommer nu att tala om detta med större sjÀlvförtroende Àn nÄgonsin, eftersom jag har tillgÄng till statistik.

Jag arbetar pÄ Terraform och har varit en aktiv deltagare och bidragsgivare till ett stort antal open source-projekt relaterade till Terraform och Amazon sedan 2015.

Sedan dess har jag skrivit tillrÀckligt med kod för att sÀtta det pÄ ett intressant sÀtt. Och jag ska försöka berÀtta om detta nu.

Jag kommer att prata om krÄngligheterna och detaljerna i att arbeta med Terraform. Men det Àr egentligen inte Àmnet för HighLoad. Och nu kommer du att förstÄ varför.

Med tiden började jag skriva Terraform-moduler. AnvÀndare skrev frÄgor, jag skrev om dem. Sedan skrev jag olika verktyg för att formatera koden med en pre-commit hook, etc.

Det var mÄnga intressanta projekt. Jag gillar kodgenerering eftersom jag gillar att datorn gör mer och mer arbete för mig och programmeraren, sÄ jag arbetar just nu med en Terraform-kodgenerator frÄn visuella diagram. Kanske har nÄgra av er sett dem. Det hÀr Àr vackra lÄdor med pilar. Och jag tycker att det Àr bra om du kan klicka pÄ knappen "Exportera" och fÄ allt som kod.

Jag Àr frÄn Ukraina. Jag har bott i Norge i mÄnga Är.

Information för denna rapport har ocksÄ samlats in frÄn personer som kÀnner till mitt namn och hittar mig pÄ sociala nÀtverk. Jag har nÀstan alltid samma smeknamn.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

https://github.com/terraform-aws-modules
https://registry.terraform.io/namespaces/terraform-aws-modules

Som jag nÀmnde Àr jag den huvudsakliga underhÄllaren av Terraform AWS-moduler, som Àr ett av de största arkiven pÄ GitHub dÀr vi Àr vÀrd för moduler för de vanligaste uppgifterna: VPC, Autoskalning, RDS.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Och det du hörde nu Àr det mest grundlÀggande. Om du tvivlar pÄ att du förstÄr vad Terraform Àr, dÄ Àr det bÀttre att spendera din tid nÄgon annanstans. Det kommer att finnas mÄnga facktermer hÀr. Och jag tvekade inte att förklara rapportens nivÄ som den högsta. Det betyder att jag kan prata med alla möjliga termer utan mycket förklaring.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Terraform dök upp 2014 som ett verktyg som gjorde det möjligt för dig att skriva, planera och hantera infrastruktur som kod. Nyckelbegreppet hÀr Àr "infrastruktur som kod."

All dokumentation Àr som sagt inskriven terraform.io. Jag hoppas att de flesta kÀnner till den hÀr sidan och har lÀst dokumentationen. I sÄ fall Àr du pÄ rÀtt plats.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

SÄ hÀr ser en vanlig Terraform-konfigurationsfil ut, dÀr vi först definierar nÄgra variabler.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

I det hÀr fallet definierar vi "aws_region".

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Sedan beskriver vi vilka resurser vi vill skapa.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Vi kör nÄgra kommandon, sÀrskilt "terraform init" för att ladda beroenden och leverantörer.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Och vi kör kommandot "terraform applicera" för att kontrollera om den angivna konfigurationen matchar resurserna som vi skapade. Eftersom vi inte har skapat nÄgot tidigare uppmanar Terraform oss att skapa dessa resurser.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Vi bekrÀftar detta. PÄ sÄ sÀtt skapar vi en hink som kallas sjönagel.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Det finns ocksÄ flera liknande verktyg. MÄnga av er som anvÀnder Amazon kÀnner till AWS CloudFormation eller Google Cloud Deployment Manager eller Azure Resource Manager. Var och en av dem har sin egen implementering av nÄgot slag för att hantera resurser inom var och en av dessa offentliga molnleverantörer. Terraform Àr sÀrskilt anvÀndbart eftersom det lÄter dig hantera över 100 leverantörer. (Fler detaljer hÀr)

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

MÄlen som Terraform har strÀvat efter frÄn första början:

  • Terraform ger en enda bild av resurser.
  • LĂ„ter dig stödja alla moderna plattformar.
  • Och Terraform designades frĂ„n första början som ett verktyg som lĂ„ter dig Ă€ndra infrastruktur pĂ„ ett sĂ€kert och förutsĂ€gbart sĂ€tt.

2014 lĂ€t ordet ”förutsĂ€gbar” vĂ€ldigt ovanligt i sammanhanget.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Terraform Àr ett universellt verktyg. Om du har ett API kan du kontrollera absolut allt:

  • Du kan anvĂ€nda mer Ă€n 120 leverantörer för att hantera allt du vill.
  • Till exempel kan du anvĂ€nda Terraform för att beskriva Ă„tkomst till GitHub-förrĂ„d.
  • Du kan till och med skapa och stĂ€nga buggar i Jira.
  • Du kan hantera New Relic-mĂ€tvĂ€rden.
  • Du kan till och med skapa filer i dropbox om du verkligen vill.

Allt detta uppnÄs med hjÀlp av Terraform-leverantörer, som har ett öppet API som kan beskrivas i Go.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

LÄt oss sÀga att vi började anvÀnda Terraform, lÀste lite dokumentation pÄ sajten, tittade pÄ lite video och började skriva main.tf, som jag visade pÄ de tidigare bilderna.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Och allt Àr bra, du har en fil som skapar en VPC.

Om du vill skapa en VPC anger du ungefÀr dessa 12 rader. Beskriv i vilken region du vill skapa, vilket cidr_block av IP-adresser som ska anvÀndas. Det Àr allt.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Naturligtvis kommer projektet att vÀxa successivt.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Och du kommer att lÀgga till massor av nya saker dÀr: resurser, datakÀllor, du kommer att integrera med nya leverantörer, plötsligt vill du anvÀnda Terraform för att hantera anvÀndare i ditt GitHub-konto, etc. Du kanske vill anvÀnda olika DNS-leverantörer, kryssa allt. Terraform gör detta enkelt.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

LÄt oss titta pÄ följande exempel.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Du lÀgger gradvis till internet_gateway eftersom du vill att resurser frÄn din VPC ska ha tillgÄng till internet. Det hÀr Àr en bra idé.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Resultatet Àr detta main.tf:

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Detta Àr den övre delen av main.tf.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Detta Àr den nedre delen av main.tf.

Sedan lÀgger du till subnÀt. NÀr du vill lÀgga till NAT-gateways, rutter, routingtabeller och ett gÀng andra subnÀt kommer du inte att ha 38 linjer, utan ungefÀr 200-300 linjer.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Det vill sÀga, din main.tf-fil vÀxer gradvis. Och ganska ofta lÀgger folk allt i en fil. 10-20 Kb visas i main.tf. FörestÀll dig att 10-20 Kb Àr textinnehÄll. Och allt Àr kopplat till allt. Det hÀr blir sÄ smÄningom svÄrt att jobba med. 10-20 Kb Àr ett bra anvÀndarfall, ibland mer. Och folk tycker inte alltid att det hÀr Àr dÄligt.

Som i vanlig programmering, alltsÄ inte infrastruktur som kod, Àr vi vana vid att anvÀnda en massa olika klasser, paket, moduler, grupperingar. Terraform lÄter dig göra ungefÀr samma sak.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

  • Koden vĂ€xer.
  • Beroendet mellan resurserna vĂ€xer ocksĂ„.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Och vi har ett stort, stort behov. Vi förstÄr att vi inte kan leva sÄ hÀr lÀngre. VÄr kod blir enorm. 10-20 Kb Àr naturligtvis inte sÀrskilt stort, men vi pratar bara om nÀtverksstacken, dvs du har bara lagt till nÀtverksresurser. Vi pratar inte om Application Load Balancer, deployment ES cluster, Kubernetes, etc., dÀr 100 Kb enkelt kan vÀvas in. Om du skriver ner allt detta kommer du mycket snart att lÀra dig att Terraform tillhandahÄller Terraform-moduler.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Terraform-moduler Àr en fristÄende Terraform-konfiguration som hanteras som en grupp. Det Àr allt du behöver veta om Terraform-moduler. De Àr inte alls smarta, de tillÄter dig inte att göra nÄgra komplexa kopplingar beroende pÄ nÄgot. Allt detta faller pÄ utvecklarnas axlar. Det vill sÀga, detta Àr bara nÄgon slags Terraform-konfiguration som du redan har skrivit. Och du kan helt enkelt kalla det som en grupp.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

SÄ vi försöker förstÄ hur vi ska optimera vÄra 10-20-30 Kb kod. Vi inser gradvis att vi behöver anvÀnda nÄgra moduler.

Den första typen av moduler du stöter pÄ Àr resursmoduler. De förstÄr inte vad din infrastruktur handlar om, vad din verksamhet handlar om, var och vilka förutsÀttningarna Àr. Det Àr just dessa moduler som jag tillsammans med open source-communityt administrerar och som vi lÀgger fram som de allra första byggstenarna för din infrastruktur.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Ett exempel pÄ en resursmodul.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

NÀr vi anropar en resursmodul anger vi frÄn vilken vÀg vi ska ladda dess innehÄll.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Vi anger vilken version vi vill ladda ner.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Vi för en massa argument dÀr. Det Àr allt. Det Àr allt vi behöver veta nÀr vi anvÀnder den hÀr modulen.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

MÄnga tror att om de anvÀnder den senaste versionen kommer allt att vara stabilt. Men nej. Infrastrukturen mÄste vara versionerad, vi mÄste tydligt svara pÄ vilken version den eller den komponenten distribuerades till.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

HÀr Àr koden som finns i denna modul. SÀkerhetsgruppsmodul. HÀr gÄr rullningen till 640:e raden. Att skapa en sÀkerhetsgruppresurs i Amazon i alla möjliga konfigurationer Àr en mycket icke-trivial uppgift. Det rÀcker inte att bara skapa en sÀkerhetsgrupp och tala om för den vilka regler som ska skickas till den. Det skulle vara vÀldigt enkelt. Det finns en miljon olika begrÀnsningar inom Amazon. Till exempel om du anvÀnder VPC-slutpunkt, prefixlista, olika API:er och försöker kombinera allt detta med allt annat, sÄ tillÄter inte Terraform dig att göra detta. Och Amazon API tillÄter inte detta heller. DÀrför mÄste vi dölja all denna hemska logik i en modul och ge anvÀndarkoden som ser ut precis sÄ hÀr.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

AnvÀndaren behöver inte veta hur den Àr tillverkad inuti.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Den andra typen av moduler, som bestÄr av resursmoduler, löser redan problem som Àr mer tillÀmpliga pÄ din verksamhet. Ofta Àr detta en plats som Àr en förlÀngning för Terraform och sÀtter nÄgra stela vÀrden för taggar, för företagsstandarder. Du kan Àven lÀgga till funktionalitet dÀr som Terraform för nÀrvarande inte tillÄter dig att anvÀnda. Det hÀr Àr just nu. Nu version 0.11, som Àr pÄ vÀg att bli ett minne blott. Men ÀndÄ Àr förprocessorer, jsonnet, cookiecutter och en massa andra saker hjÀlpmekanismen som mÄste anvÀndas för ett fullfjÀdrat arbete.

HÀrnÀst ska jag visa nÄgra exempel pÄ detta.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Infrastrukturmodulen kallas pÄ exakt samma sÀtt.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

KÀllan varifrÄn du ska ladda ner innehÄllet anges.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Ett gÀng vÀrden skickas in och skickas till denna modul.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

DÀrefter, inuti denna modul, anropas ett gÀng resursmoduler för att skapa en VPC eller Application Load Balancer, eller för att skapa en sÀkerhetsgrupp eller för ett Elastic Container Service-kluster.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Det finns tvÄ typer av moduler. Detta Àr viktigt att förstÄ eftersom det mesta av informationen som jag har grupperat i denna rapport inte Àr skriven i dokumentationen.

Och dokumentationen i Terraform just nu Àr ganska problematisk eftersom den bara sÀger att det finns dessa funktioner, du kan anvÀnda dem. Men hon sÀger inte hur man anvÀnder dessa funktioner, varför det Àr bÀttre att anvÀnda dem. DÀrför skriver ett vÀldigt stort antal mÀnniskor nÄgot som de inte kan leva med.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

LÄt oss ta en titt pÄ hur man skriver dessa moduler hÀrnÀst. Sedan fÄr vi se hur man ringer dem och hur man arbetar med koden.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Terraform Registry - https://registry.terraform.io/

Tips #0 Àr att inte skriva resursmoduler. De flesta av dessa moduler Àr redan skrivna för dig. De Àr som sagt öppen kÀllkod, de innehÄller ingen av din affÀrslogik, de har inga hÄrdkodade vÀrden för IP-adresser, lösenord etc. Modulen Àr vÀldigt flexibel. Och den Àr med största sannolikhet redan skriven. Det finns mÄnga moduler för resurser frÄn Amazon. Cirka 650. Och de flesta Àr av bra kvalitet.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

I det hÀr exemplet kom nÄgon till dig och sa: "Jag vill kunna hantera en databas. Skapa en modul sÄ att jag kan skapa en databas." Personen kÀnner inte till implementeringsdetaljerna för varken Amazon eller Terraform. Han sÀger helt enkelt: "Jag vill hantera MSSQL." Det vill sÀga, vi menar att den kommer att anropa vÄr modul, skicka motortypen dit och indikera tidszonen.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Och en person ska inte veta att vi kommer att skapa tvÄ olika resurser i den hÀr modulen: en för MSSQL, den andra för allt annat, bara för att du i Terraform 0.11 inte kan ange tidszonsvÀrden som valfria.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Och vid utgÄngen frÄn denna modul kommer en person helt enkelt att kunna fÄ en adress. Han kommer inte att veta frÄn vilken databas, frÄn vilken resurs vi skapar allt detta internt. Detta Àr en mycket viktig del av döljande. Och detta gÀller inte bara de moduler som Àr offentliga i öppen kÀllkod, utan Àven de moduler som du kommer att skriva i dina projekt och team.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Detta Àr det andra argumentet, vilket Àr ganska viktigt om du har anvÀnt Terraform ett tag. Du har ett arkiv dÀr du lÀgger alla dina Terraform-moduler för ditt företag. Och det Àr helt normalt att det hÀr projektet med tiden kommer att vÀxa till en storlek pÄ en eller tvÄ megabyte. Det hÀr Àr okej.

Men problemet Àr hur Terraform kallar dessa moduler. Till exempel, om du anropar en modul för att skapa varje enskild anvÀndare, kommer Terraform först att ladda hela förvaret och sedan navigera till mappen dÀr den specifika modulen finns. PÄ sÄ sÀtt kommer du att ladda ner en megabyte varje gÄng. Om du hanterar 100 eller 200 anvÀndare kommer du att ladda ner 100 eller 200 megabyte och sedan gÄ till den mappen. SÄ naturligtvis vill du inte ladda ner en massa saker varje gÄng du trycker pÄ "Terraform init".

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

https://github.com/mbtproject/mbt

Det finns tvÄ lösningar pÄ detta problem. Den första Àr att anvÀnda relativa vÀgar. PÄ sÄ sÀtt anger du i koden att mappen Àr lokal (./). Och innan du startar nÄgot, gör du en Git-kloning av detta förrÄd lokalt. SÄ hÀr gör du det en gÄng.

Det finns förstÄs mÄnga nackdelar. Du kan till exempel inte anvÀnda versionshantering. Och det hÀr Àr ibland svÄrt att leva med.

Andra lösningen. Om du har mÄnga undermoduler och du redan har nÄgon form av etablerad pipeline, sÄ finns det MBT-projektet, som lÄter dig samla in mÄnga olika paket frÄn ett monolager och ladda upp dem till S3. Detta Àr ett mycket bra sÀtt. SÄledes kommer filen iam-user-1.0.0.zip bara att vÀga 1 Kb, eftersom koden för att skapa denna resurs Àr mycket liten. Och det kommer att fungera mycket snabbare.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

LÄt oss prata om vad som inte kan anvÀndas i moduler.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Varför Àr det hÀr dÄligt i moduler? Det vÀrsta Àr att anta anvÀndare. Anta att anvÀndaren Àr ett alternativ för leverantörsautentisering som kan anvÀndas av olika personer. Till exempel kommer vi alla att tillgodogöra oss rollen. Det innebÀr att Terraform tar denna roll. Och sedan med den hÀr rollen kommer den att utföra andra ÄtgÀrder.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Och det onda Àr att om Vasya gillar att ansluta till Amazon pÄ ett sÀtt, till exempel genom att anvÀnda standardmiljövariabeln, och Petya gillar att anvÀnda sin delade nyckel, som han har pÄ en hemlig plats, dÄ kan du inte ange bÄda i Terraform. Och för att de inte ska uppleva lidande behöver de inte ange detta block i modulen. Detta mÄste anges pÄ en högre nivÄ. Det vill sÀga vi har en resursmodul, en infrastrukturmodul och en sammansÀttning ovanpÄ. Och detta bör anges nÄgonstans högre.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Det andra onda Àr försörjaren. HÀr Àr det onda inte sÄ trivialt, för om du skriver kod och det fungerar för dig, dÄ kanske du tÀnker att om det fungerar, varför Àndra det dÄ.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Det onda Àr att du inte alltid kontrollerar nÀr den hÀr provisionern kommer att lanseras, för det första. Och för det andra styr du inte vad aws ec2 betyder, d.v.s. pratar vi om Linux eller Windows nu. SÄ du kan inte skriva nÄgot som fungerar likadant pÄ olika operativsystem eller för olika anvÀndarfall.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Det vanligaste exemplet, som ocksÄ anges i den officiella dokumentationen, Àr att om du skriver aws_instance och anger en massa argument, sÄ Àr det inget fel med det om du anger provisorn "local-exec" dÀr och kör din ansible- lekbok.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Faktiskt, ja, det Àr inget fel med det. Men bokstavligen snart kommer du att inse att den hÀr local-exec-grejen inte existerar, till exempel i launch_configuration.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Och nÀr du anvÀnder launch_configuration och du vill skapa en autoskalningsgrupp frÄn en instans, dÄ finns det inget koncept för "provisioner" i launch_configuration. Det finns begreppet "anvÀndardata".

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

DÀrför Àr en mer universell lösning att anvÀnda anvÀndardata. Och den kommer att startas antingen pÄ sjÀlva instansen, nÀr instansen Àr pÄslagen, eller i samma anvÀndardata, nÀr den automatiska skalningsgruppen anvÀnder denna launch_configuration.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Om du fortfarande vill köra provisionern, eftersom det Àr en limningskomponent, nÀr en resurs skapas, mÄste du i det ögonblicket köra din provisioner, ditt kommando. Det finns mÄnga sÄdana situationer.

Och den mest korrekta resursen för detta kallas null_resource. Null_resource Àr en dummy-resurs som faktiskt aldrig skapas. Det rör ingenting, inget API, ingen automatisk skalning. Men det lÄter dig styra nÀr du ska köra kommandot. I det hÀr fallet körs kommandot under skapandet.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

LĂ€nk http://bit.ly/common-traits-in-terraform-modules

Det finns flera tecken. Jag kommer inte att gÄ in pÄ alla tecken i detalj. Det finns en artikel om detta. Men om du har arbetat med Terraform eller anvÀnt andras moduler, har du ofta mÀrkt att mÄnga moduler, som det mesta av koden i öppen kÀllkod, Àr skrivna av mÀnniskor för deras egna behov. En man skrev det och löste sitt problem. Jag fastnade den i GitHub, lÄt den leva. Den kommer att leva, men om det inte finns nÄgon dokumentation och exempel dÀr, dÄ kommer ingen att anvÀnda den. Och om det inte finns nÄgon funktionalitet som gör att du kan lösa lite mer Àn sin specifika uppgift, sÄ kommer ingen att anvÀnda den heller. Det finns sÄ mÄnga sÀtt att tappa anvÀndare.

Om du vill skriva nÄgot sÄ att folk ska anvÀnda det, rekommenderar jag att du följer dessa skyltar.

De Àr:

  • Dokumentation och exempel.
  • Full funktionalitet.
  • Rimliga standardinstĂ€llningar.
  • Ren kod.
  • Tester.

Tester Àr en annan situation eftersom de Àr ganska svÄra att skriva. Jag tror mer pÄ dokumentation och exempel.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

SÄ vi tittade pÄ hur man skriver moduler. Det finns tvÄ argument. Det första, som Àr det viktigaste, Àr att inte skriva om du kan, för ett gÀng mÀnniskor har redan gjort dessa uppgifter före dig. Och för det andra, om du fortfarande bestÀmmer dig, försök att inte anvÀnda leverantörer i moduler och provisioner.

Detta Ă€r den grĂ„ delen av dokumentationen. Du kanske nu tĂ€nker: ”NĂ„got Ă€r oklart. Inte övertygad." Men vi fĂ„r se om ett halvĂ„r.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

LĂ„t oss nu prata om hur man kallar dessa moduler.

Vi förstÄr att vÄr kod vÀxer med tiden. Vi har inte lÀngre en fil, vi har redan 20 filer. De finns alla i en mapp. Eller kanske fem mappar. Kanske börjar vi pÄ nÄgot sÀtt dela upp dem efter region, efter vissa komponenter. DÄ förstÄr vi att nu har vi nÄgra rudiment av synkronisering och orkestrering. Det vill sÀga, vi mÄste förstÄ vad vi ska göra om vi Àndrade nÀtverksresurser, vad vi ska göra med resten av vÄra resurser, hur vi kan orsaka dessa beroenden osv.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Det finns tvÄ ytterligheter. Den första ytterligheten Àr allt i ett. Vi har en masterfil. För nÀrvarande var detta den officiella bÀsta praxisen pÄ Terraforms webbplats.

Men nu Àr det skrivet som utfasadt och borttaget. Med tiden insÄg Terraform-gemenskapen att detta var lÄngt ifrÄn den bÀsta praxisen, eftersom folk började anvÀnda projektet pÄ olika sÀtt. Och det finns problem. Till exempel nÀr vi listar alla beroenden pÄ ett stÀlle. Det finns situationer nÀr vi klickar pÄ "Terraform plan" och tills Terraform uppdaterar tillstÄnden för alla resurser kan mycket tid gÄ.

Mycket tid Àr till exempel 5 minuter. För vissa Àr detta mycket tid. Jag har sett fall dÀr det tog 15 minuter. AWS API Àgnade 15 minuter Ät att försöka ta reda pÄ vad som hÀnde med tillstÄndet för varje resurs. Detta Àr ett mycket stort omrÄde.

Och, naturligtvis, kommer ett relaterat problem att dyka upp nÀr du vill Àndra nÄgot pÄ ett stÀlle, sedan vÀntar du 15 minuter och det ger dig en duk av nÄgra Àndringar. Du spottade, skrev "Ja", och nÄgot gick fel. Detta Àr ett mycket verkligt exempel. Terraform försöker inte skydda dig frÄn problem. Det vill sÀga, skriv vad du vill. Det kommer att finnas problem - dina problem. Medan Terraform 0.11 inte försöker hjÀlpa dig pÄ nÄgot sÀtt. Det finns vissa intressanta platser i 0.12 som lÄter dig sÀga: "Vasya, du vill verkligen ha det hÀr, kan du komma till sinnes?"

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Det andra sÀttet Àr att minska detta omrÄde, det vill sÀga samtal frÄn en plats kan vara mindre kopplade frÄn en annan plats.

Det enda problemet Àr att du behöver skriva mer kod, d.v.s. du behöver beskriva variabler i ett stort antal filer och uppdatera detta. Vissa mÀnniskor gillar det inte. Detta Àr normalt för mig. Och vissa mÀnniskor tÀnker: "Varför skriver jag det hÀr pÄ olika stÀllen, jag ska lÀgga allt pÄ ett stÀlle." Detta Àr möjligt, men detta Àr den andra ytterligheten.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Vem har allt detta boende pÄ ett och samma stÀlle? En, tvÄ, tre personer, det vill sÀga nÄgon anvÀnder den.

Och vem anropar en viss komponent, ett block eller en infrastrukturmodul? Fem till sju personer. Detta Àr coolt.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Det vanligaste svaret Àr nÄgonstans i mitten. Om projektet Àr stort, kommer du ofta att ha en situation dÀr ingen lösning Àr lÀmplig och inte allt fungerar dÀr ute, sÄ du hamnar i en blandning. Det Àr inget fel med detta, sÄ lÀnge du förstÄr att bÄda har fördelar.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Om nÄgot Àndrades i stacken VPC och du ville tillÀmpa dessa Àndringar pÄ EC2, d.v.s. du ville uppdatera den automatiska skalningsgruppen eftersom du hade ett nytt subnÀt, dÄ kallar jag denna typ av beroendeorkestrering. Det finns nÄgra lösningar: vem anvÀnder vad?

Jag kan föreslÄ vilka lösningar som finns. Du kan anvÀnda Terraform för att göra magin, eller sÄ kan du anvÀnda makefiler för att anvÀnda Terraform. Och se om nÄgot har förÀndrats dÀr, du kan starta det hÀr.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Hur gillar du det hĂ€r beslutet? Är det nĂ„gon som tror att detta Ă€r en cool lösning? Jag ser ett leende, tvivel har tydligen smugit sig in.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Naturligtvis, prova inte detta hemma. Terraform designades aldrig för att köras frÄn Terraform.

Vid en rapport sa de till mig: "Nej, det hĂ€r kommer inte att fungera." PoĂ€ngen Ă€r att det inte ska fungera. Även om det ser sĂ„ imponerande ut nĂ€r du kan starta Terraform frĂ„n Terraform, och sedan Terraform, bör du inte göra det. Terraform ska alltid starta vĂ€ldigt lĂ€tt.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

https://github.com/gruntwork-io/terragrunt/

Om du behöver samtalsorkestrering nÀr nÄgot har förÀndrats pÄ ett stÀlle, sÄ finns det Terragrunt.

Terragrunt Àr ett verktyg, ett tillÀgg till Terraform, som lÄter dig koordinera och orkestrera samtal till infrastrukturmoduler.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

En typisk Terraform-konfigurationsfil ser ut sÄ hÀr.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Du anger vilken specifik modul du vill anropa.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Vilka beroenden har modulen?

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Och vilka argument accepterar denna modul. Det Àr allt som finns att veta om Terragrunt.

Dokumentationen finns dÀr, och det finns 1 700 stjÀrnor pÄ GitHub. Men i de flesta fall Àr detta vad du behöver veta. Och detta Àr vÀldigt enkelt att implementera i företag som precis har börjat arbeta med Terraform.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

SÄ orkestrering Àr Terragrunt. Det finns andra alternativ.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

LĂ„t oss nu prata om hur man arbetar med koden.

Om du behöver lÀgga till nya funktioner i din kod Àr det i de flesta fall enkelt. Du skriver en ny resurs, allt Àr enkelt.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Om du har nÄgon resurs som du skapat i förvÀg, till exempel, du lÀrde dig om Terraform efter att du öppnat ett AWS-konto och vill anvÀnda de resurser som du redan har, sÄ skulle det vara lÀmpligt att utöka din modul pÄ detta sÀtt, sÄ att det stödjer anvÀndningen av befintliga resurser.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Och stödde skapandet av nya resurser med hjÀlp av blockresursen.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

PÄ output returnerar vi alltid output id beroende pÄ vad som anvÀndes.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Det andra mycket betydande problemet i Terraform 0.11 Àr att arbeta med listor.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

SvÄrigheten Àr att om vi har en sÄdan lista över anvÀndare.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Och nÀr vi skapar dessa anvÀndare med hjÀlp av blockresurs gÄr allt bra. Vi gÄr igenom hela listan och skapar en fil för varje. Allt Àr bra. Och dÄ ska till exempel user3, som Àr i mitten, tas bort hÀrifrÄn, dÄ kommer alla resurser som skapades efter honom att Äterskapas eftersom indexet kommer att Àndras.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Arbeta med listor i en tillstĂ„ndsfull miljö. Vad Ă€r en tillstĂ„ndsfull miljö? Detta Ă€r situationen dĂ€r ett nytt vĂ€rde skapas nĂ€r denna resurs skapas. Till exempel AWS Access Key eller AWS Secret Key, det vill sĂ€ga nĂ€r vi skapar en anvĂ€ndare fĂ„r vi en ny Access eller Secret Key. Och varje gĂ„ng vi tar bort en anvĂ€ndare kommer denna anvĂ€ndare att ha en ny nyckel. Men detta Ă€r inte feng shui, eftersom anvĂ€ndaren inte vill vara vĂ€n med oss ​​om vi skapar en ny anvĂ€ndare Ă„t honom varje gĂ„ng nĂ„gon lĂ€mnar laget.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Detta Àr lösningen. Detta Àr kod skriven i Jsonnet. Jsonnet Àr ett mallsprÄk frÄn Google.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Detta kommando lÄter dig acceptera den hÀr mallen och som utdata returnerar den en json-fil som Àr gjord enligt din mall.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Mallen ser ut sÄ hÀr.

Terraform lÄter dig arbeta med bÄde HCL och Json pÄ samma sÀtt, sÄ om du har förmÄgan att generera Json, sÄ kan du glida in den i Terraform. Filen med tillÀgget .tf.json kommer att laddas ned.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Och sĂ„ jobbar vi med det som vanligt: ​​terraform init, terramorm gĂ€ller. Och vi skapar tvĂ„ anvĂ€ndare.

Nu Àr vi inte rÀdda om nÄgon lÀmnar laget. Vi kommer bara att redigera json-filen. Vasya Pupkin gick, Petya Pyatochkin blev kvar. Petya Pyatochkin kommer inte att fÄ en ny nyckel.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Att integrera Terraform med andra verktyg Àr egentligen inte Terraforms jobb. Terraform skapades som en plattform för att skapa resurser och det Àr allt. Och allt som kommer upp senare Àr inte Terraforms angelÀgenhet. Och det finns ingen anledning att vÀva in den dÀr. Det finns Ansible, som gör allt du behöver.

Men situationer uppstÄr nÀr vi vill utöka Terraform och anropa nÄgot kommando efter att nÄgot har slutförts.

Första sÀttet. Vi skapar en utgÄng dÀr vi skriver detta kommando.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Och sedan anropar vi det hÀr kommandot frÄn skalets terraform-utgÄng och anger vÀrdet som vi vill ha. SÄledes exekveras kommandot med alla ersatta vÀrden. Det Àr vÀldigt bekvÀmt.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Andra sÀttet. Detta Àr anvÀndningen av null_resource beroende pÄ förÀndringar i vÄr infrastruktur. Vi kan anropa samma lokala exe sÄ snart som ID för nÄgon resurs Àndras.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Naturligtvis Àr allt detta smidigt pÄ pappret, eftersom Amazon, precis som alla andra offentliga leverantörer, har ett gÀng egna kantfodral.

Det vanligaste edge-fallet Àr att nÀr du öppnar ett AWS-konto spelar det roll vilka regioner du anvÀnder; Àr denna funktion aktiverad dÀr; kanske du öppnade den efter december 2013; kanske anvÀnder du standard i VPC etc. Det finns mÄnga begrÀnsningar. Och Amazon spred dem genom hela dokumentationen.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Det finns nÄgra saker jag rekommenderar att undvika.

För att börja, undvik alla icke-hemliga argument i Terraform-planen eller Terraform CLI. Allt detta kan lÀggas antingen i en tfvars-fil eller i en miljövariabel.

Men du behöver inte memorera hela detta magiska kommando. Terraform plan – var och ivĂ€g. Den första variabeln Ă€r var, den andra variabeln Ă€r var, den tredje, fjĂ€rde. Den viktigaste principen för infrastruktur som kod som jag anvĂ€nder oftast Ă€r att jag bara genom att titta pĂ„ koden ska ha en klar förstĂ„else för vad som Ă€r utplacerat dĂ€r, i vilket tillstĂ„nd och med vilka vĂ€rden. Och sĂ„ jag behöver inte lĂ€sa dokumentationen eller frĂ„ga Vasya vilka parametrar han anvĂ€nde för att skapa vĂ„rt kluster. Jag behöver bara öppna en fil med tillĂ€gget tfvars, som ofta matchar miljön, och titta pĂ„ allt dĂ€r.

AnvÀnd inte heller mÄlargument för att minska omfattningen. För detta Àr det mycket lÀttare att anvÀnda smÄ infrastrukturmoduler.

Dessutom finns det inget behov av att begrÀnsa och öka parallelliteten. Om jag har 150 resurser och jag vill öka Amazon-parallellen frÄn standardvÀrdet 10 till 100, sÄ kommer nÄgot troligen att gÄ fel. Eller sÄ kanske det gÄr bra nu, men nÀr Amazon sÀger att du ringer för mÄnga samtal kommer du att fÄ problem.

Terraform kommer att försöka starta om de flesta av dessa problem, men du kommer att uppnÄ nÀstan ingenting. Parallelism=1 Àr en viktig sak att anvÀnda om du stöter pÄ nÄgon bugg i AWS API eller inuti Terraform-leverantören. Och sedan mÄste du specificera: parallellism=1 och vÀnta tills Terraform avslutar ett samtal, sedan det andra och sedan det tredje. Han kommer att lansera dem en efter en.

Folk frÄgar mig ofta, "Varför tror jag att Terraform-arbetsytor Àr onda?" Jag tror att principen för infrastruktur som kod Àr att se vilken infrastruktur som har skapats och med vilka vÀrden.

Arbetsytor skapades inte av anvÀndare. Detta betyder inte att anvÀndare skrev i GitHub-problem att vi inte kan leva utan Terraform-arbetsytor. Nej inte sÄ hÀr. Terraform Enterprise Àr en kommersiell lösning. Terraform frÄn HashiCorp bestÀmde att vi behövde arbetsytor, sÄ vi arkiverade det. Jag tycker att det Àr mycket lÀttare att lÀgga det i en separat mapp. DÄ blir det lite fler filer, men det blir tydligare.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Hur arbetar man med koden? Att arbeta med listor Àr faktiskt den enda smÀrtan. Och ta Terraform lÀttare. Det hÀr Àr inte det som kommer att göra allt bra för dig. Det finns ingen anledning att skjuta dit allt som stÄr i dokumentationen.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Ämnet för rapporten skrevs "för framtiden". Jag ska prata om detta mycket kort. För framtiden betyder det att 0.12 kommer att slĂ€ppas snart.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

0.12 Àr massor av nya saker. Om du kommer frÄn vanlig programmering, dÄ missar du alla möjliga dynamiska block, loopar, korrekta och villkorade jÀmförelseoperationer, dÀr vÀnster och höger sida inte berÀknas samtidigt, utan beroende pÄ situationen. Du saknar det mycket, sÄ 0.12 löser det Ät dig.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Men! Om du skriver mindre och enklare, anvÀnder fÀrdiga moduler och tredjepartslösningar, behöver du inte vÀnta och hoppas att 0.12 kommer och fixar allt Ät dig.

Beskrivning av infrastruktur i Terraform för framtiden. Anton Babenko (2018)

Tack för rapporten! Du pratade om infrastruktur som kod och sa bokstavligen ett ord om tester. Behövs tester i moduler? Vems ansvar Àr detta? Behöver jag skriva det sjÀlv eller Àr det modulernas ansvar?

NÀsta Är kommer att fyllas med rapporter om att vi har bestÀmt oss för att testa allt. Vad man ska testa Àr den största frÄgan. Det finns mÄnga beroenden, mÄnga restriktioner frÄn olika leverantörer. NÀr du och jag pratar och du sÀger: "Jag behöver tester", dÄ frÄgar jag: "Vad ska du testa?" Du sÀger att du kommer att testa i din region. DÄ sÀger jag att det hÀr fungerar inte i min region. Det vill sÀga, vi kommer inte ens att kunna komma överens om detta. För att inte tala om att det finns mÄnga tekniska problem. Det vill sÀga hur man skriver dessa tester sÄ att de Àr adekvata.

Jag forskar aktivt om detta Àmne, dvs hur man automatiskt genererar tester baserat pÄ infrastrukturen som du skrev. Det vill sÀga om du skrev den hÀr koden mÄste jag köra den, baserat pÄ detta kan jag skapa tester.

Terratest Àr ett av de oftast nÀmnda biblioteken som lÄter dig skriva integrationstester för Terraform. Detta Àr ett av verktygen. Jag föredrar DSL-typen, till exempel rspec.

Anton, tack för rapporten! Jag heter Valery. LÄt mig stÀlla en liten filosofisk frÄga. Det finns, villkorligt, provisionering, det finns utplacering. Provisioning skapar min infrastruktur, i driftsÀttning fyller vi den med nÄgot anvÀndbart, till exempel servrar, applikationer etc. Och det Àr i mitt huvud att Terraform Àr mer för provisionering, och Ansible Àr mer för distribution, eftersom Ansible ocksÄ Àr för fysisk Infrastrukturen lÄter dig installera nginx, Postgres. Men samtidigt verkar Ansible tillÄta provisionering av till exempel Amazon- eller Google-resurser. Men Terraform lÄter dig ocksÄ distribuera viss programvara med hjÀlp av dess moduler. Ur din synvinkel, finns det nÄgon form av grÀns som gÄr mellan Terraform och Ansible, var och vad Àr bÀttre att anvÀnda? Eller, till exempel, tycker du att Ansible redan Àr skrÀp, ska du försöka anvÀnda Terraform till allt?

Bra frÄga, Valery. Jag tror att Terraform inte har förÀndrats vad gÀller syfte sedan 2014. Det skapades för infrastruktur och dog för infrastruktur. Vi hade fortfarande och kommer att ha ett behov av konfigurationshantering Ansible. Utmaningen Àr att det finns anvÀndardata inuti launch_configuration. Och dÀr drar man Ansible etc. Det hÀr Àr standardskillnaden som jag gillar bÀst.

Om vi ​​pratar om i vacker infrastruktur, sĂ„ finns det verktyg som Packer som samlar in den hĂ€r bilden. Och sedan anvĂ€nder Terraform datakĂ€llan för att hitta den hĂ€r bilden och uppdatera dess launch_configuration. Det vill sĂ€ga pĂ„ detta sĂ€tt Ă€r pipelinen att vi först drar Tracker, sedan drar Terraform. Och om det byggs upp sker en ny förĂ€ndring.

HallÄ! Tack för rapporten! Jag heter Misha, RBS-företag. Du kan ringa Ansible via provisioner nÀr du skapar en resurs. Ansible har ocksÄ ett Àmne som kallas dynamisk inventering. Och du kan först ringa Terraform och sedan ringa Ansible, som tar resurser frÄn staten och kör det. Vad Àr bÀttre?

MÀnniskor anvÀnder bÄda med lika stor framgÄng. Det verkar för mig att dynamisk inventering i Ansible Àr en bekvÀm sak, om vi inte pratar om autoskalningsgrupp. För i autoskalningsgruppen har vi redan vÄr egen verktygslÄda, som kallas launch_configuration. I launch_configuration registrerar vi allt som behöver startas nÀr vi skapar en ny resurs. DÀrför, med Amazon, Àr det överdrivet att anvÀnda dynamisk inventering och lÀsa Terraform ts-filen. Och om du anvÀnder andra verktyg dÀr det inte finns nÄgot koncept för "autoskalningsgrupp", till exempel anvÀnder du DigitalOcean eller nÄgon annan leverantör dÀr det inte finns nÄgon autoskalningsgrupp, dÄ mÄste du manuellt dra API:et, hitta IP-adresser, skapa en dynamisk inventeringsfil, och Ansible kommer redan att vandra genom den. Det vill sÀga, för Amazon finns launch_configuration, och för allt annat finns dynamisk inventering.

KĂ€lla: will.com

LĂ€gg en kommentar