Innføring i Ansible: Automatisering for moderne IT
Ansible, et gratis og åpen kildekode-prosjekt basert på Python fra Red Hat, er en populær plattform for å administrere konfigurasjoner og automatisere IT-prosesser.
Den opererer på tvers av flere plattformer, inkludert Linux, Windows og Mac, og støtter et deklarativt språk basert på YAML (YAML Ain’t Markup Language). Dette språket brukes til å beskrive ønsket systemkonfigurasjon.
Sammen med andre moderne verktøy for konfigurasjonsadministrasjon har Ansible endret måten IT-automatisering utføres og satt nye standarder i bransjen. Verktøy for konfigurasjonsadministrasjon er nå en integrert del av DevOps-verktøykassen og er avgjørende for enhver moderne IT-prosess. Dette gjelder uavhengig av om infrastrukturen er lokal, hybrid eller skybasert. Ansible er ikke bare nyttig for DevOps, men også for å automatisere mange rutineoppgaver som en systemadministrator utfører daglig.
En stor fordel med Ansible er at det er agentløst og enkelt å sette opp. Det krever kun SSH-tilgang til målmaskinen og en støttet versjon av Python, som som oftest allerede er installert som standard på de fleste operativsystemer. Som et lettvektsverktøy kan Ansible brukes i både eldre og innovative systemer.
Bruksområder for Ansible
Orkestrering
Ansible er et utmerket verktøy for å orkestrere systemadministrasjons- og distribusjonsoppgaver. Med «Playbooks» kan du gjenbruke samme arbeidsflyt på tvers av forskjellige prosjekter. Konfigurasjonsdata lagret i YAML-format tillater versjonskontroll av infrastrukturen din via Git eller andre støttede plattformer.
Applikasjonsimplementering
Ansible forenkler automatiseringen av hele livssyklusen for applikasjonsimplementering, uavhengig av kompleksitet – fra enkle applikasjoner til omfattende implementeringer på flere nivåer.
Sikkerhet og samsvar
Ansible bidrar til å sikre at systemene dine overholder organisasjonens retningslinjer og bransjestandarder. Det kan analysere og rette sikkerhetshull på tusenvis av servere, og gir administratoren full kontroll over miljøet.
La oss se på noen vanlige systemadministratoroppgaver som kan automatiseres med Ansible.
Kopiering av filer mellom lokale og eksterne systemer
En vanlig oppgave for en systemadministrator er å kopiere filer mellom kataloger, ofte til eksterne servere. Noen ganger er det også nødvendig å flytte filer fra en ekstern plassering til en annen.
Ansibles «copy module» gjør det mulig å automatisere disse oppgavene ved hjelp av en «playbook».
Det er også viktig for en systemadministrator å ha oversikt over statusen til administrerte servere og utføre handlinger basert på organisasjonens retningslinjer, for eksempel å overvåke servernes oppetid. Med Ansible kan du enkelt hente ut og presentere oppetidsverdier. Nedenfor er et eksempel på hvordan du kopierer en NTP-konfigurasjonsfil fra et lokalt til et eksternt system ved hjelp av «copy module»:
--- - hosts: all gather_facts: no become: yes tasks: - name: Kopier ny ntp-konfigurasjonsfil og ta sikkerhetskopi av originalen hvis de er forskjellige copy: src: ./ntp.conf dest: /etc/ntp.conf owner: root group: root mode: '0644' backup: yes
Konfigurering av flere Cron-jobber
Planlegging av jobber for å utføre rutineoppgaver er en sentral del av serveradministrasjon. Du kan automatisere sikkerhetskopier, oppdateringer og revisjoner på bestemte tidspunkter, noe som frigjør tid til andre oppgaver.
Cron er et Linux-verktøy for planlegging av jobber, og Ansible kan brukes til å legge til eller endre disse. Nedenfor er et eksempel på en «playbook» som viser hvordan du enkelt kan sette opp en rsync-jobb som root på en eller flere servere ved hjelp av Ansible:
--- - hosts: all gather_facts: no become: yes tasks: - name: Implementer cron-jobb cron: name: "Sett rsync-jobb" user: root minute: "5" hour: "4" job: "rsync -avz /path/to/folder1 /path/to/folder2 2>&1"
Administrasjon av disker og filsystemer
Ansible kan også brukes til å administrere disker, partisjonsoppsett, filsystemer og monteringer, inkludert /etc/fstab på Linux-servere. Dette gjøres mulig med ulike Ansible-moduler. Nedenfor er et eksempel som viser hvordan du oppretter en partisjon på en 100 GB disk, formaterer den med ext4, lager en ny katalog for å montere partisjonen og til slutt monterer den i den angitte katalogen. Oppføringen i /etc/fstab blir også opprettet enten for midlertidig eller permanent montering, avhengig av modulalternativene.
--- - hosts: all gather_facts: no become: yes tasks: - name: Opprett en partisjon parted: device: /dev/sdb number: 1 part_end: "100%" state: present - name: Formater ny partisjon filesystem: fstype: ext4 dev: /dev/sdb1 - name: Opprett monteringskatalog file: path: /data state: directory - name: Monter partisjon mount: path: /data src: /dev/sdb1 fstype: ext4 state: mounted
Samling av serverlogger
Det er ofte viktig å holde loggene på et praktisk sted for sikkerhet, revisjon og analyse. Med Ansible kan du enkelt samle logger fra ulike servere og lagre dem på en definert plassering. Nedenfor er en «playbook» for å gjøre dette:
--- - hosts: all gather_facts: no become: yes tasks: - name: Finn logger find: paths: /var/log/ patterns: '*.log' recurse: yes register: _logs - name: Hent logger fetch: src: "{{ item.path }}" dest: /tmp/logs with_items: "{{ _logs.files }}"
Installasjon og fjerning av pakker og programvare
Ofte må pakker installeres på forespørsel eller som en del av serveroppsett. Det kan også være nødvendig å fjerne pakker som ikke lenger er nødvendige. Ansible gjør det enkelt å installere og fjerne pakker uten å måtte logge inn på hver server og kjøre manuelle kommandoer. Nedenfor er et eksempel som viser installasjon og fjerning av en pakke hver for Ubuntu og RHEL/CentOS-baserte servere.
--- - hosts: ubuntu gather_facts: no tasks: - name: Installer lsof-verktøyet apt: pkg: lsof state: latest sudo: yes - name: Fjern ARP Scan-verktøyet apt: pkg: arp-scan state: absent sudo: yes --- - hosts: centos gather_facts: no tasks: - name: Installer lsof-verktøyet yum: pkg: lsof state: latest sudo: yes - name: Fjern ARP Scan-verktøyet yum: pkg: arp-scan state: absent sudo: yes
Administrasjon av brukere
Brukere og grupper er grunnleggende for hvordan Unix/Linux-systemer administrerer tilgang og tillatelser. I en stor organisasjon kan det være utfordrende å administrere brukere og grupper.
Med Ansible har systemadministratoren et godt verktøy for å opprette, endre og slette brukere og grupper med alle de ulike mulighetene som operativsystemet støtter.
Nedenfor er et eksempel som viser hvordan du oppretter og sletter brukere og grupper med Ansible. Etter at denne «playbook» er kjørt, vil serverne ha gruppe A og gruppe B opprettet med de gitte GID-ene, mens bruker1 vil bli fjernet, hvis den er tilstede. En ny bruker uten skall blir opprettet som bruker2 med den gitte UID, grupper og låst passord.
--- - 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
Administrasjon av tjenester
Tjenester er prosesser som kjører i bakgrunnen og utfører funksjoner som sshd som gir SSH-tilkobling. Med Ansible kan du administrere system- og brukertjenester, inkludert start, stopp og omstart. Nedenfor er et eksempel på en «playbook» som demonstrerer dette:
--- - hosts: all gather_facts: no become: yes tasks: - name: Start ssh-demonen på nytt service: name: ssh state: restarted - name: Stopp sssd-demonen service: name: sssd state: stopped - name: Start httpd-demonen service: name: httpd state: started
I eksemplet over vil SSH-tjenesten startes på nytt, mens SSSD-tjenesten stoppes. httpd-demonen startes til slutt. Siden Ansible er idempotent, vil tjenester som allerede er startet eller stoppet ikke endres, mens omstart alltid vil endre tjenestetilstanden. Husk å sjekke tjenestenavnet, da forskjellige Linux-distribusjoner kan bruke andre navn for samme tjeneste.
Oppsummering 👨💻
Ansible forenkler arbeidet til en systemadministrator ved å automatisere repeterende og tidkrevende oppgaver, og redusere menneskelige feil og innsats. I tillegg muliggjør Ansible lagring av konfigurasjonsdata i et sentralt kodelager som Git, slik at flere brukere kan samarbeide og evaluere endringer.
For mer informasjon om Ansible og det omfattende settet med moduler, se dokumentasjonen.