python - 为什么使用 ansible 时 Python 脚本的工作方式不同?

标签 python ansible

我有一个简单的 ansible 剧本,它将调用远程服务器上的 shell 脚本,shell 脚本将调用另一个 python 脚本,它会做一些事情,当我运行 ansible 剧本时,脚本不工作,但是当我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()

那些import在这里没有用到,会在我的真实脚本中用到,这里我只是在文件中写一行用于调试。

ansible 剧本就像:

---
- hosts: servers

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

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

#!/bin/sh
/start.py    

最佳答案

对不起,是我的错,我没有把所有的脚本都放在这里,似乎还有另一个脚本有类似的东西

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

这导致了问题,我猜导入的前三个模块与标准 io 相关,所以解决方案是使用 nohup。

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

关于python - 为什么使用 ansible 时 Python 脚本的工作方式不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42242458/

相关文章:

git - ansible git 模块中是否有缓存?

python - mayavi.mlab.pipeline.iso_surface.IsoSurface 使用什么算法?

azure - 无法在 ansible 中获取 azure key Vault secret

ansible - 在 ansible 中成为非 root 用户失败

ansible从json文件中读取变量

ssh - Ansible:更改 SSH key

python - SQLite Python AND 语句不起作用

Python:将谷歌驱动器中的文件复制到特定文件夹中

python - fminunc 在 numpy 中交替

python - django - 使用 block 读取上传的文件会分解一些行