我有一个简单的ansible playbook,它将在远程服务器上调用shell脚本,shell脚本将调用另一个python脚本,这将执行某些操作,当我运行ansible playbook时,脚本无法正常工作,但是当我ssh到服务器并手动运行相同的命令,它工作 . 我做了一些调试,似乎在调用python脚本时,如果我从python脚本中删除所有import语句,它可以从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剧本就像:
---
- hosts: servers
tasks:
- name: trigger the script
shell: /start.sh
然后start.sh只是调用python脚本:
#!/bin/sh
/start.py
1 回答
对不起,这是我的坏,我没有把所有脚本放在这里,似乎有另一个脚本有类似的东西
这引起了问题,我猜导入的前三个模块都有与标准io相关的东西,所以解决方案是使用nohup .
再次,非常抱歉这个不完整的问题 .