Разница между become и become user в Ansible

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

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

1 ответов


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

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

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

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

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

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

    - do: something
      become_user: someone
    

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

    вот пример блок:

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

    первый 1-й запускается как пользователь someone, 2-й as root.

как я понимаю, become_user-это что-то похожее на su , а become означает что-то вроде sudo su или "выполнять все команды как пользователь sudo".

по умолчанию become_method is sudo, так что sudo do something или sudo -u <become_user> do something