我做什么
对于Bare Metal部署,我通过ansible 2.7.9
在 CentOS 7 服务器上配置接口。
有时,界面定义会更改
- name: Copy sysctl and ifcfg- files from templates.
template: src={{ item.src }} dest={{ item.dest }}
with_items:
[...]
- { src: 'network.j2', dest: '/etc/sysconfig/network' }
notify:
- Restart network service
- Wait for reconnect
- Reset host errors
这就是为什么在发生更改时我叫处理程序重新启动 network.service
的原因:
- name: Restart network service
service:
name: network
state: restarted
- name: Reset host errors
meta: clear_host_errors
- name: Wait for reconnect
wait_for_connection:
connect_timeout: 20
sleep: 5
delay: 5
timeout: 600
我想要的
重启网络服务处理程序失败时,我无法让ansible
退出不。由于服务重新启动在主机本身上运行良好,因此我要么希望重新启动始终以RC=0
退出,要么希望在处理程序调用失败后清除主机错误。在下面的列表中,我有什么想念的或做错的吗?
我尝试过的事情
ignore errors: true
,failed_when: false
,changed_when: false
指令。重新启动网络处理程序块中的shell/command
模块或service
模块。meta: clear_host_errors
在- name: Copy sysctl and ifcfg- files from templates.
块正下方meta: clear_host_errors
作为处理程序|| true
退出async/poll
个变体
Pipelining
设置为 false 我总是以:
RUNNING HANDLER [os : Restart network service] *******************************************************************
fatal: [host-redacted]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Shared connection to aa.bb.cc.dd closed.", "unreachable": true}
RUNNING HANDLER [os : Reset host errors] *************************************************************************
fatal: [host-redacted]: FAILED! => {"changed": false, "module_stderr": "Shared connection to aa.bb.cc.dd closed.\r\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 0}
RUNNING HANDLER [os : Wait for reconnect] ************************************************************************
在这种情况下,meta: clear_host_errors
的正确位置在哪里?
一些其他信息
network.service
大约需要40秒。 (尝试过async: 120
和poll: 30
)ignore_errors: true
配合良好:TASK [os : Restart network service] ******************************************************************************************************************************************************************************************************
skipping: [host-redacted]
skipping: [host-redacted]
fatal: [host-redacted]: FAILED! => {"msg": "EOF on stream; last 300 bytes received: 'ssh: connect to host aa.bb.cc.dd port 22: Connection refused\\r\\n'"}
...ignoring
在我看来,这似乎是一个错误。