将无python文件包含在模块中

时间:2016-07-15 13:43:40

标签: python ansible

我将自己的模块写入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 ")

1 个答案:

答案 0 :(得分:1)

来自Developing Modules

  

模块必须自包含在一个文件中,由ansible自动传输。

为什么不使用groovy-script作为模块?

groovy_module放入库目录:

#!/usr/bin/groovy

// Groovy code goes here
println "{\"hello\":\"world\"}"

从你的剧本打来电话:

  tasks:
    - groovy_module:

确保在目标计算机上安装了groovy。