Estoy tratando de escribir reglas de implementación con Ansible. Algunos de los pasos son:
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.