关于在 ansible 上启动一个进程,结果一直失败之后调试的一次记录。

最近在在阿里云虚拟机上进行一些实验,因为需要操作的机器太多,即使写脚本,也要进行很多重复工作。在调研之后选用了 ansible 来协助。

ansible 有一些学习成本,但整体还好。主要是关于 module 的那一块需要仔细了解。

最后在 shell、command 中选了shell,因为移植成本低,命令直接就可以用。相比于 shell module,command 因为保证了很多其他的功能,其实更适合大部分场景。

但是在实际运行的时候,有一个在后台运行的命令失败了,并且在所有输出流中都没有相关输出。

抽象出来的命令如下:

1
./a -conf ../config.toml &> out &

进行了信息的检索,发现 shell module 的确会出现这样的问题。
参考了nohup 绕开 ansible shell 限制启动后台程序
使用 ansible 括号启动后台程序
stack overflow相关问题
add sleep 1 in raw module
最后使用了 raw module 的方法成功启动。

为什么进程会在 shell 退出时结束