有没有办法在Ansible中捕获lineinfile的失败输出

时间:2018-12-06 20:00:37

标签: ansible

我有一本lineinfile的剧本。我需要捕获故障。 当我使用register时,lineinfile的失败部分也不会被捕获,成功者也没有足够的信息,如通用寄存器值。 (例如,没有rc代码,stdout等)

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

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

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

我正在尝试捕获此消息,该消息以冗长的形式显示,但无法通过寄存器捕获,因此我可以使用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

1 个答案:

答案 0 :(得分:0)

我不理解您的投诉; lineinfile:将确保该行出现在目标文件中,并且仅使用regexp:位来辅助其放置该行。如果文件中没有以host开头的行,则lineinfile:会将line:附加到文件底部,并愉快地报告它在{{1 }}: result.msg