Ansible API:自定义模块

Ansible API:自定义模块,api,ansible,ansible-api,Api,Ansible,Ansible Api,我想使用一个需要“主机名”的自定义模块,以便可以从自定义模块启动SSH连接并运行命令。因此,我将transport=“local”传递给Runner对象。但是,我在自定义模块中找不到获取“主机名”信息的方法 我使用的是使用Python API的Ansible 1.9.2。模块只有显式传递给它的可用信息。您可能感兴趣的是一个动作插件,它通过(不存在的)定义在控制机器上本地运行,并且可以访问更多(全部?)数据 您可以在此处看到一些动作插件代码: PS:在开始编写自定义模块/插件之前,您不想升级到An

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


我使用的是使用Python API的Ansible 1.9.2。

模块只有显式传递给它的可用信息。您可能感兴趣的是一个动作插件,它通过(不存在的)定义在控制机器上本地运行,并且可以访问更多(全部?)数据

您可以在此处看到一些动作插件代码:


PS:在开始编写自定义模块/插件之前,您不想升级到Ansible 2吗?API已完全更改,升级后,您必须重写模块/插件。

模块只有显式传递给它的可用信息。您可能感兴趣的是一个动作插件,它通过(不存在的)定义在控制机器上本地运行,并且可以访问更多(全部?)数据

您可以在此处看到一些动作插件代码:


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

好吧,我真傻。在API中也是如此。您可以使用{{inventory\u hostname}}提取主机名。

好的,我真傻。在API中也是如此。您可以使用{inventory\u hostname}提取主机名。

udondan@:谢谢您的评论。我知道自定义模块得到的唯一参数是显式传递给它的参数。但是,如果我能以某种方式“提取”主机名(就像我们在剧本中使用{{inventory\u hostname}}所做的那样)Jinja变量,然后我可以显式地将其传递给自定义模块。啊,好吧,那么你的问题实际上是如何通过Ansible API获取主机名,而不是如何在模块内获取主机名?我相信这是可能的,但我没有使用API的经验。我还认为这里没有那么多Ansible用户有API经验。您可能还想在Ansible邮件列表上问这个问题,以获得更快的响应。udondan@:谢谢您的评论。我知道自定义模块获得的唯一参数是显式传递给它的内容。但是,如果我能够以某种方式“提取”主机名(就像我们在剧本中使用{inventory\u hostname}所做的那样)Jinja变量,然后我可以显式地将其传递给自定义模块。啊,好吧,那么你的问题实际上是如何通过Ansible API获取主机名,而不是如何在模块内获取主机名?我相信这是可能的,但我没有使用API的经验。我还认为这里没有那么多Ansible用户有API经验。您可能还想在Ansible邮件列表上提出问题,以获得更快的响应。