我有一本剧本,由于某种未知的原因,Ansible 2.2.1.0失败了
Playbook任务(最后一个,一个失败)
- 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
详细输出
TASK [为presence-insight提取标签字符串] *****************************已更改:[docker01] => {“已更改”:true,“cmd”:“docker inspect -f \”{{。Id}} \“ presence-insight:origin_release_1_4_0-17 | awk -F \“:\”'{print $ 2}'| cut -c 1-12“,”delta“:”0:00:00.025295“,”end“:”2017-04-11 15:17:13.800655“,”rc“:0,”start“:”2017-04-11 15:17:13.775360“, “stderr”:“”,“stdout”:“d0ca3e53a2ce”,“stdout_lines”: [“d0ca3e53a2ce”],“警告”:[]}
任务[保存在场 - 洞察力:origin_release_1_4_0-17图片] *********************致命:[docker01]:失败了! => {“失败”:是的,“msg”:“{u'cmd':u'docker inspect -f \”{{。Id}} \“ presence-insight:origin_release_1_4_0-17 | awk -F \“:\”\'{print $ 2} \'| cut -c 1-12',u'end':u'2017-04-11 15:17:13.800655', 你输了':u'd0ca3e53a2ce',你改变了:真的,你'开始':你'2017-04-11 15:17:13.775360',u'delta':你们:00:00.025295',u'stderr':你','u'rc': 0,'stdout_lines':[u'd0ca3e53a2ce'],u'warnings':[]}:模板错误 而模板字符串:意外'。'。字符串:docker inspect -f \“{{。Id}} \”presence-insight:origin_release_1_4_0-17 | awk -F \“:\” '{print $ 2}'| cut -c 1-12“}
为什么Ansible尝试执行先前的任务shell而不是失败任务中定义的shell指令?
任何线索?
答案 0 :(得分:0)
至少在涉及 docker inspect 命令时,Ansible 2.2.1.0似乎改变了转义。
以下是提取Docker Image 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