2016-02-26 138 views
0

我想使用我需要“主机名”的自定义模块,以便可以从自定义模块启动SSH连接并运行命令。所以我将transport =“local”传递给Runner对象。但是,我无法在自定义模块中获取“主机名”信息。Ansible API:自定义模块

我正在使用Ansible 1.9.2使用Python API。

回答

0

模块只包含明确传递给它的信息。您可能会感兴趣的是一个动作插件,该插件由(非存在的)定义在控制机器上本地运行,并且可以访问更多(全部)数据。

您可以在这里看到一些行动插件代码:https://github.com/ansible/ansible/tree/devel/lib/ansible/plugins/action

PS:难道你不想在开始之前编写自定义模块/插件升级到Ansible 2?该API完全改变,一旦你升级你必须重写你的模块/插件。

+0

udondan @:感谢您的评论。我明白,自定义模块获得的唯一参数是显式传递给它的。但是,如果我可以以某种方式“提取”主机名(就像我们可以在剧本中使用{{inventory_hostname}} Jinja变量所做的那样,那么我可以明确地将它传递给自定义模块 – user3267989

+0

啊,好的,所以你的问题实际上是如何通过Ansible API获取主机名,而不是如何获取模块内的主机名?我敢肯定这是可能的,但我对API没有经验,我也认为在这里有许多Ansible用户,拥有API经验。您可能还想在Ansible邮件列表上提问,以获得更快的响应。 – udondan

0

好吧,傻我。这在API中也完全一样。您可以使用{{inventory_hostname}}提取主机名。