Ansible根据输出中的内容运行任务

Ansible根据输出中的内容运行任务,ansible,yaml,wiki,ansible-template,Ansible,Yaml,Wiki,Ansible Template,我是Ansible的新手,我试着做一些练习。我编写了一个剧本来部署docker容器,如下所示。我在block部分写一个任务如果发生错误,根据失败的消息内容在rescue部分运行一个任务。例如,如果失败消息如下所示,我希望运行特定任务以删除现有容器: 失败:[192.168.1.140](item=stderr_行)=>{“更改”:true,“cmd”:[“docker”、“run”、“-itd”、“--name”、“h1”、“-p”、“80:80”、“httpd”]、“delta”:“0:00:

我是Ansible的新手,我试着做一些练习。我编写了一个剧本来部署docker容器,如下所示。我在block部分写一个任务如果发生错误,根据失败的消息内容在rescue部分运行一个任务。例如,如果失败消息如下所示,我希望运行特定任务以删除现有容器:

失败:[192.168.1.140](item=stderr_行)=>{“更改”:true,“cmd”:[“docker”、“run”、“-itd”、“--name”、“h1”、“-p”、“80:80”、“httpd”]、“delta”:“0:00:00.016385”、“end”:“2021-01-04 03:00:55.403364”、“失败时结果”:true,“item”:“stderr_行”、“msg”:“非零返回码”、“rc”:125,“start”:“2021-01-04-03:00:55.6979”、“stderr”:”“/usr/bin/docker current:守护程序的错误响应:冲突。容器名“/h1”已被容器bc5cc803a5f431358992d06097ce271f3a63b8eba19900cfc0d23e321a4e243使用。必须删除(或重命名)该容器才能重用该名称..\n请参阅”/usr/bin/docker current run--help“,“stderr_行”:[”/usr/bin/docker current:守护程序的错误响应:冲突。容器名“/h1”已被容器BC5CC803A5F431358992D06097CE271F3A63B8EBA19900CFC0D23E321A4E243使用。您必须删除(或重命名)该容器才能重用该名称..”,“请参阅“/usr/bin/docker current run--help”。”],“标准输出”:“,“标准输出线”:[]”


我的剧本如下,但它没有正常工作。有时在阅读字典时出错或“上发生意外的模板类型错误”。有人能指导我写什么吗

-name:运行容器
变量:
-run_容器:dockerrun-itd--name h1-p80:80httpd
-rm_容器:docker stop h1和docker rm h1
主机:192.168.x.x
任务:
-名称:检查docker容器
区块:
-名称:运行容器httpd
命令:“{run_container}}”
注册:rss
有以下项目:
-“标准线路”
在rss.stderr中出现“错误”时失败
救援:
-名称:遍历列表
调试:
msg:“{item.value}}”
循环:{rss | dict2items}”
-名称:删除已退出的容器
命令:“{rm_container}}”
注册号码:rs
有以下项目:
-“{rss | dict2items}”
当:item.value为search(“容器名称。*已在使用”)

learn.您想改为学习吗?如果容器已经运行,它将知道不要启动容器。谢谢David,我不知道。了解。你想改为启动容器吗?如果容器已经运行,它将知道不要启动容器。谢谢你,大卫,我不知道。