【问题标题】:How to call builtin Ansible module from custom Ansible module?如何从自定义 Ansible 模块调用内置 Ansible 模块?
【发布时间】:2021-06-27 23:32:27
【问题描述】:

我编写了一个自定义 Ansible 模块,它将查询我的 cmdb 以获取主机详细信息。接下来我需要调用内置的 add_host 模块来迭代这些结果并更新 Ansible 清单。

有人可以举一个简单的例子来说明如何从自定义 Ansible 模块调用内置模块 add_host 吗?我在网上找了一圈,找不到任何具体描述这一点的文件。

当我查看 builin add_host 的东西时,似乎该模块仅用于 DOC 部分并作为指向插件的指针。查看插件,我不确定如何远程导入/调用它。

这是我在我的机器上为add_host 准备的两个文件:

  • /opt/pyats/lib/python3.7/site-packages/ansible/modules/inventory/add_host.py
  • /opt/pyats/lib/python3.7/site-packages/ansible/plugins/action/add_host.py

谢谢!

【问题讨论】:

    标签: plugins module ansible


    【解决方案1】:

    add_host 被实现为一个动作插件。 Ansible 引擎将检查是否存在与任务 (add_host) 同名的操作插件,如果是,它将调用该操作插件,如果不存在,它将尝试搜索与任务名称对应的模块文件名。 这通常用于在控制节点本身上执行的模块。

    这是一个从另一个 https://github.com/ansible-collections/community.yang/blob/main/plugins/action/get.py#L123 调用一个模块的示例。在这种情况下,community.yang.get 模块(动作插件)在内部调用 ansible.netcommon.netconf_get 模块

    【讨论】:

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