Tarea Ansible Clone Repo Privado Cuelga

Configure un informe para configurar un server Laravel. Un script de aprovisionamiento que usa básicamente Ansible. El repository se llama Stedding . Está basado en un tutorial de Digital Ocean y un código de Roots Trellis, ya que necesito packages de PHP 7.1.

Ahora el problema es que el repository privado de Github no se clona. He estado leyendo sobre agentes ssh, reenviando y todo eso. Intenté sudoers y configuraciones ansible.cfg como aquí . Pero aún no hay éxito Prefiero no agregar keys privadas. Así que probé lo que Geerlingguy sugirió aquí usando

Host [server-address-here] [ip-address-here] ForwardAgent yes 

dentro ~./ssh/config . También agregué:

 [ssh_connection] ssh_args=-o ForwardAgent=yes 

a ansible.cfg. Esto para hacer un reenvío correcto y evitar agregar keys privadas ssh. Pero como /var/www/ es 0700 www-data:www-data no puedo desactivar become en sudo y hacerlo así ya que entonces no habrá suficientes permissions:

 "msg": "Could not open /var/www, [Errno 13] Permission denied: '/var/www'", "rc": 13 

Y esto que mencionó fue necesario para que el reenvío funcione.

La tarea de clonación de carga del fragment de código principal es:

 - name: create /var/www/ directory file: dest=/var/www/ state=directory owner=www-data group=www-data mode=0700 - name: Clone git repository git: repo: "{{ repo_url }}" dest: /var/www/laravel version: master update: no accept_hostkey: yes become: yes become_user: www-data register: cloned 

Con la configuration actual, todo se cuelga en:

 TASK [Clone git repository] **************************************************** task path: /Users/jasper/webdesign/stedding/php.yml:39 Using module file /usr/local/Cellar/ansible/2.2.1.0_2/libexec/lib/python2.7/site-packages/ansible/modules/core/source_control/git.py <xxx.xxx.xx.xxx> ESTABLISH SSH CONNECTION FOR USER: laravel <xxx.xxx.xx.xxx> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PrefernetworkingAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=laravel -o ConnectTimeout=10 -o ControlPath=/Users/jasper/.ansible/cp/ansible-ssh-%h-%p-%r 128.199.35.232 '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo /tmp/ansible-tmp-1494744537.18-20302566024245 `" && echo ansible-tmp-1494744537.18-20302566024245="` echo /tmp/ansible-tmp-1494744537.18-20302566024245 `" ) && sleep 0'"'"'' <xxx.xxx.xx.xxx> PUT /var/folders/_4/g8fn6chn46g9v058h8k4pzpw0000gn/T/tmpO09os2 TO /tmp/ansible-tmp-1494744537.18-20302566024245/git.py <xxx.xxx.xx.xxx> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PrefernetworkingAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=laravel -o ConnectTimeout=10 -o ControlPath=/Users/jasper/.ansible/cp/ansible-ssh-%h-%p-%r '[xxx.xxx.xx.xxx]' <xxx.xxx.xx.xxx> ESTABLISH SSH CONNECTION FOR USER: laravel <xxx.xxx.xx.xxx> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PrefernetworkingAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=laravel -o ConnectTimeout=10 -o ControlPath=/Users/jasper/.ansible/cp/ansible-ssh-%h-%p-%r xxx.xxx.xx.xxx '/bin/sh -c '"'"'setfacl -mu:www-data:rx /tmp/ansible-tmp-1494744537.18-20302566024245/ /tmp/ansible-tmp-1494744537.18-20302566024245/git.py && sleep 0'"'"'' <xxx.xxx.xx.xxx> ESTABLISH SSH CONNECTION FOR USER: laravel <xxx.xxx.xx.xxx> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PrefernetworkingAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=laravel -o ConnectTimeout=10 -o ControlPath=/Users/jasper/.ansible/cp/ansible-ssh-%h-%p-%r -tt xxx.xxx.xx.xxx '/bin/sh -c '"'"'sudo -H -S -p "[sudo via ansible, key=vvqwwyduilnxfbnxgpojunlavpkasofr] password: " -u www-data /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-vvqwwyduilnxfbnxgpojunlavpkasofr; /usr/bin/python /tmp/ansible-tmp-1494744537.18-20302566024245/git.py'"'"'"'"'"'"'"'"' && sleep 0'"'"'' 

Esto también ocurre después de que agregué Github en el server a hosts conocidos usando ( sugerencia de Ansible ):

 ssh-keyscan -H github.com > /etc/ssh/ssh_known_hosts 

¿Alguna idea de cómo puedo hacer que la clonación funcione y mantener seguros los derechos y permissions del directory para instalar la aplicación Laravel?

Al final, el problema principal fue que necesitaba configurar el reenvío de agente correctamente. Lo hice usando

 Host * ForwardAgent yes 

en ~/.ssh/config Eso y yo decidimos usar root como usuario para configurar la mayoría del material del libro de jugadas. Root no requiere cambiar a sudo. Para partes como la clonación, podría usar el usuario laravel ya que tenía acceso a la raíz web como propietario y eso también funcionaba. Así que no hay necesidad de sudo allí tampoco.

No he decidido cambiarme a sudo después de que sudo ha sido creado por Ansible. Todavía nuevo a esto todo. Pero progreso hecho. Y estoy seguro de que la pista de envío de host ayudará a muchos.