Po inštalácii balíka ansible začnem výpisom všetkých dostupných rolí:
ansible-galaxy list
Okamžite ma privítajú dve varovania:
# /home/peterbabic/.ansible/roles
[WARNING]: - the configured path /usr/share/ansible/roles does not exist.
[WARNING]: - the configured path /etc/ansible/roles does not exist.
Cesta k roliam #
Dôvodom je predvolené nastavenie roles_path v ansible. Je zakomentované v
/etc/ansible/ansible.cfg, ale naznačuje predvolené hodnoty:
[defaults]
#roles_path = ~/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles
Najjednoduchším spôsobom, ako sa zbaviť chýb, by bolo buď odkomentovať a
zmeniť hodnotu roles_path tak, aby obsahovala len ~/.ansible/roles,
alebo vytvoriť chýbajúce adresáre, existuje však lepšie riešenie. Rád si
dotfiles verzionujem pomocou yadm
ako git repozitár. Ansible nasledujúce administrátorské konvencie je na
toto dobre prispôsobené. Ansible hľadá konfiguračné súbory v tomto poradí a
použije prvý, ktorý nájde:
ansible.cfgv aktuálnom adresári.ansible.cfgv domovskom adresári/etc/ansible/ansible.cfgv súborovom systéme
Prirodzene, 2. možnosť je najvhodnejšia pre správu dotfiles. Pre
odstránenie varovaní vytvorte súbor ~/.ansible.cfg:
[defaults]
roles_path = ~/.ansible/roles
Varovania o neexistujúcej ceste teraz zmiznú.
Predvolený súbor inventára #
Ďalšou vecou je prispôsobenie predvoleného súboru inventára. Pri
nahliadnutí do /etc/ansible/ansible.cfg nájdeme nasledovné:
[defaults]
#inventory = /etc/ansible/hosts
Podobne, súbor /etc/ansible/hosts nie je príliš vhodný pre správu verzií.
To sa dá zmeniť na lokálny súbor v nastavení ~/.ansible.cfg:
[defaults]
inventory = ~/.ansible_hosts
V závislosti od preferencií je možné použiť ľubovolnú cestu pre súbor
inventára v domovskom adresári, napríklad ~/.ansible/hosts. Rozhodol som
sa neumiestniť súbor inventára do adresára ~/.ansible/ z týchto dôvodov:
- V adresári
~/.ansible/sa momentálne nachádzajú iba automaticky generované súbory ansible.cfgahostsštandardne sídlia vedľa seba v/etc/ansible/
Umiestniť ~/.ansible.cfg a ~/.ansible_hosts vedľa seba do domovského
adresára sa mi momentálne zdá najprirodzenejšie.
Nastavenia Vim #
Na editovanie používam vim, ansible nie je výnimkou. Inštalácia pluginu
ansible-vim ľubovoľnou
preferovanou metódou umožňuje okrem iného zvýraznenie syntaxe. Zvýraznenie
funguje aj pre súbory inventára ansible, ale považujú sa len súbory s
názvom hosts. Náš súbor sa volá .ansible_hosts, nie hosts, takže
správny filetype nebude rozpoznaný a zvýraznenie predvolene nebude
fungovať.
Existujú aspoň dva spôsoby, ako to opraviť:
- Pridať nastavenie
autocmddo súboru.vimrc - Pridať
modelinedo súboru inventára
Prvá možnosť je zdokumentovaná inde, napríklad v README pluginu. Riešenie
cez vimrc považujem za horšie, pretože pridáva zbytočné riadky do môjho
vim konfiguráku len kvôli jedinému súboru. Tiež by som musel aktualizovať
.vimrc pri zmene umiestnenia ~/.ansible_hosts, okrem aktualizácie
~/.ansible.cfg. Vidím v tom náchylnosť na chyby.
Lepší prístup podľa mňa je zahrnúť informáciu o filetype priamo do súboru
inventára, aby ju vim zachytil. Táto informácia sa nazýva
modeline. Zvyčajne sa
používa na nastavenie správneho štýlu odsadenia súboru, ale tu pomôže
rovnako dobre. Takto vyzerá modeline na konci súboru s nainštalovaným
pluginom:
# vim: set ft=ansible_hosts:
Alebo takto, ak preferujete YAML, oboje funguje:
# vim: set ft=yaml.ansible:
Rovnako, aj bez nainštalovaného ansible-vim, táto modeline spustí
zvýraznenie syntaxe ako pre .ini súbor:
# vim: set ft=dosini:
Pre zaujímavosť — som zvyknutý chápať hosts súbor ako /etc/hosts, čo je
niečo úplne iné. Plugin je dosť inteligentný na to, aby tento súbor
nezvýrazňoval, ale napriek tomu mi príde ansible spôsob pomenovania súborov
inventára rovnakým názvom mätúci. Neuvádzanie prípony súboru, pretože sa
snažili podporovať viacero formátov, tiež nie je pre mňa bežná vec.
Poznámka k správe dotfiles #
Nezabudnite pridať oba súbory do správcu dotfiles. Videl som, že kolegovia
v poslednej dobe propagujú chezmoi, ale ja používam yadm a zatiaľ som s
ním spokojný.
yadm add ~/.ansible.cfg
yadm add ~/.ansible_hosts
yadm commit
yadm push
Ako bezpečnostná poznámka: súbor inventára by nemal byť verejný vo
verejnom repozitári dotfiles a treba zvážiť iný prístup, napríklad súbor
hosts v súkromnom repozitári.
Zhrnutie #
Po vykonaní týchto krokov je možné používať ansible role bez zbytočných varovaní, so zapnutým zvýraznením syntaxe a bez straty prehľadu o zmenách v súboroch. Kroky v poradí:
- Nastaviť umiestnenie rolí
ansible-galaxy - Použiť súbor inventára uložený v domovskom adresári
- Nastaviť zvýraznenie syntaxe s
ansible-vim - Sledovať súbory v repozitári dotfiles
Pre úplnosť, príklad ~/.ansible_hosts s vim modeline:
[webserver]
example.com
# vim: set ft=ansible_hosts:
A lokálny konfiguračný súbor ansible ~/.ansible.cfg:
[defaults]
roles_path = ~/.ansible/roles
inventory = ~/.ansible_hosts
Všimnite si, že roles_path reprezentuje adresár, kým inventory
reprezentuje súbor.
Toto je 24. príspevok #100daystooffload.