Я пытаюсь выполнить команду на докере на другом компьютере с моего компьютера. Когда я выполняю эту команду:
- name: Add header
command: docker exec cli bash -l -c "echo '{"payload":{"header":{"channel_header":{"channel_id":"gll", "type":2}},"data":{"config_update":'$(cat jaguar_update.json)'}}}' | jq . > jaguar_update_in_envelope.json"
через ansible playbook, я получаю сообщение об ошибке, показанное ниже.
fatal:[
command-task
]:FAILED! =>{
"changed":true,
"cmd":[ ],
"delta":"0:00:00.131115",
"end":"2019-07-11 17:32:44.651504",
"msg":"non-zero return code",
"rc":4,
"start":"2019-07-11 17:32:44.520389",
"stderr":"mesg: ttyname
failed: Inappropriate ioctl for device\nparse error: Invalid numeric
literal at line 1, column 9",
"stderr_lines":[
"mesg: ttyname failed:
Inappropriate ioctl for device",
"parse error: Invalid numeric literal
at line 1, column 9"
],
"stdout":"",
"stdout_lines":[
]
}
Но если я вручную выполню команду в контейнере Docker, она будет работать нормально, и у меня не возникнет никаких проблем.
EDIT:
Как и предполагалось, я попробовал с shell
module
shell: docker exec cli -it bash -l -c "echo '{"payload":{"header":{"channel_header":{"channel_id":"gll", "type":2}},"data":{"config_update":'$(cat jaguar_update.json)'}}}' | jq . > jaguar_update_in_envelope.json"
Но я получаю ошибку ниже как
фатально: [команда-задача]: СБОЙ! => {"изменено": верно, "cmd": "докер
exec cli -it bash -l -c echo
{\ "Полезная нагрузка \": {\ "заголовок \": {\ "channel_header \": {\ "CHANNEL_ID \": \ "GLL \",
\ "Типа \": 2}}, \ "данные \": {\ "config_update \": "$ (кот
jaguar_update.json) '}}}' | JQ. > jaguar_update_in_envelope.json ",
"delta": "0: 00: 00.110341", "end": "2019-07-12 10: 21: 45.204049", "msg":
«ненулевой код возврата», «rc»: 4, «start»: «2019-07-12
10: 21: 45.093708 "," stderr ":" cat: jaguar_update.json: такого файла нет или
directory \ nparse error: неверный числовой литерал в строке 1, столбец 4 ",
"stderr_lines": ["cat: jaguar_update.json: такого файла или каталога нет",
"ошибка синтаксического анализа: неверный числовой литерал в строке 1, столбец 4"], "стандартный вывод":
"", "stdout_lines": []}
Все файлы 'jaguar_update.json' присутствуют в рабочем каталоге. Я подтвердил рабочий каталог.
Приведенные выше команды работают, если я помещаю их в файл сценария оболочки, а затем выполняю сценарий оболочки из ansible.