Hem Företag Vad är Ansible?

Vad är Ansible?

by Gästförfattare

Ansible är ett agentlöst automationsverktyg skrivet i Python. Den ansluter till dina kunder via SSH och låter dig automatisera de tråkiga, repetitiva uppgifter du inte vill göra. Det låter dig ta en uppgift utförd av en människa som kan ta en timme att utföra, och konvertera den till ett enda kommando som slutförs inom några minuter. Detta förbättrar din prestation och gör att du kan börja arbeta med nästa stora projekt.


Ansible är ett agentlöst automationsverktyg skrivet i Python. Den ansluter till dina kunder via SSH och låter dig automatisera de tråkiga, repetitiva uppgifter du inte vill göra. Det låter dig ta en uppgift utförd av en människa som kan ta en timme att utföra, och konvertera den till ett enda kommando som slutförs inom några minuter. Detta förbättrar din prestation och gör att du kan börja arbeta med nästa stora projekt.

Ansible fördelar

Ansible ger många fördelar, låt oss ta lite tid att titta på några av de viktigaste. Jag kommer att dela upp detta i avsnitt, en för dem som inte har någon eller minimal automatisering, och en annan för dem som redan använder ett automationsverktyg som Salt eller Puppet.

Ny på automation

Om du är ny inom automatisering kan ett enkelt verktyg hjälpa dig med inlärningskurvan. Låt oss titta på några anledningar till varför du bör välja Ansible framför de andra tillgängliga verktygen.

1. Enkel syntax

På grund av Ansibles enkla sätt att definiera uppgifter är det väldigt enkelt att komma igång med. Ta utdraget nedan till exempel:

-

– värdar: alla

 uppgifter:

  – namn: Installera Nginx

   mums:

     namn: nginx

     tillstånd: senast

En komplett Ansible-uppgift, motsvarande att köra `yum install nginx` på alla dina värdar.

Du kan förmodligen redan berätta vad den gör. Den installerar den senaste versionen av nginx webbserver med öppen källkod på alla dina definierade värdar. Vi kommer att titta på att definiera värdar senare. Eftersom alla uppgifter du skapar finns i YAML är de både lätta att läsa och lätta att skapa. Detta är viktigt när du börjar lära dig ett nytt verktyg, eftersom det gör att du snabbt kan få erfarenhet samtidigt som du bygger upp förtroende och förståelse.

2. Git Love

Eftersom dina automatiseringar är enkla textfiler är det möjligt att lagra dem i Git (eller annat källförrådssystem), där de har ändringskontroll och kan checkas ut och uppdateras från en central källa.

3. Enkel exekutionsorder

Eftersom uppgifter utförs i den ordning du definierar behöver du inte oroa dig för exekveringsordern. Definiera helt enkelt stegen som du skulle göra för en människa, så kommer Ansible att utföra dem i exakt den ordningen varje gång, utan att behöva oroa dig för att missa ett steg.

4. Agentlös

Att ha ett agentlöst sätt att hantera dina värdar är viktigt, dubbelt så om du inte redan har ett sätt att distribuera en agent på ett automatiserat sätt. Att försöka starta en automatiseringspress i en befintlig miljö kan vara en mardröm, speciellt om det finns tiotals eller hundratals maskiner som behöver den nya agenten.

Automationsfantast

Om du redan har gjort lite automatisering, kanske med Bash, Python eller Powershell, kanske du undrar vad Ansible kommer med på bordet. Låt oss ta en titt.

1. Enkel orkestrering

Har du någonsin försökt uppdatera en webbplats med ett bash-script? Säg att du har en webblastbalanserare eller omvänd proxy, 5 webbservrar, en databaslastbalanserare och 2 databasservrar. Du kanske spenderar hundratals rader på att helt enkelt kontrollera att varje komponent har uppdaterats framgångsrikt.

Med Ansible kan du definiera hälsokontroller, rullande uppgraderingar och ställa in dina lastbalanserare för att ta bort lägg till och ta bort noder under varje steg av uppgraderingen. Du kan se ett exempel på detta i den officiella dokumentationen för kontinuerlig leverans och rullande uppgraderingar.

2. Idempotens

