【问题标题】:Ansible API : Custom ModuleAnsible API:自定义模块
【发布时间】:2016-02-26 16:15:26
【问题描述】:

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

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

【问题讨论】:

    标签: api ansible ansible-api


    【解决方案1】:

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

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

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

    【讨论】:

    • udondan@ :感谢您的评论。我知道自定义模块获得的唯一参数是明确传递给它的参数。但是,如果我能以某种方式“提取”主机名(就像我们可以在 playbook 中使用 {{ inventory_hostname }} Jinja 变量一样),那么我可以将其显式传递给自定义模块。
    • 啊,好的,所以你的问题实际上是如何通过 Ansible API 获取主机名,而不是如何获取模块内的主机名?我确信这是可能的,但我没有使用 API 的经验。我也认为在 SO 上有 API 经验的 Ansible 用户并不多。您可能还想在 Ansible 邮件列表中提出问题以获得更快的响应。
    【解决方案2】:

    好吧,我傻了。 API 中的方式也完全相同。您可以使用 {{ inventory_hostname }} 提取主机名。

    【讨论】:

      猜你喜欢
      • 2021-06-27
      • 2020-02-20
      • 2022-11-07
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      • 2023-02-14
      相关资源
      最近更新 更多