Разница между стать и стать_усером в Ansible

Недавно я начал копаться в Ansible и писать свои собственные тетради. Однако у меня есть проблемы с пониманием разницы между become и become_user. Как я понимаю, become_user - это что-то похожее на su <username>, а become означает что-то вроде sudo su или "выполнять все команды в качестве пользователя sudo". Но иногда эти две директивы неоднозначны.

Не могли бы вы объяснить их правильное значение?

Ответ 1

become_user определяет пользователя, который используется для эскалации привилегий.

become просто флагом, чтобы активировать или деактивировать то же самое.

Вот три примера, которые должны дать понять:

  1. Эта задача будет выполняться как root, так как root является пользователем по умолчанию для повышения привилегий:

    - do: something
      become: yes
    
  2. Эта задача будет выполняться как пользователь someone - someone, так как пользователь explciitly установить:

    - do: something
      become: yes
      become_user: someone
    
  3. Эта задача не будет ничего делать с become_user, потому что become не установлен и по умолчанию false/no:

    - do: something
      become_user: someone
    

    ... если не было установлено значение true на более высоком уровне, например блок, playbook, group или host-vars и т.д.

    Вот пример с блоком:

    - become: yes
      block:
        - do: something
          become_user: someone
        - do: something
    

    Первый первый побежал в качестве пользователя someone - root someone, 2 - го, как root.

Насколько я понимаю, она становится чем-то подобным su, и становится средством для чего-то вроде sudo su или "выполнять все команды в качестве пользователя sudo".

По умолчанию become_method является sudo, поэтому sudo do something или sudo -u <become_user> do something

Fineprint: Конечно, "делать: что-то" является псевдокодом.Поместите в него реальный модуль Ansible.