Como autenticar um usuário em tarefas específicas usando Ansible?

Como autenticar um usuário em tarefas específicas usando Ansible?

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

aptinstala 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.

informação relacionada