Группы по семействам, include_tasks по ansible_os_family, унифицированные переменные (package_name_map), отдельные roles для Windows, избегать низкоуровневого shell без ветвлений.
Разбор
- Molecule matrix по OS.
- Не натягивайте один apt-task на всех.
- Windows: win_* модули, become_method runas.
- Тестовые образы в CI обязательны.
Итог
Multi-OS = ветвление по facts + матрица тестов, не копипаста playbook «почти одинаковый».