在特定的操作系统上运行时变成root

我希望Ansible只能在特定的操作系统上运行,比如Ubuntu。

我试过了:

become: ansible_os_family == 'Darwin' become: (ansible_os_family == 'Darwin') become: {{ ansible_os_family }} == 'Darwin' become: {{ ansible_os_family == 'Darwin' }} 

这些工作都没有。

这甚至有可能吗? 我怎样才能做这个工作?

我不认为这是可能的。 作为解决方法,您可以:

  • 复制任务,并将条件放在when子句中的os_family

     - name: Become need command: become: yes when: ansible_os_family == 'Darwin' - name: No become need command: when: ansible_os_family != 'Darwin' 
  • 将您的主机(也)通过库存级别的os分组,并为os组定义一个ansible_becomevariables:

     [Darwin] server1 server2 server3 [Darwin:vars] ansible_become=true 

根据#11381这应该工作。 你所有的四次尝试都是错误的。

这两个只是string,没有评估条件:

 become: ansible_os_family == 'Darwin' become: (ansible_os_family == 'Darwin') 

虽然这两个应该产生一个YAML错误:

 become: {{ ansible_os_family }} == 'Darwin' become: {{ ansible_os_family == 'Darwin' }} 

你试过这个吗?

 become: "{{ ansible_os_family == 'Darwin' }}"