Ansible 执行上一个任务命令并失败



我有一个剧本,但由于某种未知原因,Ansible 2.2.1.0 失败

了剧本任务(最后一个,但一个和失败的那个)

- name: Extract out tag string for {{ image }}
shell: docker inspect -f "{{ '{{' }}.Id {{ '}}' }}" {{ tagged_image_full }} | awk -F ":" '{print $2}' | cut -c 1-12
register: image_tag
when: image is defined
- name: Save {{ tagged_image_full }} image
shell: docker save {{ tagged_image_full }} | gzip -c >> {{ save_path }}{{ image }}_{{ image_tag.stdout }}_{{ tag }}.tgz
when: tagged_image_full is defined

详细输出为

任务 [提取标签字符串以获得状态洞察] 已更改: [Docker01] => {"已更改": 真, "cmd": "docker inspect -f \"{{.ID }}\" 存在洞察:origin_release_1_4_0-17 |awk -F \":\" '{打印 $2}' | 切割 -c 1-12", "增量": "0:00:00.025295", "结束": "2017-04-11 15:17:13.800655", "rc": 0, "start": "2017-04-11 15:17:13.775360", "stderr": ", "stdout": "d0ca3e53a2ce", "stdout_lines": ["d0ca3e53a2ce"], "warnings": []}

任务 [保存状态洞察:origin_release_1_4_0-17 图像] 致命: [码头工人01]:失败!=> {"failed": true, "msg": "{u'cmd': u'docker inspect -f \"{{.ID }}\" 存在洞察:origin_release_1_4_0-17 |awk -F \":\" \'{打印 $2}\' |切割 -c 1-12', u'end': u'2017-04-11 15:17:13.800655', u'stdout': u'd0ca3e53a2ce', u'changed': True, u'start': u'2017-04-11 15:17:13.775360', u'delta': u'0:00:00.025295', u'stderr': u'', u'rc': 0, 'stdout_lines': [u'd0ca3e53a2ce'], u'warnings': []}: 模板错误 模板字符串时:意外的"."。字符串:码头工人检查 -f \"{{.Id }}\" presence-insight:origin_release_1_4_0-17 |awk -F \":\" "{打印 $2}" |切割 -c 1-12"}

为什么 Ansible 尝试执行之前的任务 shell,而不是失败任务中定义的 shell 指令?

有什么线索吗?

看起来至少在docker 检查命令方面,Ansible 2.2.1.0 的转义发生了变化。

这是提取 Docker 映像 ID 的更正任务

- name: Extract out tag string for {{ image }}
shell: docker inspect -f {{'.Id'}} {{ tagged_image_full }} | awk -F ":" '{print $2}' | cut -c 1-12
register: image_tag
when: image is defined

最新更新