2017-02-19
Guide

Kom igång med Ansible på macOS (X)

Har du börjat använda Ansible ännu?  Det är ungefär den enda fråga du behöver ställa dig själv, och om svaret är nej är frågan givetvis: varför inte?

Jag har kört Ansible ett tag nu och är helt kär i det. Det är, enkelt uttryckt, ett till synes simpelt verktyg för att via SSH exekverera kommandon på en annan maskin, oavsett om det är *BSD, macOS, Linux, AIX, och så vidare. Du installerar Ansible på en maskin, lägger in alla maskiner i en egen hosts-fil som Ansible använder, och sedan kan du utifrån de maskiner du lagt in i hosts-filen köra kommandon. Man måste skapa en ssh-nyckel som man trycker ut till samtliga maskiner man vill hantera via Ansible men även det är busenkelt att göra.

Man kan skapa grupper beroende på vilket kommando man vill köra och om man tar undertecknad som exempel är det ganska enkelt.  En sak jag gör relativt ofta är att starta om Apache på mina webbnoder. Det är ju enkelt att göra manuellt, men när man har gjort det några gånger så blir det ganska tjatigt, i synnerhet om man har sex webbnoder att köra kommandot på varje gång.  I Ansible:s hostfil har jag skapat en grupp som ser ut så här:

[webservers]

webnod01.joacimmelin.se

webnod02.joacimmelin.se

webnod03.joacimmelin.se

webnod04.joacimmelin.se

webnod05.joacimmelin.se

webnod06.joacimmelin.se

Du kan lägga IP-adresser eller hostnamn, det är upp till dig. utifrån denna grupp man man sedan ge kommandon. I mitt fall vill jag starta om Apache-servern för att läsa in den gemensamma konfigurationsfil som alla webbnoderna använder. Detta är busenkelt med Ansible:

ansible -m shell -a 'service httpd restart' webservers

Det är sannolikt rätt enkelt att läsa ut vad som händer ovan men för tydlighetens skull förklarar jag det snabbt:

Jag säger åt Ansible att ladda en modul som heter shell som innebär att jag vill skicka ett kommando i bash (som är standardshell på maskinerna i fråga), och det kommandot är service httpd restart. Kommandot skickas till alla servrar i gruppen “webservers”

Jag har lagt det i ett script jag enkelt döpt till restartweb.sh och när jag kör kommandot får jag ut följande resultat:

./restartweb.sh
webnod01.joacimmelin.se | SUCCESS | rc=0 >>
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

webnod04.joacimmelin.se | SUCCESS | rc=0 >>
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

webnod05.joacimmelin.se | SUCCESS | rc=0 >>
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

webnod02.joacimmelin.se | SUCCESS | rc=0 >>
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

webnod03.joacimmelin.se | SUCCESS | rc=0 >>
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

webnod06.joacimmelin.se | SUCCESS | rc=0 >>
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

I Mac-världen finns det massor du kan göra. Du kan exempelvis köra serveradmin med olika kommandon på flera servrar samtidigt, eller varför inte se till att synka över en backupfil till en offsite-backup via ssh med rSync, allt styrt av Ansible.

Det finns tonvis med fler saker du kan göra i Ansible så jag rekommenderar varmt att du gräver vidare om du vill göra ditt liv som systemadministratör lite enklare.

En bra guide som hjälper dig att komma igång på macOS (X) finns att läsa här. Denna guide är också läsvärd.



© 2018 Omsoc Publishing AB