Har du hört talas om Ansible men är osäker på vad det egentligen är? Ingen fara, inom de närmaste fem minuterna kommer du att ha en tydlig bild av vad Ansible handlar om.
Vad är Ansible?
Ansible är ett open-source DevOps-verktyg som underlättar konfigurationshantering, distribution, provisionering och mycket mer. Det är enkelt att implementera; Ansible använder SSH för att etablera kommunikation mellan servrar. Automatiseringen styrs av så kallade playbooks, vilka är skrivna på det lättförståeliga språket YAML.
Ansible bidrar till ökad tillförlitlighet, konsekvens och skalbarhet i din IT-infrastruktur. Med Ansible kan du automatisera konfigurering av databaser, lagring, nätverk och brandväggar. Det garanterar att alla nödvändiga paket och annan programvara är enhetligt installerade på servern, vilket möjliggör en problemfri applikationsdrift.
Låt oss ta ett konkret exempel: Du har en debug-version av en applikation som är utvecklad i Visual C++. För att kunna köra den applikationen på en dator krävs vissa förutsättningar, som till exempel Microsoft Visual C++-bibliotekens DLL-filer och att Visual C++ är installerat på datorn. Det är här Ansible kommer in i bilden och ser till att alla nödvändiga baspaket och all programvara är installerade på din dator, så att din applikation kan köras smidigt oavsett om det är i test- eller produktionsmiljö.
Ansible sparar även all historisk data för din applikation. Det innebär att om du vid något tillfälle vill återgå till en tidigare version eller uppgradera den, kan du enkelt göra det.
Låt oss nu gå igenom några av de viktigaste funktionerna:
Agentlöst – Ansible kräver inte någon agentprogramvara på de noder som ska hanteras, vilket skiljer det från lösningar som Docker och Chef.
Pythonbaserat – Ansible är byggt på Python, ett robust och snabbt programmeringsspråk som används flitigt idag.
SSH – Använder det säkra och lösenordslösa nätverksautentiseringsprotokollet SSH. Det enda du behöver göra är att kopiera nyckeln till klienten.
Push-arkitektur – Konfigurationerna skickas direkt till klienterna. Du definierar konfigurationerna i en playbook och trycker sedan ut dem till alla noder samtidigt. Det ger en otrolig effektivitet när du vill göra ändringar på tusentals servrar inom loppet av några minuter.
Enkel installation – Kräver minimal installation och konfiguration för att komma igång.
Ansibles Arkitektur
Låt oss börja med att betrakta en offentlig eller privat molnserver, vanligtvis en Linux-server. Denna server kan även fungera som ett arkiv för alla IT-installationer och konfigurationer.
Den ovanstående arkitekturen omfattar ett antal värdmaskiner som en Ansible-server ansluter till, och via SSH distribuerar playbooks.
Den innehåller en automatiseringsmotor som gör det möjligt för användare att direkt köra en playbook på värdarna. Automatiseringsmotorn består av flera komponenter. Den första är en värdinventering, som är en lista över alla IP-adresser för de olika värdarna.
Därefter har vi modulerna. Ansible levereras med hundratals inbyggda moduler. Moduler är kodsnuttar som körs när du startar en playbook. En playbook innehåller pjäser, en pjäs består av olika uppgifter och en uppgift innehåller moduler.
När du kör en playbook, är det modulerna som utförs på dina värdar. Dessa moduler innehåller de åtgärder som ska utföras. Du kan även skapa egna anpassade moduler genom att skriva ett par rader kod och sedan inkludera dem i din process.
Arkitekturen innehåller även playbooks, som i praktiken definierar ditt arbetsflöde. De uppgifter du skriver i en playbook kommer att utföras i exakt den ordningen du har angett. Om du till exempel anger att ett paket ska installeras först, och sedan startas, kommer det att ske i just den ordningen. Playbooks är skrivna i YAML-kod, ett enkelt datalagningsspråk som är lätt att förstå.
I arkitekturen ingår även plugins, vilka är specialiserade moduler som körs på huvudkontrollmaskinen innan en modul körs på noderna. Plugins används för loggningsändamål, exempelvis genom att erbjuda ”callback plugins” som möjliggör koppling till olika Ansible-händelser för visning och loggning. ”Cache plugins” används för att hålla en cache med fakta, vilket minskar behovet av kostsamma faktainsamlingar. Ansible erbjuder även ”action plugins” som är frontend-moduler, och de kan utföra åtgärder på styrmaskinen innan modulerna själva anropas.
I arkitekturen finns även anslutningsplugins. Det är inte alltid nödvändigt att använda SSH för att ansluta till värddatorerna. Du kan också använda anslutningsplugins. Ansible har till exempel ett plugin för Docker-containeranslutningar, vilket gör det enkelt att ansluta till Docker-containrar och börja konfigurera dem direkt.
Det var en sammanfattning av arkitekturen. Nu ska vi gå igenom hur det hela fungerar i praktiken.
Hur fungerar Ansible?
Ansible fungerar genom att ansluta till noder och skicka ut små program, så kallade Ansible-moduler. Dessa moduler körs sedan via SSH som standard, och de tas bort när de har utfört sitt uppdrag.
Ansibles hanteringsnod är den styrande noden, som kontrollerar hela utförandet av en playbook. Det är från denna nod som installationen körs. Inventeringsfilen tillhandahåller listan över de värdar där modulerna ska köras. Hanteringsnoden etablerar SSH-anslutningen och kör därefter modulerna på värddatorerna och installerar produkten. När installationen är klar tas modulerna bort. Så enkelt fungerar Ansible.
Kanske är du nu intresserad av att lära dig hur du installerar och konfigurerar Ansible.
Sammanfattning
Jag hoppas att du nu har en bra grundförståelse för Ansible. Ansible kan revolutionera hur du hanterar din infrastruktur. Om du är systemadministratör eller utvecklare, kan du kolla in den här praktiska utbildningen för att utveckla dina kunskaper.