2015-01-05 84 views
3

的Ansible module development documentation状态:导入Ansible模块utils的

包括永远结束模块文件,[编写Ansible模块]

关键部分:

from ansible.module_utils.basic import * 
main() 

这违背通常的做法在文件顶部分组导入。使用import *还可以防止棉绒工具(例如薄片8)有效地工作,并且是generally regarded as bad practice

是否有任何理由以这种方式导入,或Ansible只是在这里制作自己的风格推荐?

+0

Ansible只是随着他们的进展而加入进来。忽略它们并正确执行。 – VooDooNOFX

回答

2

注意:以下答案不再涉及Ansible 2.1+。从评论:

我意识到这是一个旧的帖子,但如果任何人仍然有兴趣,值得注意的是,这是不正确的,因为真正的2.1。取自here:在Ansible-2.1.0之前,只导入您在ansible.module_utils.basic中使用的内容不起作用。您需要使用通配符导入 - bouletta

原来的答案

Ansible(prior to version 2.1will refuse to run,如果你不这样做的import *业务。我不是100%确定什么魔术正在完成,但我知道some是。

替换器用于在传输 之前将代码块插入模块中。通过不通过网络移动额外文件 ,而且还负责在传输的 模块中嵌入参数,而不是通过执行传统python导入,从而允许在无引导方案中进行更多的高效传输。

该版本以这种方式完成,即本地导入仍然可以在模块代码中使用 ,因此IDE不必知道发生了什么。

实施例:

from ansible.module_utils.basic import * 

...将导致从源树中的module_utils /目录插入basic.py到模块 。

所有模块都需要导入至少基本的,虽然也会有 为其他片段。

+1

@augurar我认识到这是一个旧帖子,但是如果任何人仍然对此感兴趣,值得注意的是,自从2.1版本开始,这是不正确的。 取自[这里](https://docs.ansible.com/ansible/dev_guide/developing_modules.html): 在Ansible-2.1.0之前,只导入你在ansible.module_utils.basic中使用的内容不起作用。您需要使用通配符导入 – bouletta