在远程剧本中运行ansible本地任务

在远程剧本中运行ansible本地任务,ansible,ansible-playbook,Ansible,Ansible Playbook,我正在尝试使此任务在本地运行(在运行playbook的计算机上): 我尝试了很多变化,但都没有成功 所有其他任务都要在目标主机上运行,这就是为什么不能在本地运行整个playbook的原因 TASK: [get the local repo's branch name] ************************************** <127.0.0.1> REMOTE_MODULE git branch | awk '/^\*/{print $2}' <127.

我正在尝试使此任务在本地运行(在运行playbook的计算机上):

我尝试了很多变化,但都没有成功

所有其他任务都要在目标主机上运行,这就是为什么不能在本地运行整个playbook的原因

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
现在git命令启动了,但没有正确启动(请参见下面的错误)

请注意,此命令作为“shell”完美运行,但不幸的是,没有与本地\u操作等效的本地\u shell

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>

...
failed:[portal dev]=>{“changed”:true,“cmd”:[“git”,“branch”,“|”,“awk”,“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:用法:git分支[选项]-[r |-a][--merged |--no merged]
或:git branch[选项][l][f][]
或:git分支[选项][-r](-d |-d)。。。
或:git branch[选项](-m |-m)[]
...

本地操作的格式为:

local_action: <module_name> <arguments>

来源:

谢谢,下面的语法确实让我更进一步,git命令确实得到了执行,但是失败了,它似乎被命令module破坏了。我们已经测试过了。如果您将命令更改为shell,它应该work@bkan谢谢请在您的回答中提及
local\u action:shell
好吗?@seanf我已经更新了答案,使用shell而不是命令。谢谢@bkan。(起初我以为
local\u action:shell
解决了我的问题,但结果是一个委托错误:)
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>

...
local_action: <module_name> <arguments>
local_action: shell git branch | awk '/^\*/{print $2}'