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

Как аутентифицировать пользователя при выполнении определенных задач с помощью Ansible?

Я получаю сообщение: «Не удалось заблокировать apt для монопольной операции» при попытке установить некоторые зависимости в playbook с помощью apt с бродячим пользователем. Я подозреваю, что он говорит мне об этом, потому что не может аутентифицировать бродячего пользователя во время выполнения задачи.

Это объявление роли, которое я использую.

- name: ruby installer
  hosts: all
  sudo: True
  sudo_user: vagrant
  roles:
  - ruby

И вот эта задача не удается:

    - name: Install ruby building dependencies
      apt: name={{ item }} 
           state=installed 
           update_cache=yes

      with_items:
      - dependency

При удалении «update_cache = yes» и повторном запуске плейбука я получаю: E: Невозможно заблокировать административный каталог (/ var / lib / dpkg /), вы root?

Очевидно, что при запуске с root он работает отлично, но мне нужно, чтобы он запускался под другим пользователем, кроме root, из-за некоторых задач ruby ​​(rvm, rbenv).

Как мне правильно аутентифицировать бродячего пользователя при запуске моей пьесы? Может ли кто-нибудь указать мне правильное направление?

Я закончил с этим объявлением роли:

- name: ruby installer
  hosts: all
  sudo: True
  user: vagrant
  roles:
  - ruby

И эта задача для установки зависимостей:

- name: Install ruby building dependencies
  apt: name={{ item }} 
       state=installed 
       update_cache=yes
  sudo_user: root

  with_items:
  -dependency

Теперь он использует root для задачи apt и vagrant для других задач ruby ​​в playbook.

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

Если вам нужно выполнить дальнейшие шаги по развертыванию приложения от имени другого пользователя, вам нужно будет вытащить эти шаги из процесса установки пакета deb.