我希望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' }}"