7 daglige sysadmin-opgaver at automatisere med Ansible

Ansible, et gratis og open source Python-baseret projekt af Red Hat, er en populær platform til konfigurationsstyring og IT-automatisering.

Det er multi-platform og kan arbejde med de fleste moderne operativsystemer, herunder Linux, Windows og Mac. Det understøtter et deklarativt sprog skrevet i YAML eller YAML Ain’t Markup Language til at beskrive systemkonfigurationen.

Ansible har sammen med andre moderne konfigurationsstyringsplatforme revolutioneret IT-automatisering og industristandarder. Konfigurationsstyringsværktøjer er blevet en del af DevOps-værktøjssættet og er en uadskillelig del af enhver moderne it-proceslivscyklus. Dette gælder for ethvert moderne infrastrukturmiljø, uanset om det er bygget på et lokalt, hybrid- eller cloudmiljø. Ikke kun for DevOps, men Ansible kan også hjælpe med at automatisere mange daglige opgaver udført af en systemadministrator.

En af fordelene ved at bruge Ansible er, at den er agentfri og ikke kræver meget for at komme i gang udover SSH-adgang til målmaskinen og den understøttede version af Python, som allerede er installeret som standard på de fleste moderne operativsystemer. Da det er et letvægtsværktøj, kan det også implementeres og bruges med en arv til innovative systemer.

Anvendelser af Ansible

Orkestrering

Ansible er et valgfrit værktøj til at orkestrere forskellige systemadministrations- og implementeringsopgaver. Playbooks tillader brug af de samme orkestreringsarbejdsgange på tværs af forskellige projekter, og YAML-baserede konfigurationsdata tillader lagring og versionering af din infrastruktur på Git-lageret eller enhver understøttet versionskontrolplatform.

Applikationsimplementering

Uanset om det er en simpel kodeapplikation med få linjer eller en tung implementering med flere niveauer, gør Ansible det muligt at automatisere ende-til-ende applikationsimplementeringslivscyklussen.

Sikkerhed og overholdelse

Ansible kan også hjælpe med at sikre, at dine systemer er sikret i henhold til din organisations retningslinjer og i overensstemmelse med industristandarder. Det kan køre på tværs af tusindvis af servere, generere en revision og rette disse sikkerhedshuller, hvilket giver administratoren fuldstændig kontrol over miljøet.

  Ret ingen lyd i Firefox

Lad os nu se på nogle af de almindelige Sysadmin-opgaver, du kan automatisere med Ansible.

Kopier filer fra et lokalt eller eksternt system

Som systemadministrator er det almindeligt at kopiere filer fra en mappe til en anden. Konfigurationsfiler skal ofte kopieres til fjernservere, eller nogle gange skal vi flytte filer fra en fjernplacering til en anden.

Ansible kopimodul kan hjælpe dig med at udføre disse opgaver i en playbook.

Det er en rutineopgave for en sysadmin at kende status for administrerede servere og udføre foruddefinerede handlinger i henhold til organisationens politikker. En sådan opgave er at kende serverens oppetid. Med Ansible kan vi nemt hente oppetidsværdier og printe dem sammen. Et eksempel på kopiering af ntp-konfiguration fra lokal til en ekstern server ved hjælp af 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 yderligere cron-job

Opsætning af planlagte job til at udføre rutineopgaver er en del af administrationen af ​​enhver server. Du kan planlægge automatisk sikkerhedskopiering, patching, revision osv. på bestemte tidspunkter på dagen eller måneden automatisk og efterlade produktiv tid til din brug.

cron er et sådant værktøj i Linux, der understøtter planlægning, og Ansible kan hjælpe dig med at tilføje eller ændre disse job. Som et eksempel viser nedenstående afspilningsbog, hvordan du nemt kan indstille et rsync-job som root på nogle eller alle dine servere ved hjælp af 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 diske og filsystemer

Ansible kan bruges til at administrere diske, partitionslayout, filsystemer og monteringer, inklusive /etc/fstab på Linux-servere. Forskellige Ansible modul gør dette muligt. Her er et eksempel, der opretter en partition på en 100 GB disk, formaterer den med ext4 filsystem opretter en ny mappe til montering af partitionen og til sidst monterer den på en given mappe. En post i /etc/fstab oprettes også gennem midlertidig eller permanent montering afhængigt af modulindstillinger.

---
- 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

Saml serverlogfiler

At opbevare logfiler på et bekvemt sted er nogle gange afgørende for sikkerhed, revision samt analyse. Ansible tillader indsamling af logfiler fra forskellige servere i dit virksomhedsmiljø og opbevarer dem nemt på din definerede placering. Her er spillebogen for at opnå 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 software

Det kræves ofte, at pakker skal installeres på brugeranmodninger eller som en del af indledende server builds. Vi skal muligvis også fjerne visse pakker, som ikke længere er nødvendige eller har nogle kritiske fejl osv. Ansible giver dig mulighed for nemt at installere eller fjerne pakker uden besværet med at gå til hver server og køre manuelle kommandoer. Her er et eksempel, der demonstrerer installation og fjernelse af en pakke hver til Ubuntu og RHEL/CentOS-baserede 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

Håndtering af brugere

Brugere og grupper danner den grundlæggende struktur, omkring hvilken Unix/Linux-baserede systemer administrerer adgang og tilladelser. I en stor organisation kan det være en stor udfordring at administrere brugere og grupper på trods af automatisering for at understøtte miljøet.

  7 Bedste V Rising Server Hosting for alle

Med Ansible har systemadministratoren et fremragende værktøj til at oprette, ændre og slette brugere og grupper med alle forskellige muligheder understøttet i OS.

Her er et simpelt eksempel, der viser oprettelse og sletning af brugere og grupper ved hjælp af Ansible. Når denne afspilningsbog er kørt, vil målservere have gruppeA og gruppeB oprettet med givne GID’er, mens bruger1 vil blive fjernet, hvis den er til stede. En ny bruger uden shell vil blive oprettet som bruger2 med givet UID, tildelte grupper og låst adgangskode.

---
- 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

Håndtering af tjenester

Tjenester er procesdæmoner, der kører i baggrunden og tjener nogle tjenester som sshd, der giver SSH-forbindelse osv. Ved hjælp af Ansible kan du administrere system- og brugertjenester, såsom at starte, stoppe og genstarte dem. Her er et eksempel på en spillebog for at 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 ovenstående eksempel vil SSH-tjenesten blive genstartet, mens SSSD-tjenesten stoppes næste gang. httpd-dæmonen startes mod slutningen. Da Ansible er idempotent, vil enhver tjeneste, der allerede er startet eller stoppet, ikke blive ændret, mens genstart altid ændrer tjenestetilstand. Husk at tjekke tjenestenavnet, da forskellige Linux-distributioner bruger andre navne selv for den samme tjeneste som ssh og sshd.

  Top 20 bedste alternativer til LiveLeak

Resumé 👨‍💻

Ansible gør livet for en systemadministrator let ved at give dig mulighed for at udføre gentagne og tidskrævende opgaver på en automatiseret måde og reducere menneskelige fejl og indsats. Yderligere vil det muliggøre lagring af konfigurationsdata i et centralt kodelager som Git, hvilket giver flere brugere mulighed for at samarbejde og gennemgå hver aktivitet.

For at læse mere om Ansible og dets omfattende sæt af moduler, se dens dokumentation.