No když jsem před lety na Ansible kouknul, tak jsem to rychle zavrhl, protože YAML a ne skriptovací jazyk přímo. YAML se hodí k popisu nějakých dat, ale až ve druhé linii (k zápisu dat ho ve finále používám, ale načte si ho až kód z fabfilu). Šáhl jsem po Fabricu a byla to dobrá volba. Dělalo se mi s tím od začátku mnohem lépe. Nepíšu si fabfily obecně pro více OS, ale soustředil jsem se pouze na Debian. To je asi výhoda a nevýhoda zároveň.
Jsem zvědav co tohle OpsMop bude ve srovnání s Fabricem.
Porovnávat Fabric a Ansible je srovnávat jabka s banánama. Je to ovoce, ale hodí se na jiné věci.
Fabric míří úplně jinam - říkáte, jak se má něco udělat. Taková civilizovaná náhrada Makefile nebo shellu.
Oproti tomu v Ansible (a jiných config-management nástrojích) popisujete deklarativně cílový stav - je to taková dokumentace toho, jak to má vypadat ve finále a existuje k tomu nástroj, jak ji spustit.
Asi jo. Já to vzal, že potřebuju něco mezi. Provádět něco hromadně na serverech, ale taky jim dávat jednotnou fazonu. Ve Fabricu jsem si napsal kód, který umí mimo jiné aplikovat "politiky", která jsem ve finále popsal v YAML :-). Přes fabric mohu dělat různé hromadné akce na serverech a aplikovat nějaké jednotné šablony na servery. Přišlo mi nějak jednodušší si to doimplementovat do Fabricu, než se učit moduly pro Ansible...
Ehm. Tak teďka mícháte jabka a banány vy. Ansible je pseudo-deklarativní, lze s ním deklarativně psát za předpokladu idempotentních modulů a určité pozornosti, ale to není jeho silná stránka. Je to ale především orchestestrační framework pro automatizaci konfigurací. Pomocí Ansible definujete že se má udělat A a pak B. To jde v deklarativních systémech hodně špatně (pomocí závislostí).
Čistě deklarativní je třeba Puppet, hodně uživatelů kombinuje sílu obou nástrojů - pomocí Ansible orchestrují Puppet který je naopak naprosto nevhodný k orchestraci (utopíte se v moži závislostí).
Já se nebudu pouštět do nějakého flamu, pravda je někde uprostřed, já jen chtěl dát poznámku že u té deklarativy bych byl velmi opatrný.
No tak za deklarativni v Ansible se dá považovat tak možná dobře navrženy model konfigurace. Jak dojde na tašky a role, už jde v reálu o konkrétní sekvenci které se musí stát, různé na sebe navazuji. Sice tu máme idempotenci, ale ta platí tak pro jednotlivé moduly. Já jsem naopak rád za jistou průhlednost toho, že když implementuje roli, jednotlivé kroky běží v nějakém pořadí. Paralelizace v rámci jednoho serveru je spíše specialitou.
A jak tu někdo píše, není vůbec špatně stavět se k tomu tak, že když to začne být komplikované, je třeba udělat krok zpět a zamyslet se zdá to nejde jednodušeji.