Ansible, en kostnadsfri och öppen källkods plattform från Red Hat, baserad på Python, är en populär lösning för konfigurationshantering och automatisering av IT-processer.
Denna mångsidiga plattform fungerar smidigt med en rad moderna operativsystem, inklusive Linux, Windows och macOS. Ansible använder ett deklarativt språk, YAML (YAML Ain’t Markup Language), för att specificera systemkonfigurationer.
Ansible, tillsammans med andra framstående plattformar för konfigurationshantering, har revolutionerat hur IT-automation bedrivs och satt nya standarder inom branschen. Konfigurationshanteringsverktyg är nu en integrerad del av DevOps verktygslåda och en oumbärlig del i livscykeln för moderna IT-processer. Detta gäller oavsett om infrastrukturen är baserad på en lokal, hybrid- eller molnmiljö. Ansible är inte bara värdefullt för DevOps-team, utan kan även automatisera många rutinmässiga uppgifter som traditionellt utförs av systemadministratörer.
En av fördelarna med Ansible är dess agentlösa arkitektur. Det krävs minimal setup för att komma igång, i princip bara SSH-åtkomst till målmaskinen samt en kompatibel version av Python, vilket ofta redan är förinstallerat som standard i de flesta moderna operativsystem. Dessutom, tack vare sin lätta konstruktion, kan Ansible användas i både nya och äldre system.
Användningsområden för Ansible
Orkestrering
Ansible är ett utmärkt verktyg för att orkestrera olika uppgifter inom systemadministration och distribution. Med hjälp av ”playbooks” kan man använda samma automatiserade processer i flera projekt. Konfigurationsdata i YAML-format gör det möjligt att lagra och versionshantera infrastrukturen i Git-repositorier eller andra stödda versionskontrollsystem.
Applikationsdistribution
Oavsett om det handlar om en enkel applikation med få rader kod eller en mer komplicerad distribution med flera lager, kan Ansible automatisera hela livscykeln för applikationsdistribution.
Säkerhet och efterlevnad
Ansible kan hjälpa till att säkerställa att dina system är skyddade enligt organisationens riktlinjer och följer gällande industristandarder. Ansible kan köras på tusentals servrar, skapa detaljerade granskningsrapporter och automatiskt åtgärda säkerhetsbrister, vilket ger administratören full kontroll över miljön.
Låt oss nu undersöka några av de vanligaste systemadministrationsuppgifterna som kan automatiseras med Ansible.
Kopiera filer mellan lokala och fjärrsystem
För en systemadministratör är det vanligt att flytta filer mellan olika kataloger. Ofta behöver konfigurationsfiler distribueras till fjärrservrar, eller filer flyttas från en fjärrplats till en annan.
Ansibles kopieringsmodul är ett kraftfullt verktyg för dessa uppgifter.
Det är en rutinuppgift för en systemadministratör att övervaka statusen på de servrar som hanteras och genomföra åtgärder enligt organisationens policyer. Ett exempel på detta är att övervaka serverns upptid. Ansible gör det enkelt att hämta och visa dessa värden. Nedan visas ett exempel på hur man kopierar en NTP-konfigurationsfil från en lokal plats till en fjärrserver med hjälp av kopieringsmodulen:
--- - hosts: all gather_facts: no become: yes tasks: - name: Kopiera en ny ntp-konfigurationsfil och säkerhetskopiera originalet om de skiljer sig åt copy: src: ./ntp.conf dest: /etc/ntp.conf owner: root group: root mode: '0644' backup: yes
Konfigurera schemalagda uppgifter (cron-jobb)
Att skapa schemalagda jobb för att utföra rutinmässiga uppgifter är en viktig del av serverhantering. Du kan automatiskt schemalägga säkerhetskopieringar, patchning och granskningar vid specifika tidpunkter, vilket frigör tid för andra uppgifter.
Cron är ett verktyg i Linux som underlättar schemaläggning av uppgifter. Ansible kan hjälpa dig att lägga till och modifiera dessa jobb. Följande ”playbook” visar hur man enkelt kan konfigurera ett rsync-jobb som root på en eller flera servrar med Ansible:
--- - hosts: all gather_facts: no become: yes tasks: - name: Skapa cron-jobb cron: name: "Ställ in rsync-jobb" user: root minute: "5" hour: "4" job: "rsync -avz /sökväg/till/mapp1 /sökväg/till/mapp2 2>&1"
Hantera diskar och filsystem
Ansible kan användas för att hantera diskar, partitionslayouter, filsystem och monteringar, inklusive /etc/fstab på Linux-servrar. Detta görs möjligt med hjälp av olika Ansible-moduler. Följande exempel visar hur man skapar en partition på en 100 GB disk, formaterar den med ext4, skapar en ny katalog för att montera partitionen och slutligen monterar den. En post i /etc/fstab skapas också för temporär eller permanent montering, beroende på modulalternativ.
--- - hosts: all gather_facts: no become: yes tasks: - name: Skapa en partition parted: device: /dev/sdb number: 1 part_end: "100%" state: present - name: Formatera ny partition filesystem: fstype: ext4 dev: /dev/sdb1 - name: Skapa monteringskatalog file: path: /data state: directory - name: Montera partition mount: path: /data src: /dev/sdb1 fstype: ext4 state: mounted
Samla serverloggar
Att samla och lagra loggar på en central plats är viktigt för säkerhet, revision och analys. Ansible gör det enkelt att samla loggar från olika servrar och lagra dem på en definierad plats. Följande ”playbook” visar hur man gör detta:
--- - hosts: all gather_facts: no become: yes tasks: - name: Hitta loggar find: paths: /var/log/ patterns: '*.log' recurse: yes register: _logs - name: Hämta loggar fetch: src: "{{ item.path }}" dest: /tmp/logs with_items: "{{ _logs.files }}"
Installera eller avinstallera paket och programvara
Ofta måste paket installeras på begäran av användare eller som en del av initiala serverkonfigurationer. Det kan även vara nödvändigt att ta bort paket som inte längre behövs eller som har allvarliga buggar. Ansible gör det möjligt att enkelt installera eller avinstallera paket utan att behöva logga in på varje server individuellt och köra manuella kommandon. Följande exempel visar installation och avinstallation av paket på Ubuntu- och RHEL/CentOS-baserade Linux-servrar.
--- - hosts: ubuntu gather_facts: no tasks: - name: Installera lsof-verktyg apt: pkg: lsof state: latest sudo: yes - name: Ta bort ARP Scan-verktyg apt: pkg: arp-scan state: absent sudo: yes --- - hosts: centos gather_facts: no tasks: - name: Installera lsof-verktyg yum: pkg: lsof state: latest sudo: yes - name: Ta bort ARP Scan-verktyg yum: pkg: arp-scan state: absent sudo: yes
Hantera användare
Användare och grupper utgör grunden för hur Unix/Linux-baserade system hanterar åtkomst och behörigheter. I en stor organisation kan det vara en stor utmaning att hantera användare och grupper manuellt, trots automatisering.
Med Ansible får systemadministratören ett kraftfullt verktyg för att skapa, ändra och ta bort användare och grupper med de funktioner som stöds i operativsystemet.
Följande enkla exempel visar hur man skapar och tar bort användare och grupper med Ansible. Efter att denna ”playbook” har körts kommer målservrarna att ha gruppA och gruppB skapade med de angivna GID:na, medan användare1 tas bort om den finns. En ny användare utan skal kommer att skapas som användare2 med det angivna UID, tilldelade grupper och låst lösenord.
--- - hosts: all gather_facts: no become: yes tasks: - group: gid: 12310 name: groupA state: present - group: gid: 12311 name: groupB state: present - user: name: user1 state: absent - user: name: user2 uid: 12427 shell: /bin/false password_lock: yes groups: groupA, groupB
Hantera tjänster
Tjänster är processer som körs i bakgrunden och tillhandahåller specifika funktioner, till exempel sshd som möjliggör SSH-anslutningar. Med Ansible kan du hantera system- och användartjänster, till exempel starta, stoppa och starta om dem. Följande ”playbook” visar hur detta fungerar:
--- - hosts: all gather_facts: no become: yes tasks: - name: Starta om ssh-demonen service: name: ssh state: restarted - name: Stoppa sssd-demonen service: name: sssd state: stopped - name: Starta httpd-demonen service: name: httpd state: started
I exemplet ovan kommer SSH-tjänsten att startas om, medan SSSD-tjänsten stoppas. HTTPD-demonen startas slutligen. Eftersom Ansible är idempotent kommer tjänster som redan är startade eller stoppade inte att påverkas, medan omstarter alltid ändrar tjänstens tillstånd. Det är viktigt att vara uppmärksam på tjänstens namn, eftersom olika Linux-distributioner kan använda olika namn för samma tjänst, till exempel ssh och sshd.
Sammanfattning 👨💻
Ansible underlättar arbetet för systemadministratörer genom att automatisera repetitiva och tidskrävande uppgifter, minska risken för mänskliga fel och frigöra värdefull tid. Dessutom möjliggör det lagring av konfigurationsdata i ett centralt kodlager som Git, vilket underlättar samarbete och granskning av all aktivitet.
För mer information om Ansible och dess omfattande uppsättning moduler, se dokumentationen.