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.
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.12Prí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/BratislavaPremenné 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_varsna 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.