J'essaie de faire exécuter cette tâche localement (sur la machine qui exécute le playbook):
- name: get the local repo's branch name
local_action: git branch | awk '/^\*/{print $2}'
register: branchName
J'ai essayé plein de variantes sans succès
toutes les autres tâches sont censées s'exécuter sur l'hôte cible, c'est pourquoi l'exécution de l'ensemble du playbook local n'est pas une option
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
J'ai suivi la suggestion de bkan (ci-dessous), et je suis allé un peu plus loin, mais
- name: get the local repo's branch name
local_action: command git branch | (awk '/^\*/{print $2}')
Sudo: no
register: branchName
maintenant la commande git est lancée mais pas correctement (voir erreur ci-dessous).
notez que cette commande fonctionne parfaitement comme un "Shell" mais malheureusement il n'y a pas d'équivalent 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>
...
Le format de local_action est:
local_action: <module_name> <arguments>
Dans votre exemple, Ansible pense que vous essayez d'utiliser le module git et renvoie une erreur car vous n'avez pas les bons arguments pour le module git. Voici à quoi cela devrait ressembler:
local_action: Shell git branch | awk '/^\*/{print $2}'
Source: http://docs.ansible.com/playbooks_delegation.html#delegation