Ansible, et gratis og åpen kildekode Python-basert prosjekt av Red Hat, er en populær plattform for konfigurasjonsadministrasjon og IT-automatisering.
Den er multiplattform og kan fungere med de fleste moderne operativsystemer, inkludert Linux, Windows og Mac. Den støtter et deklarativt språk skrevet i YAML eller YAML Ain’t Markup Language for å beskrive systemkonfigurasjon.
Ansible, sammen med andre moderne plattformer for konfigurasjonsadministrasjon, har revolusjonert IT-automatisering og industristandarder. Konfigurasjonsadministrasjonsverktøy har blitt en del av DevOps-verktøysettet og er en uatskillelig del av enhver moderne IT-prosesslivssyklus. Dette gjelder for ethvert moderne infrastrukturmiljø, enten det er bygget på et lokalt, hybrid- eller skymiljø. Ikke bare for DevOps, men Ansible kan også hjelpe med å automatisere mange daglige oppgaver utført av en systemadministrator.
En av fordelene med å bruke Ansible er at den er agentfri og ikke trenger mye for å komme i gang i tillegg til SSH-tilgang til målmaskinen og den støttede versjonen av Python, som allerede er installert som standard på de fleste moderne operativsystemer. Siden det er et lettvektsverktøy, kan det også distribueres og brukes med en arv til innovative systemer.
Innholdsfortegnelse
Bruk av Ansible
Orkestrering
Ansible er et valgfritt verktøy for orkestrering av ulike systemadministrasjons- og distribusjonsoppgaver. Playbooks tillater bruk av de samme orkestreringsarbeidsflytene på tvers av forskjellige prosjekter, og YAML-baserte konfigurasjonsdata lar deg lagre og versjonere infrastrukturen din på Git-depotet eller en hvilken som helst støttet versjonskontrollplattform.
Applikasjonsimplementering
Enten det er en enkel kodeapplikasjon med få linjer eller tungvektsimplementering på flere nivåer, gjør Ansible det mulig å automatisere livssyklusen for ende-til-ende applikasjonsimplementering.
Sikkerhet og samsvar
Ansible kan også bidra til å sikre at systemene dine er sikret i henhold til organisasjonens retningslinjer og i samsvar med industristandarder. Den kan kjøre på tvers av tusenvis av servere, generere en revisjon og fikse disse sikkerhetshullene, noe som gir administratoren full kontroll over miljøet.
La oss nå se på noen av de vanlige Sysadmin-oppgavene du kan automatisere med Ansible.
Kopier filer fra et lokalt eller eksternt system
Som systemadministrator er det vanlig å kopiere filer fra en katalog til en annen. Konfigurasjonsfiler må ofte kopieres til eksterne servere, eller noen ganger må vi flytte filer fra en ekstern plassering til en annen.
Ansible kopimodul kan hjelpe deg med å gjøre disse oppgavene i en lekebok.
Det er en rutineoppgave for en systemadministrator å kjenne statusen til administrerte servere og utføre forhåndsdefinerte handlinger i henhold til organisasjonens retningslinjer. En slik oppgave er å vite serverens oppetid. Med Ansible kan vi enkelt hente oppetidsverdier og skrive dem ut sammen. Et eksempel for å kopiere ntp-konfigurasjon fra lokal til en ekstern server ved hjelp av kopimodul er vist nedenfor:
--- - hosts: all gather_facts: no become: yes tasks: - name: Copy a new ntp configuration file and back up the original, if it differs copy: src: ./ntp.conf dest: /etc/ntp.conf owner: root group: root mode: '0644' backup: yes
Konfigurer flere cron-jobber
Å sette opp planlagte jobber for å utføre rutineoppgaver er en del av å administrere enhver server. Du kan planlegge automatiske sikkerhetskopier, patching, revisjon, etc., på bestemte tider på dagen eller måneden automatisk og etterlate produktiv tid til bruk.
cron er et slikt verktøy i Linux som støtter planlegging, og Ansible kan hjelpe deg med å legge til eller endre disse jobbene. Som et eksempel demonstrerer spilleboken nedenfor hvordan du enkelt kan sette en rsync-jobb som root på noen eller alle serverne dine ved å bruke Ansible.
--- - hosts: all gather_facts: no become: yes tasks: - name: Deploy cron job cron: name: "Set rsync job" user: root minute: "5" hour: "4" job: "rsync -avz /path/to/folder1 /path/to/folder1 2>&1"
Administrer disker og filsystemer
Ansible kan brukes til å administrere disker, partisjonsoppsett, filsystemer og monteringer, inkludert /etc/fstab på Linux-servere. Ulike Ansible-moduler gjør dette mulig. Her er et eksempel som lager en partisjon på en 100 GB disk, formaterer den med ext4 filsystem oppretter en ny katalog for å montere partisjonen og til slutt monterer den på en gitt katalog. En oppføring i /etc/fstab opprettes også gjennom midlertidig eller permanent montering avhengig av modulalternativer.
--- - hosts: all gather_facts: no become: yes tasks: - name: Create a partition parted: device: /dev/sdb number: 1 part_end: "100%" state: present - name: Format new partition filesystem: fstype: ext4 dev: /dev/sdb1 - name: Create mount directory file: path: /data state: directory - name: Mount partition mount: path: /data src: /dev/sdb1 fstype: ext4 state: mounted
Samle serverlogger
Å holde logger på et praktisk sted er noen ganger avgjørende for sikkerhet, revisjon og analyse. Ansible tillater innsamling av logger fra forskjellige servere i bedriftsmiljøet ditt og holder dem på din definerte plassering enkelt. Her er lekeboken for å oppnå dette:
--- - hosts: all gather_facts: no become: yes tasks: - name: Find logs find: paths: /var/log/ patterns: '*.log' recurse: yes register: _logs - name: Fetch logs fetch: src: "{{ item.path }}" dest: /tmp/logs with_items: "{{ _logs.files }}"
Installer eller fjern pakker og programvare
Pakker må ofte installeres på brukerforespørsler eller som en del av innledende serverbygg. Vi kan også trenge å fjerne visse pakker som ikke lenger er nødvendige eller har noen kritiske feil osv. Ansible lar deg enkelt installere eller fjerne pakker uten å måtte gå til hver server og kjøre manuelle kommandoer. Her er et eksempel som demonstrerer installasjon og fjerning av én pakke hver for Ubuntu og RHEL/CentOS-baserte Linux-servere.
--- - hosts: ubuntu gather_facts: no tasks: - name: Install lsof utility apt: pkg: lsof state: latest sudo: yes - name: Remove ARP Scan utility apt: pkg: arp-scan state: absent sudo: yes --- - hosts: centos gather_facts: no tasks: - name: Install lsof utility yum: pkg: lsof state: latest sudo: yes - name: Remove ARP Scan utility yum: pkg: arp-scan state: absent sudo: yes
Administrere brukere
Brukere og grupper danner den grunnleggende strukturen som Unix/Linux-baserte systemer administrerer tilgang og tillatelser rundt. I en stor organisasjon kan det være en stor utfordring å administrere brukere og grupper til tross for automatisering for å støtte miljøet.
Med Ansible har systemadministratoren et utmerket verktøy for å opprette, endre og slette brukere og grupper med alle forskjellige muligheter støttet i OS.
Her er et enkelt eksempel som viser oppretting og sletting av brukere og grupper som bruker Ansible. Etter at denne spilleboken er kjørt, vil målservere ha gruppe A og gruppeB opprettet med gitte GID-er, mens bruker1 vil bli fjernet, hvis den er til stede. En ny bruker uten skall vil bli opprettet som bruker2 med gitt UID, grupper tildelt 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
Administrere tjenester
Tjenester er prosessdemoner som kjører i bakgrunnen og betjener noen tjenester som sshd som gir SSH-tilkobling osv. Ved å bruke Ansible kan du administrere system- og brukertjenester, som å starte, stoppe og starte dem på nytt. Her er et eksempel på en lekebok for å demonstrere det:
--- - hosts: all gather_facts: no become: yes tasks: - name: Restart ssh daemon service: name: ssh state: restarted - name: Restart sssd daemon service: name: sssd state: stopped - name: Restart httpd daemon service: name: httpd state: started
I eksemplet ovenfor vil SSH-tjenesten startes på nytt mens du stopper SSSD-tjenesten neste gang. httpd-demonen startes mot slutten. Siden Ansible er idempotent, vil enhver tjeneste som allerede er startet eller stoppet ikke endres mens omstart alltid endrer tjenestetilstand. Husk å sjekke tjenestenavnet da forskjellige Linux-distribusjoner bruker andre navn selv for samme tjeneste som ssh og sshd.
Sammendrag 👨💻
Ansible gjør livet til en systemadministrator enkelt ved å tillate deg å utføre gjentatte og tidkrevende oppgaver på en automatisert måte og redusere menneskelige feil og innsats. Videre vil det muliggjøre lagring av konfigurasjonsdata i et sentralt kodelager som Git, slik at flere brukere kan samarbeide og vurdere hver aktivitet.
For å lese mer om Ansible og dets omfattende sett med moduler, se dens dokumentasjon.