Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ansible远程脚本执行';s登录本地计算机_Python_Ansible_Ansible Playbook - Fatal编程技术网

Python ansible远程脚本执行';s登录本地计算机

Python ansible远程脚本执行';s登录本地计算机,python,ansible,ansible-playbook,Python,Ansible,Ansible Playbook,我有一个python脚本,它基本上对远程机器上安装的服务进行验证。这个脚本将在远程机器上运行,我正在使用ansible调用这个脚本。我无法将脚本登录到本地机器上的文件中 test.yml(Ansible) 验证.py #from pprint import pprint logging.basicConfig(filename='script/logs/install.log',format='%(asctime)s | %(levelname)s | %(message)s', datefmt

我有一个python脚本,它基本上对远程机器上安装的服务进行验证。这个脚本将在远程机器上运行,我正在使用ansible调用这个脚本。我无法将脚本登录到本地机器上的文件中

test.yml(Ansible)

验证.py

#from pprint import pprint
logging.basicConfig(filename='script/logs/install.log',format='%(asctime)s | %(levelname)s | %(message)s', datefmt='%a %b %d %H:%M:%S %Z %Y', level=logging.INFO)

def func1():
    ----do something
    logging.info('%s %s',key, value)
我们所有的脚本都使用这种日志记录方式……除此之外,所有脚本都在本地运行。只有此脚本在远程计算机上运行

运行脚本时,我发现一个可能的错误路径未找到。它似乎正在远程计算机中搜索路径,但该路径不可用

已更新

我有一台运行所有脚本的机器,我正在从该机器启动一个vm,并使用ansible对其进行配置。我有一个名为install.log的日志文件。 所有其他脚本都将日志输出到此文件中。我希望将在远程计算机上运行的verify.py也将日志输出到install.log文件中

是否可以通过ansible执行此操作?

复制ansible计算机本地的脚本,并将其复制到远程节点,然后执行

如果要执行已在远程节点上的脚本,则可以使用或模块来触发该脚本


或者,您可以先使用任务从远程节点检索文件,然后使用脚本任务将其复制回来,然后执行它。我很难找到这样做的理由,而不是通过命令/shell任务。

没有简单的方法从脚本Ansible运行写入本地计算机上的日志文件-Ansible通过SSH连接复制脚本,然后从远程主机执行

正如@ydaetskcoR在回答中所说的,一种解决方案是将日志写入远程文件,并使用fetch模块检索日志


另一个选项是更改脚本以将日志消息打印到stdout和stderr,然后访问从那里进入日志的信息-从您注册的
输出
变量,您可以使用
debug:var=output.stdout\u行
访问内容,使用
output.rc
等工具根据脚本的返回代码计算条件。

是否可以使用绝对路径进行日志记录?这可能会导致问题
#from pprint import pprint
logging.basicConfig(filename='script/logs/install.log',format='%(asctime)s | %(levelname)s | %(message)s', datefmt='%a %b %d %H:%M:%S %Z %Y', level=logging.INFO)

def func1():
    ----do something
    logging.info('%s %s',key, value)