我有python脚本,基本上对远程机器中安装的服务进行验证。这个脚本将在远程机器上运行,我使用ansible来调用这个脚本。我在将脚本记录到本地机器的文件时遇到了麻烦。
test.yml(Ansible)
with open('numbers.txt', 'r') as f:
print sum([float(x) for x in f.read().splitlines()])
verify.py
- name: Verifying route ,run script to analyse temp_route.txt file
script: /scripts/verify.py {{ prox1 }},{{ ip }} {{ ip }}
register: output
我们所有的脚本都使用这种记录方式....除此之外,所有脚本都在本地运行。只有这个脚本在远程机器上运行。
在运行脚本时,我找不到ansible错误路径。它似乎是在远程机器中搜索路径不可用
更新
我有机器A,其中所有脚本都运行,我从该机器启动vm并使用ansible进行配置。我有一个名为install.log的日志文件。 所有其他脚本输出此文件中的日志。我想要在远程运行的verify.py也应该输出install.log文件中的日志
这可以通过ansible来实现吗?
答案 0 :(得分:0)
script module复制Ansible计算机本地的脚本并将其复制到远程节点然后执行它。
如果要执行已在远程节点上的脚本,则可以使用command或shell模块来触发脚本。
或者,您可以先使用fetch任务从远程节点检索文件,然后使用脚本任务将其复制回来然后执行。我很难想出这样做的理由,而不是通过命令/ shell任务。
答案 1 :(得分:0)
没有简单的方法从脚本写入本地计算机上的日志文件Ansible运行 - Ansible通过其SSH连接复制脚本,然后从远程主机执行它。
正如@ydaetskcoR在他们的回答中所说,一种解决方案是将日志写入远程文件并使用获取模块来检索它。
另一种选择是更改脚本以将日志消息打印到stdout和stderr,然后从那里访问已经进入日志的信息 - 从您注册的output
变量,您将成为能够使用debug: var=output.stdout_lines
访问内容,使用output.rc
评估针对脚本返回代码的条件,等等。