Idempotens är egenskapen för vissa operationer inom matematik och datavetenskap där de kan tillämpas flera gånger utan att ändra resultatet utöver den ursprungliga applikationen.- Wikipedia I grund och botten är målet att köra din spelbok en gång för att ställa in saker som önskat, och sedan fortsätta köra den varje *X*antal timmar/dagar/veckor för att säkerställa att inget har förändrats. Om något förändras bör du leta efter källan till *Configuration Drift* i din miljö.

Konfiguration Drift är där servrar i infrastrukturen blir mer och mer olika ju längre tiden går.- Shadow Soft

3. Inbyggd hemlighetslagring

Ansibles inbyggda hemlighetslagring, kallad Ansible Vault, låter dig lagra känslig data som lösenord, API-nycklar eller till och med privata nycklar på ett säkert sätt, med resten av din kodbas, i källkontroll. Detta är ovanligt i Bash eller Python, vanligtvis kräver tredjepartsverktyg som ett API-aktiverat lösenordsvalv.

4. Expanderbarhet

Ansible kan enkelt utökas för både Windows- och Linux-moduler, samt för att kommunicera med verktyg från tredje part. Det betyder att om du vill automatisera något så är chansen stor att det redan finns en gemenskapsmodul du kan använda, eller så kan du skapa eller anpassa en befintlig modul för att passa dina behov.

Du kan hitta information om att utveckla dina egna moduler med den officiella dokumentationen, eller så kan du kolla in Ansible Galaxy för community-moduler.

Komma igång med Ansible

Ansible installation

Att komma igång är lika enkelt som att installera Ansible på din arbetsstation eller server. Jag kommer att visa RedHat/CentOS-kommandona, men du kan se andra installationssteg i den officiella dokumentationen.

`sudo yum install ansible`

Det är allt! Du har en fullt fungerande Ansible-kontrollnod installerad och är redo att gå.

Lager

Ansible behöver veta vilka maskiner han ska prata med och köra dina spelböcker mot. Så låt oss titta på att skapa en grundläggande inventering. Standardinventeringsfilen är tillgänglig på `/etc/ansible/hosts` på Linux. Om du tittar på den filen kommer du att se att den är i ett INI-liknande format och förmodligen ser ut ungefär så här:

mail.example.com

[webbservrar]

foo.example.com

bar.example.com

[dbservrar]

one.example.com

two.example.com

three.example.com

Som förklaras i dokumentationen är rubrikerna inom parentes gruppnamn, som gör att du kan klassificera system i godtyckliga grupper. Jag skulle rekommendera dig att ta lite tid och sätta upp din inventeringsfil, eftersom det är viktigt för Ansible att veta vilka värdar du vill köra uppgifter mot.

Skapa en Playbook

En spelbok är en samling uppgifter som ska köras mot dina värdar. Du kan skapa en spelbok som är lika enkel som en enda fil med en spelning, eller många filer med flera villkor och importer från andra spelböcker. Vi kommer att börja med en enkel spelbok som installerar, startar och lägger till brandväggsregler för nginx på våra webbservrar. I vår hosts-fil kan vi ha något sånt här:

[webbservrar]

web01.exempel.com

web02.exempel.com

och i vår `nginx-install.yaml`-fil har vi följande:

-

– värdar: webbservrar

 uppgifter:

  – namn: Installera Nginx

   mums:

     namn: nginx

     tillstånd: senast

  – namn: Starta Nginx

   tjänst:

     namn: nginx

     tillstånd: startat

  – namn: Tillåt port 80 genom brandvägg

   brandvägg:

     port: 80/tcp # Alternativt kan du använda syntaxen "service: http".

     permanent: ja

     status: aktiverad

Översikt över Ansible-värden som ansluter till dina webbservrar och installerar NGINX. För att köra denna playbook, kör helt enkelt `ansible-playbook nginx-install.yaml` och Ansible kommer att gå och installera Nginx på alla värdar i din webbservergrupp. Det här är en enkel spelbok med ett spel, men det är ett bra exempel på hur lätt Ansible kan användas i din miljö.

Slutsats

Som du kan se är Ansible ett mycket flexibelt och lättanvänt automationsverktyg som kan fungera i alla miljöer. Med sin enkla inlärningskurva och förmåga att växa till dina behov är Ansible ett av de bästa automationsverktygen för infrastrukturinstallation till en fullständig DevOps-hanterad miljö.

- Justin Gauthier

@justinsane454