我将自己的模块写入ansible,部分代码不能在python中,因为我正在使用的软件没有python api。它确实支持groovy所以我包含了一个groovy脚本,但在模块目录中,但是当我运行模块时,我注意到ansible将模块中的所有python文件复制到/ tmp / ansible _ {{some_random_character}}。然而ansible不包括我的groovy脚本,因此当我尝试运行模块时它会崩溃,因为它无法找到groovy脚本。有没有办法告诉ansible包含模块目录中的所有文件而不仅仅是python文件?
模块目录现在看起来像这样
模块
__init__.py deploy.groovy deploy.py
代码示例(如果有更好的方法)
pathname = os.path.dirname(sys.argv[0])
p = subprocess.Popen("groovy " + pathname + "/deploy.groovy ")
答案 0 :(得分:1)
模块必须自包含在一个文件中,由ansible自动传输。
为什么不使用groovy-script作为模块?
将groovy_module
放入库目录:
#!/usr/bin/groovy
// Groovy code goes here
println "{\"hello\":\"world\"}"
从你的剧本打来电话:
tasks:
- groovy_module:
确保在目标计算机上安装了groovy。