Lösvirkeshus eller modulbygge - Ansible vs Terraform

Loggboken 3

Jag kliver ut från mässhallen med fler frågor än svar. Vår arbetsgrupp på nätverksavdelningen sitter inte längre bredvid varandra på samma kontor – vi är utspridda över flera nordiska huvudstäder och några av oss jobbar från Sydeuropa.

Distansen gör att vi löser problem på olika sätt. Det fungerar i i viss mån, men när något behöver felsökas blir det en huvudvärk. Därför skickades jag på konferens: vi behöver ett nytt arbetssätt.

Med automation kan vi lösa problem på samma sätt, minska antalet one-offs, reducera risken för mänskliga fel och knyta ihop teamet. Som med det mesta finns det flera vägar att gå för att nå slutresultatet, jag har valt att undersöka de populäraste - Ansible och Terraform.

För en nätverkstekniker kan båda verktyg lösa samma problem: konsekventa ändringar, snabbare arbetsflöden, färre misstag och versionshantering via Git. Men vägen dit är olika. Terraform använder state som skriver över allt som inte matchar, vilket gör manuella ändringar riskabla.

Ordet idempotent nämns flitigt på konferensen. Idempotent betyder att en operation kan upprepas flera gånger med samma resultat som om den kördes en gång.

Ansible är idempotent till en viss grad, beroende på modulens utformning. Terraform är däremot alltid idempotent eftersom det utgår från sin state-fil. I Terraform definierar man hur miljön ska se ut, medan man i Ansible beskriver hur man tar sig dit.

Ett sätt att visualisera skillnaden är att tänka på modulhus vs lösvirkeshus:

  • Terraform är modulhuset – du beställer ett färdigt, exakt definierat resultat. Alla delar är prefabricerade, och när byggsatsen levereras vet du precis hur slutprodukten kommer att se ut.

  • Ansible är lösvirkeshuset – du har ritningen och materialet, men byggprocessen kan variera beroende på vem som spikar eller i vilken ordning stegen tas. Resultatet blir oftast det du tänkt dig, men processen kan skilja sig åt något varje gång.

Cloud-teamet använder redan idag Terraform och påpekar ständigt att inga manuella ändringar får göras i GUI. Serverteamet kör Ansible – de provisionerar kluster, uppgraderar mjukvara och migrerar virtuella maskiner och uppskattar flexibiliteten.

Min plattform spelar stor roll. Långt ifrån alla leverantörer har stöd för Terraform medan de flesta har stöd för Ansible. Leverantören, ofta i kompani med eldsjälar är de som vidareutvecklar det underliggande maskineriet. Providers för Terraform, Modules för Ansible.

Vissa går så långt som att erbjuda fullfjädrade lösningar. Ett exempel är Arista som byggt ett ramverk ovanpå Ansible för infrastruktur som kod enligt deras best practice, och därmed lagt ner fortsatt utveckling av sin Terraform provider. Vilka som är stakeholders på vårt bolag och hur vi kan samarbeta med dem är ytterligare en fråga vi bör ställa oss.

Så är Ansible eller Terraform bäst? Båda är kraftfulla, men på olika sätt. Det viktiga är att vi som team samarbetar kring en produkt, för först då får vi skörda hela automationens värde.

Nästa
Nästa

Från VPN-trassel till SSE