7 denních úloh správce systému pro automatizaci s Ansible

Photo of author

By etechblogcz

Ansible, bezplatný projekt s otevřeným zdrojovým kódem od společnosti Red Hat, postavený na jazyku Python, představuje oblíbenou platformu pro automatizaci IT a správu konfigurací.

Je navržen jako multiplatformní řešení, které je kompatibilní s většinou současných operačních systémů, včetně Linuxu, Windows a macOS. Využívá deklarativní jazyk YAML (YAML Ain’t Markup Language) pro definování konfigurace systému.

Ansible, spolu s dalšími moderními platformami pro správu konfigurací, přinesl zásadní změny v automatizaci IT a stanovil nové průmyslové standardy. Nástroje pro správu konfigurací se staly klíčovou součástí sady nástrojů DevOps a jsou nezbytnou součástí životního cyklu každého moderního IT procesu. Ansible je efektivní v jakémkoli prostředí moderní infrastruktury, ať už se jedná o lokální, hybridní nebo cloudové řešení. Kromě využití v oblasti DevOps, Ansible může zautomatizovat i mnohé každodenní úlohy, které běžně provádí správce systému.

Jednou z výhod Ansible je jeho bezagentní architektura. Pro jeho spuštění není zapotřebí mnoho – stačí SSH přístup k cílovému počítači a podporovaná verze Pythonu, která je standardně instalována na většině moderních operačních systémů. Díky své nenáročnosti na zdroje je Ansible možné nasadit i v rámci moderních, inovativních systémů.

Využití Ansible

Orchestrace

Ansible je preferovaným nástrojem pro koordinaci různých úkolů správy a nasazení systému. Díky playbookům lze používat stejné pracovní postupy v různých projektech, a konfigurační data založená na YAML umožňují ukládat a spravovat verzi vaší infrastruktury v úložišti Git nebo na jakékoli jiné podporované platformě pro správu verzí.

Nasazení aplikací

Ansible umožňuje automatizovat celý životní cyklus nasazení aplikací, ať už se jedná o jednoduchou aplikaci s malým počtem řádků kódu nebo o komplexní vícevrstvé nasazení.

Zabezpečení a soulad s předpisy

Ansible může také přispět k zajištění bezpečnosti vašich systémů v souladu s interními pokyny a průmyslovými standardy. Umožňuje provádět audity a opravovat bezpečnostní zranitelnosti na tisících serverů, čímž poskytuje správcům plnou kontrolu nad IT prostředím.

Podívejme se nyní na některé běžné úkoly, které správce systému může automatizovat pomocí Ansible.

Kopírování souborů z lokálních nebo vzdálených systémů

Správci systémů často potřebují kopírovat soubory mezi různými adresáři. Konfigurační soubory je nutné přenášet na vzdálené servery, nebo přesouvat soubory mezi různými vzdálenými lokacemi.

Modul Ansible copy efektivně řeší tyto úlohy v rámci playbooku.

Běžnou rutinou správců systémů je sledování stavu spravovaných serverů a provádění definovaných akcí v souladu s firemními zásadami. Jednou z takových úloh je sledování dostupnosti serverů. S Ansible lze snadno získat a zobrazit dobu provozu serveru. Níže je uveden příklad kopírování konfigurace NTP z lokálního serveru na vzdálený server pomocí modulu copy:

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

Konfigurace úloh cron

Nastavení plánovaných úloh pro automatické provádění rutinních úkolů je nedílnou součástí správy serveru. Můžete automatizovat zálohování, opravy, audity apod., a tak uvolnit čas pro produktivnější aktivity.

Cron je jeden z nástrojů v Linuxu, který umožňuje plánování. Ansible pomáhá tyto úlohy přidávat nebo upravovat. Následující příklad ukazuje, jak lze snadno nastavit úlohu rsync jako root na vybraných nebo všech serverech pomocí 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"

Správa disků a souborových systémů

Ansible umožňuje efektivní správu disků, rozvržení oddílů, souborových systémů a jejich připojení, včetně úprav souboru /etc/fstab v systémech Linux. K tomu slouží různé moduly Ansible. Následující příklad demonstruje vytvoření oddílu o velikosti 100 GB, jeho naformátování pomocí souborového systému ext4, vytvoření nového adresáře pro připojení oddílu a jeho následné připojení k vytvořenému adresáři. Záznam v /etc/fstab je vytvořen pro dočasné nebo trvalé připojení v závislosti na možnostech modulu.

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

Sběr serverových protokolů

Ukládání protokolů na vhodné místo je nezbytné pro účely zabezpečení, auditu a analýzy. Ansible umožňuje shromažďovat protokoly z různých serverů ve vašem firemním prostředí a snadno je ukládat na určené místo. Následující příklad ukazuje, jak na to:

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

Instalace a odinstalace balíčků a softwaru

Instalace balíčků je často vyžadována na základě požadavků uživatelů nebo v rámci počáteční konfigurace serveru. Stejně tak může být nutné odstraňovat nepotřebné balíčky. Ansible umožňuje snadno instalovat nebo odstraňovat balíčky, bez nutnosti manuálního provádění příkazů na každém serveru. Následující příklad demonstruje instalaci a odstranění balíčků pro Ubuntu a serverech Linux založených na RHEL/CentOS.

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

Správa uživatelů

Uživatelé a skupiny tvoří základní strukturu pro správu přístupu a oprávnění v systémech Unix/Linux. Ve velkých organizacích může být správa uživatelů a skupin značnou výzvou.

Ansible poskytuje administrátorům výborný nástroj pro vytváření, úpravy a odstraňování uživatelů a skupin s veškerými možnostmi, které jsou podporovány operačním systémem.

Následující jednoduchý příklad demonstruje vytváření a odstraňování uživatelů a skupin pomocí Ansible. Po spuštění tohoto playbooku budou na cílových serverech vytvořeny skupiny A a B s danými GID, uživatel1 bude odstraněn (pokud existuje) a vytvořen nový uživatel user2 s daným UID, přiřazenými skupinami a uzamčeným heslem.

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

Správa služeb

Služby jsou procesy běžící na pozadí a poskytující různé funkce, například sshd pro SSH konektivitu. Ansible umožňuje spravovat systémové i uživatelské služby, včetně jejich spouštění, zastavování a restartování. Následující ukázka to demonstruje:

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

V uvedeném příkladu bude služba SSH restartována, služba SSSD zastavena a služba httpd spuštěna. Protože Ansible je idempotentní, nedojde ke změnám u služeb, které jsou již ve správném stavu. Restart však vždy změní stav služby. Je nutné ověřit názvy služeb, protože různé distribuce Linuxu mohou používat odlišné názvy pro stejné služby (např. ssh a sshd).

Závěr 👨‍💻

Ansible usnadňuje život správcům systémů automatizací opakovaných a časově náročných úkolů, což snižuje riziko lidské chyby a ušetří čas. Umožňuje také ukládat konfigurační data v centrálním úložišti kódu, například v Gitu, což umožňuje spolupráci více uživatelů a kontrolu každé aktivity.

Pro další informace o Ansible a jeho rozsáhlé sadě modulů, navštivte jeho dokumentaci.