7 daglige sysadmin-oppgaver å automatisere med Ansible

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.

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.

  Slik installerer du Elementary OS 6

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.

  Hvorfor tar strømmetjenester ekstra betalt for HD og 4K?

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.

  Slik sletter du Indeed-kontoen permanent

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.