Подтвердить что ты не робот

Пользователь vs sudo vs sudo_user в недоступных книжках

Я прочитал документацию Ansible, но я все еще немного запутался в трех следующих параметрах в загружаемых книжках: user, sudo, sudo_user.

Я попробовал следующие плейеры с различной комбинацией параметров:

  • user: deploy = > Работы

  • user: deploy и sudo: True = > Повреждает задачу git

  • user: deploy, sudo: True и sudo_user: deploy = > Works

Что делает sudo_user на самом деле? Когда и почему я должен использовать каждую из этих комбинаций?

- hosts: all
  user: deploy
  sudo: True
  sudo_user: deploy

  tasks:
      - name: Ensure code directory
        file: dest=/home/deploy/code state=directory

      - name: Deploy app
        git: [email protected]:YAmikep/djangotutorial.git dest=/home/deploy/code

Спасибо

4b9b3361

Ответ 1

  • user - пользователь, которого вы ssh'ing как. С вашей конфигурацией вы ssh'ing как deploy.

  • sudo_user - пользователь, которого вы sudo'ing на хосте, когда установлен sudo: yes.

Итак, я думаю, что в вашем случае ни один из sudo и sudo_user не нужен, если вы можете ssh как deploy.

Однако, если вы используете ssh как root, вам нужно установить sudo_user: deploy и sudo: yes.

Если вы запрашиваете "sudo", но не указываете какого-либо пользователя, Ansible будет использовать значение по умолчанию в вашем ~/.ansible.cfg (sudo_user) и по умолчанию будет root.

Обратите внимание, что user устарел (потому что это запутывает). Вместо этого вы должны использовать remote_user.

РЕДАКТИРОВАТЬ: Случай # 2, вероятно, зависает из-за проблем с подтверждением ssh: у вас, вероятно, есть ключ хоста bitbucket.org в ~deploy/.ssh/known_hosts, но НЕ в ~root/.ssh/known_hosts

UPDATE: с Ansible 2.x используйте become и become_user вместо устаревших sudo и sudo_user. Пример использования:

- hosts: all
  user: deploy
  become: true
  become_user: deploy

  tasks:
      - name: Ensure code directory
        file: dest=/home/deploy/code state=directory

      - name: Deploy app
        git: [email protected]:YAmikep/djangotutorial.git dest=/home/deploy/cod