Como eu autentico um usuário em tarefas específicas usando o Ansible?

2

Estou recebendo 'msg: Falha ao bloquear o apt para operação exclusiva' ao tentar instalar algumas dependências em um playbook usando apt, com o usuário vagrant. Estou suspeitando que isso me diz isso porque não pode autenticar o usuário vagabundo enquanto executa a 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 re-executar o playbook, estou recebendo: E: Não é possível bloquear o diretório de administração (/ var / lib / dpkg /), você está root?

Obviamente, ao executá-lo com o root, ele funciona perfeitamente, mas eu preciso que ele seja executado com um usuário diferente do outro, em seguida, root por causa de algumas tarefas específicas do ruby (rvm, rbenv).

Como faço para autenticar corretamente o usuário vagabundo ao executar meu playbook? Alguém pode me apontar na direção certa?

    
por Hyperfocus 14.01.2014 / 23:24

2 respostas

5

Acabei com esta declaração de função:

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

E esta tarefa para instalar as 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 do ruby no manual.

    
por 15.01.2014 / 09:12
0

apt instala pacotes no nível do sistema e, como tal, o uso do apt requer privilégios equivalentes aos da raiz.

Se você precisar executar mais etapas de implantação de aplicativos como um usuário diferente, precisará extrair essas etapas do processo de instalação do pacote deb.

    
por 14.01.2014 / 23:58