有没有一种方法可以在Ansible中捕获lineinfile的失败输出



我有一本关于lineinfile的剧本。我需要捕捉失败。当我使用register时,lineinfile中失败的没有被捕获,成功的也没有足够的信息,比如通用寄存器值。(例如,没有rc代码、stdout或任何东西(

我需要捕获lineinfile任务失败的主机。

请告诉我是否有任何方法可以达到要求。

lineinfile: path: /test regexp: "^host" line: "host myhost 127.0.0.1" state: present register: result

我正在尝试捕获这个显示在verbose中的消息,但无法用寄存器捕获它,这样我就可以使用when条件,并说当rc==257时,它将被标记为失败。

fatal: [examplehost]: FAILED! => { "changed": false, "invocation": { "module_args": { "attributes": null, "backrefs": false, "backup": true, "content": null, "create": false, "delimiter": null, "directory_mode": null, "firstmatch": false, "follow": false, "force": null, "group": null, "insertafter": null, "insertbefore": null, "line": "HOST example.something 127.0.0.1", "mode": null, "owner": null, "path": "/test/my", "regexp": "^HOST", "remote_src": null, "selevel": null, "serole": null, "setype": null, "seuser": null, "src": null, "state": "present", "unsafe_writes": null, "validate": null } }, "msg": "Destination /test/my does not exist !", "rc": 257

我不理解你的抱怨;lineinfile:将确保该行出现在目标文件中,并且只使用regexp:位来帮助它放置该行。如果文件没有以host开头的行,那么lineinfile:将只将line:附加到文件的底部,并愉快地报告它在result.msg中这样做了: changed: [host0] => {"backup": "", "changed": true, "msg": "line added"} changed: [host1] => {"backup": "", "changed": true, "msg": "line replaced"}

最新更新