Ansible测试模块在执行之前破坏可执行文件

时间:2014-05-10 08:31:40

标签: ansible

我正在开发一个新的Ansible模块,我想使用Ansible test-module脚本验证它的工作原理,如in the official ansible documentation所述。

可执行文件是独立的,它可以按预期运行,但在其上运行Ansible test-module失败。

我注意到,在调用我的可执行文件之前,Ansible test-module执行以下操作:

  • 它将可执行文件重命名为.ansible_module_generated(并将其放入我的主目录)
  • 在可执行文件的末尾添加换行符

我的可执行文件采用压缩格式,附加的换行符损坏其内部验证。此外,可执行文件需要保留原始可执行文件名,因此重命名也是一个问题。

以上行为是否特定于test-module - 这意味着我可以通过删除额外换行并避免重命名操作轻松调整test-module脚本 - 或者它是一般的Ansible行为测试模块试图模仿?有没有解决方法?

1 个答案:

答案 0 :(得分:0)

在Ansible运行模块之前,它会查找从ansible.module_utils导入*的行,如下所示:

from ansible.module_utils.basic import *

然后,它将使用导入模块的实际内容替换此行。这是为了避免将模块的多个文件传送到目标计算机。不仅仅是基本模块,但这是最常见的,因为它包含AnsibleModule,它是解析args的助手等。

测试模块必须做同样的事情才能测试模块。这是由内部ModuleReplacer完成的。如果你的模块的格式不支持这个,我怀疑它总会被破坏。