导入Ansible模块工具

时间:2015-01-05 19:22:30

标签: python coding-style python-import ansible

Ansible module development documentation声明:

  

编写Ansible模块的关键部分包括始终以:

结束模块文件
from ansible.module_utils.basic import *
main()

这与在文件顶部对导入进行分组的常规做法相矛盾。使用import *也可以防止lint工具(例如flake8)有效地工作,并且generally regarded as bad practice

有没有理由以这种方式导入,或者Ansible只是在这里做出自己的风格推荐?

1 个答案:

答案 0 :(得分:2)

注意:以下答案不再适用于Ansible 2.1+。来自评论:

我意识到这是一个古老的帖子,但任何人都应该感兴趣,值得注意的是,自从ansible 2.1以后,这不再是真的。取自here:在Ansible-2.1.0之前,仅导入您从ansible.module_utils.basic使用的内容不起作用。您需要使用通配符导入 - bouletta

原始答案

Ansible(prior to version 2.1will refuse to run如果您不执行import *业务。我并非100%确定正在做什么魔法,但我知道some是。

  

Replacer用于之前将代码块插入模块中     传递。而不是做经典的python导入,这允许更多     通过不移动额外文件在无引导场景中进行有效传输     通过电线,还负责在转移中嵌入参数     模块。

     

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

     

示例:

from ansible.module_utils.basic import * 
     

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

     

所有模块都必须至少导入基本的,但也会     是其他片段。