Запуск заданной локальной задачи в удаленном playbook
Я пытаюсь запустить эту задачу локально (на компьютере, на котором запущена программа воспроизведения):
- name: get the local repo branch name
local_action: git branch | awk '/^\*/{print $2}'
register: branchName
Я пробовал много вариантов без успеха
все остальные задачи предназначены для запуска на целевом узле, поэтому запуск локальной локальной сети не является вариантом
TASK: [get the local repo 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
обновление:
Я следовал за предложением bkan (ниже) и получил немного больше, но
- name: get the local repo branch name
local_action: command git branch | (awk '/^\*/{print $2}')
sudo: no
register: branchName
теперь команда git запускается, но не корректно (см. ниже).
обратите внимание, что эта команда отлично работает как "оболочка", но, к сожалению, нет локального_секучего эквивалента 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>
...
Ответы
Ответ 1
Формат local_action:
local_action: <module_name> <arguments>
В вашем примере Ansible думает, что вы пытаетесь использовать модуль git и выдает ошибку, потому что у вас нет правильных аргументов для модуля git. Вот как это должно выглядеть:
local_action: shell git branch | awk '/^\*/{print $2}'
Источник: http://docs.ansible.com/playbooks_delegation.html#delegation