Ansible: cómo clonar un repository como otro usuario

Estoy tratando de escribir reglas de implementación con Ansible. Algunos de los pasos son:

  1. Actualización y actualización del server
  2. Crea un usuario llamado harry
  3. Agregue keys públicas y privadas a harry
  4. Clona un repository de Git de bitbucket.org

Quiero clonar el repository como usuario de harry en su directory personal (es por eso que estoy copyndo sus keys públicas y privadas). El problema es que no es posible especificar que un usuario debe ejecutarse como el clon git. Así que Ansible intenta clonar el repository como raíz y falló porque no tiene derechos para acceder al repository.

Cómo resuelves esto ?

Según la documentation de Ansible sobre Privilege Escalation , Ansible tiene limitaciones para convertirse en un usuario sin privilegios, ya que expone un agujero de security a Harry.

Usando el module Ansit git , puede especificar el uso de la key privada de Harry del usuario privilegiado de Ansible usando el parámetro key_file , y usar become_user permite que los files clonados sean propiedad de Harry. Por ejemplo:

 - name: Clone bitbucket repo git: repo: git@bitbucket.org:your-repo.git dest: /var/www/ version: master accept_hostkey: yes key_file: /home/harry/.ssh/id_rsa become_user: harry 

Puede especificar un usuario para cada tarea en su libro de estrategias:

 - name: Clone bitbucket repo git: ... become: yes become_user: harry 

Para get más detalles, consulte Aumento de Privilegios Ansible .

Una alternativa más segura para colocar su key privada en un server remoto es habilitar el reenvío de key ssh en la configuration de sshd en el server y su configuration de ssh localmente. La key entonces nunca sale de su caja local.