我有一本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
答案 0 :(得分:0)
我不理解您的投诉; lineinfile:
将确保该行出现在目标文件中,并且仅使用regexp:
位来辅助其放置该行。如果文件中没有以host
开头的行,则lineinfile:
会将line:
附加到文件底部,并愉快地报告它在{{1 }}:
result.msg