Я хочу, чтобы Ansible стал пользователем root, только если он работает в определенной ОС, скажем, Ubuntu.
Я пробовал:
become: ansible_os_family == 'Darwin'
become: (ansible_os_family == 'Darwin')
become: {{ ansible_os_family }} == 'Darwin'
become: {{ ansible_os_family == 'Darwin' }}
ни один из них не работал.
Это вообще возможно? Как я могу заставить это работать?
Я не думаю, что это возможно. В качестве обходного пути вы можете:
продублируйте задачу и поставьте условие на os_family
в when
пункт
- name: Become need
command:
become: yes
when: ansible_os_family == 'Darwin'
- name: No become need
command:
when: ansible_os_family != 'Darwin'
сгруппируйте ваш хост (также) по ОС на уровне инвентаря и определите ansible_become
переменная для группы os:
[Darwin]
server1
server2
server3
[Darwin:vars]
ansible_become=true
В соответствии с # 11381 это должно работать. Однако все четыре ваши попытки неверны.
Это просто строки, а не оцениваемые условия:
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' }}"