在Ansible中,我可以运行一个python脚本,如果它包含同一脚本中的代码。
name: Restarting service on different nodes
hosts: nodes
connection: ssh
tasks:
- name: Restarting tomcat service
script: main.py 1
args:
executable: python3
main.py导入了restart_tomcat(restart_tomcat.py与main.py位于同一个文件夹中),但它无法导入此模块,尽管它位于同一个目录中。
如何让它了解www.example.com的其他支持文件main.py存在于同一目录中。注意:尝试在远程服务器上执行时失败
编辑:在Ansible上为我们想要运行的每个示例创建custom_module会变得太复杂
1条答案
按热度按时间erhoui1w1#
我认为您应该编写一个自定义模块;注意,当你运行任何脚本时,ansible会在一个临时位置创建一个副本。2所以你在导入中提供的任何相对路径都会被弄乱。3你可以用
-vvv
运行剧本任务来确认这一点。以下是设置自定义模块的示例(高级):
在您的模块文件(
your_custom_module.py
)中,可以按如下方式进行导入:您可以找到更多详细信息here和示例here和this。
有关支持参考,请运行
ansible-doc script
命令并导航至“注解”部分。