¿Cómo agregar / actualizar la label git desde la máquina local usando el libro de jugadas ansible?

Estoy usando el siguiente libro de estrategias de ansible para implementar mis aplicaciones y me gustaría agregar una function de labeldo para que pueda agregar / actualizar automáticamente una label para marcar la confirmación actual como la que se implementó.

Intento

Mi bash actual es el siguiente, basado en ¿Cómo puedo mover una label en una twig de git a una confirmación diferente? :

--- - name: Removes the tag in local repository. shell: git tag -d {{git_deploy_tag}} tags: [tagging] - name: Removes the tag in remote repository. shell: git push origin :refs/tags/{{git_deploy_tag}} tags: [tagging] - name: Adds the tag to different commit (HEAD). shell: git tag {{git_deploy_tag}} HEAD tags: [tagging] - name: Pushes the changes to the remote repository. shell: git push origin {{git_branch}} --tags tags: [tagging] 

Problema

Este rol se ejecuta en el host remoto que no tiene acceso al repository de git , y tengo la intención de mantenerlo. No pude ejecutar el rol en mi máquina local siguiendo el command Ejecutar en el host Ansible .

Pregunta

¿Cómo ejecuto el rol de labeldo localmente (otros roles deberían ejecutarse en el control remoto)? La secuencia de commands Fabric tiene un método local()

Agregue su server local al deviseio ansible y divida su libro de jugadas en varias jugadas, lo que desea que se ejecute localmente primero y lo que desea ejecutar de forma remota.

Lo que sigue es solo un ejemplo, pero podría funcionar como una base para usted. También tenga en count que ansible ejecuta tareas en paralelo, hay una opción para elegir cuántas tareas paralelas ejecutar, necesita ejecutar una tarea al mismo time.

 --- - hosts: local tasks: - name: Removes the tag in local repository. shell: git tag -d {{git_deploy_tag}} tags: [tagging] - hosts: remote tasks: - name: Removes the tag in remote repository. shell: git push origin :refs/tags/{{git_deploy_tag}} tags: [tagging] 

Lo siguiente me funciona para una tarea de git en Ansible 1.9 / 2.0

 - name: Checkout a single file from project directory (into a tar archive) connection: local local_action: command git archive --remote={{ local_git_repo }} HEAD knownGoodSet.cfg -o /tmp/knownGoodSet.tar sudo: no 

Por supuesto, tendrá un command de git diferente, pero creo que necesita todo lo siguiente para que funcione:

  • connection: local
  • local_action: command ... lugar de shell: ...
  • sudo: no