
Estou recebendo 'msg: Falha ao bloquear o apt para operação exclusiva' ao tentar instalar algumas dependências em um manual usando o apt, com o usuário vagrant. Suspeito que isso me diga porque não consegue autenticar o usuário vagrant durante a execução da tarefa.
Esta é a declaração de função que estou usando.
- name: ruby installer
hosts: all
sudo: True
sudo_user: vagrant
roles:
- ruby
E esta é a tarefa que falha:
- name: Install ruby building dependencies
apt: name={{ item }}
state=installed
update_cache=yes
with_items:
- dependency
Ao remover "update_cache=yes" e executar novamente o manual, estou recebendo: E: Não é possível bloquear o diretório de administração (/var/lib/dpkg/), você é root?
Obviamente, ao executá-lo com root, ele funciona perfeitamente bem, mas preciso que ele seja executado com um usuário diferente, além do root, por causa de algumas tarefas Ruby (rvm, rbenv específicas).
Como faço para autenticar corretamente o usuário vagrant ao executar meu manual? Alguém pode me apontar na direção certa?
Responder1
Acabei com esta declaração de função:
- name: ruby installer
hosts: all
sudo: True
user: vagrant
roles:
- ruby
E esta tarefa para instalação das dependências:
- name: Install ruby building dependencies
apt: name={{ item }}
state=installed
update_cache=yes
sudo_user: root
with_items:
-dependency
Agora ele usa root para a tarefa apt e vagrant para as outras tarefas Ruby no playbook.
Responder2
apt
instala pacotes no nível do sistema e, como tal, usar o apt requer privilégios equivalentes ao root.
Se precisar executar outras etapas de implantação do aplicativo como um usuário diferente, você precisará retirar essas etapas do processo de instalação do pacote deb.