ansible远程脚本执行登录本地机器

时间:2015-12-16 18:56:59

标签: python ansible ansible-playbook

我有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来实现吗?

2 个答案:

答案 0 :(得分:0)

script module复制Ansible计算机本地的脚本并将其复制到远程节点然后执行它。

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

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

答案 1 :(得分:0)

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

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

另一种选择是更改脚本以将日志消息打印到stdout和stderr,然后从那里访问已经进入日志的信息 - 从您注册的output变量,您将成为能够使用debug: var=output.stdout_lines访问内容,使用output.rc评估针对脚本返回代码的条件,等等。