На странице примеров передовых практик: http://docs.ansible.com/ansible/playbooks_best_practices.html#top-level-playbooks-are-separated-by-role показан пример, где главная playbook site.yml включает в себя пару других верхних уровней playbooks webservers.yml и dbservers.yml. Внутри этих плейбуков каждая из них включает в себя общую роль. В некоторых файлах инвентаризации у меня есть все группы, которые работают на одном хосте. В другом файле инвентаря у меня есть хост для каждой группы. Для случая, когда группа находится на одном хосте, если я запускаю site.yml, вы можете видеть, что общая роль воспроизводится дважды, одна для webservers.yml и одна для dbservers.yml.Исследуемая передовая практика не повторяет общую роль
Что такое решение, чтобы избежать этого? Я думаю, вы можете вытащить общую роль из webservers.yml и dbservers.yml, а вместо этого в site.yml есть задача, которая нацелена как на общую роль. Но тогда я не могу индивидуально предоставлять веб-сервер или dbserver с общим.
Мне нравится этот подход, и, кажется, делает больше смысла для меня. Однако, когда я на самом деле пытаюсь реализовать это, он не работает. Моя общая роль все еще выполняется несколько раз. Я явно попытался установить allow_duplicates: no без эффекта. Похоже, есть другие люди с этой же проблемой? https://github.com/ansible/ansible/issues/5971 – user1087973