为什么使用python脚本在使用Ansible时的工作方式有所不同



我有一本简单的Ansible Playbook,该剧本将在远程服务器上调用Shell脚本,Shell脚本将调用另一个Python脚本,当我运行Ansible Playbook时脚本不起作用,但是当我向服务器ssh并手动运行相同的命令时,它会起作用。我已经进行了一些调试,似乎在调用Python脚本时,如果我从python脚本中删除所有导入语句,则可以从Ansible起作用,但是我不明白为什么当我向服务器ssh时它可以工作并且想对如何解决此问题有一些建议。

Python脚本:

#!/usr/bin/python
import socket
import argparse
import logging
import subprocess
import time
import imp
def main():
    f = open('/afile', 'w')
    f.write('a test line')
    f.close()
if __name__ == '__main__':
    main()

这些导入在这里不使用,它将在我的真实脚本中使用,在这里我只写一行以进行调试。

Ansible Playbook简直就是:

---
- hosts: servers
tasks:
  - name: trigger the script
    shell: /start.sh

start.sh然后简单地调用python脚本:

#!/bin/sh
/start.py    

对不起,这是我的不好

#!/bin/sh
/start & >> stdout.log

这引起了问题,我想进口的前三个模块与标准IO相关,因此解决方案是使用NOHUP。

再次,对不完整的问题感到非常抱歉。

相关内容

最新更新