
Я получаю сообщение «сообщение: Не удалось заблокировать apt для монопольной работы» при попытке установить некоторые зависимости в плейбуке с помощью apt с пользователем vagrant. Я подозреваю, что он сообщает мне об этом, потому что не может аутентифицировать пользователя vagrant во время выполнения задачи.
Это декларация роли, которую я использую.
- 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).
Как мне правильно аутентифицировать пользователя vagrant при запуске моего playbook? Может кто-нибудь указать мне правильное направление?
решение1
В итоге я пришел к такому заявлению о роли:
- 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 в плейбуке.
решение2
apt
устанавливает пакеты системного уровня, поэтому для использования apt требуются привилегии, эквивалентные правам root.
Если вам необходимо выполнить дополнительные шаги по развертыванию приложения от имени другого пользователя, вам придется вынести эти шаги из процесса установки deb-пакета.