Není potřeba dopředu nic skládat a rozčleňovat, ansible si ten systém ošahává právě proto, aby věděl, s čím pracuje, takže veškeré "řízení" je možné za běhu. Typicky bývá jeden z prvních tasků playbooku load varsů, které jsou nějakým způsobem odlišné -- třeba právě podle distribuce/architektury, jako názvy balíků, cesty, atp.
Takže pustíš playbook, ansible ví, že je to CentOS, a naloaduje si soubor s varsama, které platí pro CentOS. V dalším tasku chceš třeba instalovat specifický balík -- název pro CentOS máš zadefinovaný právě v tom už naloadovaném souboru. Pro Debian se ten balík ale jmenuje jinak, takže máš další soubor, který se loaduje, pokud je distro Debian -- tímto způsobem to máš všechno na hromádce uspořádané, když ti přibude další distro, tak si jen přidáš další soubor a do něj příslušné specifikum. Stejně tak jde pak i běh samotného tasku podmiňovat hodnotou dostupných faktů.
Záleží, jak moc si s tím pohraješ a jak moc to budeš chtít mít parametrizované, ale cílem je mít ideálně roli, která je univerzální a přitom stále přehledně definovaná, což oceníš při pozdějších aktualizacích.
https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.htmlhttps://docs.ansible.com/ansible/latest/collections/ansible/builtin/first_found_lookup.htmlhttps://docs.ansible.com/ansible/latest/user_guide/playbooks_vars_facts.html#ansible-facts
bezva to je ale až moc podrobné a neřeší to problém. Potřebuji vytáhnout data o podřízené stanici: tj. hostname, ip adresa, distro, architektura (32 n 64 bit), kernel...víc nepotřebuji..to uložit do souboru a ten mi zaslat na řídící server, tj.server kde je ansible..proč? no proto abych pak z těch souborů složil soubor hosts a rozčlenil servery do skupin : ubuntu,debian a rhel, centos a řídil pak scripty podle distra..mám tak už v čísti sítě to takto udělané, tam bylo ale jen pár serverů kde se ty informace získaly ručně...