však si asi rozumíme. Ansible je imperativní, tj. musíš definovat každou akci (vč. odstranění starých souborů, konfigurací, služeb), sám toho odstraňuje minumum. Puppet/chef/salt a další se snaží být deklarativní, tj. definuješ cílový stav a oni se tam snaží dostat (v určitých omezených intencích). Terraform to posunuje trochu dopředu a umí více věcí přímo deklarovat (tj. ošetřuje stale stavy). Nejdál v tom jde asi Nix nebo třeba Fedore coreoes, které nativně odstraňují vše, co není deklarované a výsledek je téměř identický bez ohledu na výchozí stav.
Za mě je hlavní kritérium pro rozhodnutí co použít asi to, kolika stavy (jak dlouho) chci danou instanci (vps/server) provozovat bez reinstalace, pokud co nejdéle, tak je lepší použít nástroj, který je více deklarativní, pokud instance je pro mě jednorázová (při každé změně dělám celkový reinstall), je vlastně jedno, co použiji, protože pak ty nástroje jsou srovatelné.
Fedore coresos, nix se umí vypořádat i s generačním přechodem (upgradem distribuce), zatímco u ostatních to je víceméně lepší/horší podle toho, jaká je podpora nové distribuce v rámci jednotlivých modulů, terraform je někde na pomezí.
Dříve jsme s ansiblem spravovali tisíce serverů, dnes ansible rád používám právě na přípravu imagů, dockerů, šablon pro OS a případně pro konfiguraci clusterových služeb a jejich nastartování (tam pak má dobrou podporu jen terraform). Ansible je velice silný, pokud má pořád stejný nulový výchozí bod, už ale není vůbec vhodný do situace, kdy jednotlivé změny postupně aplikuji přes sebe (dlouhodobé udržování), pak je nutné být opravdu pečlivý.