如何使用 ansible shell 模块内联正确启动 Linux 服务?

How to properly start Linux services with ansible shell module inline?

我正在尝试使用 ansible shell 模块在 RHEL 主机上启动一系列服务。它与 systemctl stop 和 status 一起工作得很好,并且与 start 一起使用...

ansible all -i "host1,host2," -m shell -a "systemctl start example-service" -u priv-user -K

实际上,它启动一个服务大约 3-4 秒,并输出进程的 pid,最终会下降。

所以,一些服务通过下面的代码设法存活下来。反正这招不通用...

ansible all -i "host1,host2," -m shell -a "systemctl start example-service; sleep 10" -u priv-user -K

我知道剧本可以毫无问题地涵盖异步和轮询。但是,我更喜欢使用 shell 内联模块来快速修复或检查一些小问题。

为此使用 shell 模块是非常糟糕的做法。您应该使用 servicesystemd(因为您使用的是 systemd)模块。

ansible all -i "host1,host2," -m systemd -a "name=example-service state=started" -u priv-user -K

service:

ansible all -i "host1,host2," -m service -a "name=example-service state=started" -u priv-user -K

service and systemd 模块的文档。