我正在开发一个新的Ansible模块,我想使用Ansible test-module脚本验证它的工作原理,如in the official ansible documentation所述。
可执行文件是独立的,它可以按预期运行,但在其上运行Ansible test-module
失败。
我注意到,在调用我的可执行文件之前,Ansible test-module
执行以下操作:
.ansible_module_generated
(并将其放入我的主目录)我的可执行文件采用压缩格式,附加的换行符损坏其内部验证。此外,可执行文件需要保留原始可执行文件名,因此重命名也是一个问题。
以上行为是否特定于test-module
- 这意味着我可以通过删除额外换行并避免重命名操作轻松调整test-module
脚本 - 或者它是一般的Ansible行为测试模块试图模仿?有没有解决方法?
答案 0 :(得分:0)
在Ansible运行模块之前,它会查找从ansible.module_utils导入*的行,如下所示:
from ansible.module_utils.basic import *
然后,它将使用导入模块的实际内容替换此行。这是为了避免将模块的多个文件传送到目标计算机。不仅仅是基本模块,但这是最常见的,因为它包含AnsibleModule,它是解析args的助手等。
测试模块必须做同样的事情才能测试模块。这是由内部ModuleReplacer完成的。如果你的模块的格式不支持这个,我怀疑它总会被破坏。