Назад | Перейти на главную страницу

становиться root при работе на определенной ОС

Я хочу, чтобы 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' }}"