playbooks - ansible tower
ejecutar una tarea local ansible en un libro de jugadas remoto (1)
El formato para local_action es:
local_action: <module_name> <arguments>
En su ejemplo, Ansible cree que está intentando usar el módulo git y arroja un error porque no tiene los argumentos correctos para el módulo git. Aquí es cómo debe verse:
local_action: shell git branch | awk ''/^/*/{print $2}''
Fuente: http://docs.ansible.com/playbooks_delegation.html#delegation
Estoy intentando que esta tarea se ejecute localmente (en la máquina que ejecuta el libro de jugadas):
- name: get the local repo''s branch name
local_action: git branch | awk ''/^/*/{print $2}''
register: branchName
Probé muchas variaciones sin éxito.
todas las demás tareas están destinadas a ejecutarse en el host de destino, por lo que ejecutar el libro de jugadas local no es una opción
TASK: [get the local repo''s branch name] **************************************
<127.0.0.1> REMOTE_MODULE git branch | awk ''/^/*/{print $2}''
<127.0.0.1> EXEC [''/bin/sh'', ''-c'', ''mkdir -p $HOME/.ansible/tmp/ansible-tmp-1407258765.57-75899426008172 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1407258765.57-75899426008172 && echo $HOME/.ansible/tmp/ansible-tmp-1407258765.57-75899426008172'']
<127.0.0.1> PUT /tmp/tmpQVocvw TO /home/max/.ansible/tmp/ansible-tmp-1407258765.57-75899426008172/git
<127.0.0.1> EXEC [''/bin/sh'', ''-c'', ''/usr/bin/python /home/max/.ansible/tmp/ansible-tmp-1407258765.57-75899426008172/git; rm -rf /home/max/.ansible/tmp/ansible-tmp-1407258765.57-75899426008172/ >/dev/null 2>&1'']
failed: [portal-dev] => {"failed": true}
msg: this module requires key=value arguments ([''branch'', ''|'', ''awk'', ''/^//*/{print $2}''])
FATAL: all hosts have already failed -- aborting
actualizar:
He seguido la sugerencia de bkan (bramido), y he llegado un poco más lejos, pero
- name: get the local repo''s branch name
local_action: command git branch | (awk ''/^/*/{print $2}'')
sudo: no
register: branchName
ahora el comando git se inicia pero no correctamente (ver error más abajo).
tenga en cuenta que este comando se ejecuta perfectamente como "shell" pero desafortunadamente no hay un equivalente local_shell de local_action ...
failed: [portal-dev] => {"changed": true, "cmd": ["git", "branch", "|", "(awk", "/^//*/{print $2})"], "delta": "0:00:00.002980", "end": "2014-08-05 18:00:01.293632", "rc": 129, "start": "2014-08-05 18:00:01.290652"}
stderr: usage: git branch [options] [-r | -a] [--merged | --no-merged]
or: git branch [options] [-l] [-f] <branchname> [<start-point>]
or: git branch [options] [-r] (-d | -D) <branchname>...
or: git branch [options] (-m | -M) [<oldbranch>] <newbranch>
...