Ansible module development documentation声明:
编写Ansible模块的关键部分包括始终以:
结束模块文件from ansible.module_utils.basic import * main()
这与在文件顶部对导入进行分组的常规做法相矛盾。使用import *
也可以防止lint工具(例如flake8)有效地工作,并且generally regarded as bad practice。
有没有理由以这种方式导入,或者Ansible只是在这里做出自己的风格推荐?
答案 0 :(得分:2)
注意:以下答案不再适用于Ansible 2.1+。来自评论:
我意识到这是一个古老的帖子,但任何人都应该感兴趣,值得注意的是,自从ansible 2.1以后,这不再是真的。取自here:在Ansible-2.1.0之前,仅导入您从ansible.module_utils.basic使用的内容不起作用。您需要使用通配符导入 - bouletta
原始答案 Ansible(prior to version 2.1)will refuse to run如果您不执行import *
业务。我并非100%确定正在做什么魔法,但我知道some是。
Replacer用于之前将代码块插入模块中 传递。而不是做经典的python导入,这允许更多 通过不移动额外文件在无引导场景中进行有效传输 通过电线,还负责在转移中嵌入参数 模块。
此版本的完成方式仍然可以是本地导入 在模块代码中使用,因此IDE不必知道发生了什么。
示例:
from ansible.module_utils.basic import *
...将导致将basic.py插入模块 来自源树中的module_utils /目录。
所有模块都必须至少导入基本的,但也会 是其他片段。