¿Cómo autentico a un usuario en tareas específicas usando Ansible?

¿Cómo autentico a un usuario en tareas específicas usando Ansible?

Recibo el mensaje "Error al bloquear apt para operación exclusiva" cuando intento instalar algunas dependencias en un libro de estrategias usando apt, con el usuario vagabundo. Sospecho que me dice esto porque no puede autenticar al usuario vagabundo mientras ejecuta la tarea.

Esta es la declaración de rol que estoy usando.

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

Y esta es la tarea que falla:

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

      with_items:
      - dependency

Al eliminar "update_cache=yes" y volver a ejecutar el libro de estrategias, aparece: E: No se puede bloquear el directorio de administración (/var/lib/dpkg/), ¿eres root?

Obviamente, cuando lo ejecuta con root funciona perfectamente bien, pero necesito que se ejecute con un usuario diferente al de root debido a algunas tareas de Ruby (rvm, rbenv específicas).

¿Cómo autentico correctamente al usuario vagabundo cuando ejecuto mi libro de jugadas? ¿Alguien me puede apuntar en la dirección correcta?

Respuesta1

Terminé con esta declaración de rol:

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

Y esta tarea para instalar las dependencias:

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

  with_items:
  -dependency

Ahora usa root para la tarea apt y vagrant para las otras tareas de Ruby en el libro de jugadas.

Respuesta2

aptinstala paquetes a nivel de sistema y, como tal, usar apt requiere privilegios equivalentes a root.

Si necesita realizar más pasos de implementación de la aplicación como un usuario diferente, deberá eliminar esos pasos del proceso de instalación del paquete deb.

información relacionada