Ansible: Štruktúra projektu a správa inventára

Udrž si poriadok v Ansible projektoch – rozdelenie inventára, štruktúra adresárov a organizácia premenných.

Ansible: Štruktúra projektu a správa inventára
Photo by Artem Maltsev / Unsplash

Prečo riešiť štruktúru a inventár?

Ak sa tvoj Ansible projekt rozrastá, veľmi rýchlo zistíš, že jeden inventory.ini a pár playbookov nestačí. Dobrá štruktúra ti pomôže udržať prehľad, opakovateľnosť a jednoduchú správu viacerých prostredí – napríklad staging, produkcia alebo edge zariadenia.

Štandardná štruktúra Ansible projektu

ansible/
├── inventories/
│   ├── production/
│   │   ├── hosts.ini
│   │   └── group_vars/
│   │       └── all.yml
│   └── staging/
│       ├── hosts.ini
│       └── group_vars/
├── playbooks/
│   ├── setup.yml
│   └── webserver.yml
└── roles/
    └── nginx/
        ├── tasks/
        ├── templates/
        └── defaults/

Takto vieš oddeliť konfigurácie pre rôzne prostredia a zároveň udržať jednotný základ.

Čo je inventory?

Inventory súbor určuje, na aké servery sa má playbook aplikovať. Môže byť vo formáte .ini alebo .yaml.

Príklad hosts.ini

[web]
192.168.1.10
192.168.1.11

[db]
192.168.1.12

Príklad s premenlivými adresami a skupinami

[edge]
server1 ansible_host=10.0.0.2
server2 ansible_host=10.0.0.3

[edge:vars]
timezone=Europe/Bratislava

Premenné podľa skupín a hostov

Do group_vars/ a host_vars/ môžeš uložiť YAML súbory so špecifickými hodnotami pre jednotlivé skupiny alebo hostov. Ansible ich automaticky načíta.

Príklad group_vars/all.yml:

ansible_user: ansible
ntp_server: pool.ntp.org

Tipy pre organizáciu:

  • Nepoužívaj len jeden inventory pre všetko – rozdeľ si staging, prod, lab
  • Používaj group_vars na zdieľané nastavenia
  • Udržuj všetko pod Git verziou
  • Pomenúvaj servery logicky (napr. web01, db02)

Čo ďalej?

V ďalšom článku si ukážeme, ako používať premenné, šablóny a ako zamedziť tomu, aby sa služba reštartovala zbytočne po každej zmene konfigurácie.

Ak máš špecifickú štruktúru alebo otázku, napíš nám – môžeme doplniť konkrétny príklad na mieru.