🟡 Intermediate

Ansible — Automatizácia konfigurácie

Ansible je open-source nástroj na automatizáciu konfigurácie serverov, nasadzovania aplikácií a orchestráciu IT procesov. Je agentless — nepotrebuje žiadneho agenta na cieľových serveroch.


Prečo Ansible?

  • Agentless — komunikuje cez SSH, žiadna inštalácia na serveroch
  • Jednoduché — YAML syntax, čitateľné aj pre ne-programátorov
  • Idempotentné — opakované spustenie nemení výsledok
  • Rozšíriteľné — tisíce modulov pre rôzne systémy

Architektúra

Control Node — stroj, z ktorého spúšťate Ansible (váš laptop/CI server).

Managed Nodes — cieľové servery definované v inventári.

Inventory — zoznam serverov:

[webservers]
web1.example.com
web2.example.com

[databases]
db1.example.com ansible_user=admin

Playbook

Playbook je YAML súbor popisujúci želaný stav:

---
- name: Konfigurácia webservera
  hosts: webservers
  become: yes
  tasks:
    - name: Inštalácia Nginx
      apt:
        name: nginx
        state: present
        update_cache: yes

    - name: Kopírovanie konfigurácie
      template:
        src: nginx.conf.j2
        dest: /etc/nginx/nginx.conf
      notify: Reštart Nginx

    - name: Spustenie Nginx
      service:
        name: nginx
        state: started
        enabled: yes

  handlers:
    - name: Reštart Nginx
      service:
        name: nginx
        state: restarted

Kľúčové koncepty

  • Task — jednotlivá akcia (inštalácia balíka, kopírovanie súboru)
  • Role — znovupoužiteľná kolekcia taskov, šablón a premenných
  • Handler — task, ktorý sa spustí len pri zmene
  • Template — Jinja2 šablóna pre konfiguračné súbory
  • Vault — šifrovanie citlivých údajov

Ansible vs Terraform

Ansible a Terraform sa dopĺňajú:

  • Terraform — vytvára infraštruktúru (servery, siete)
  • Ansible — konfiguruje vytvorenú infraštruktúru (inštaluje softvér, nastavuje služby)

Príkazy

  • ansible-playbook site.yml — spustí playbook
  • ansible all -m ping — test konektivity
  • ansible-vault encrypt secrets.yml — šifrovanie

Ansible je ideálny na konfiguráciu serverov a automatizáciu opakujúcich sa úloh.