Я создал анзибль роль, которую в состоянии развернуть некоторое программное обеспечение на системах, основанных или любой ОС Windows или Linux, но у меня вопрос, развертывается на обоих наборов серверов одновременно. Вопрос, который у меня возник, касается созданной мной пьесы, которая называет эту роль. Задачи Linux не будут запускаться, если я не включу become: true
, и если я добавлю это в playbook, задачи Windows не будут выполняться, потому что {"msg": "The PowerShell shell family is incompatible with the sudo become plugin"}
. Простое решение проблемы - просто включить become: true
для моих задач в Linux, но я надеялся, что есть лучший способ сделать это, чем это. Я думал о том, чтобы запустить условную become
(как показано ниже), но я не думаю, что это сработает. Хотелось бы услышать ваши идеи.
playbook.yml
---
- hosts: all
become: "{{ 'no' if ansible_facts['os_family'] == 'Windows' else 'yes' }}"
roles:
- /path/to/role