【问题标题】:How to access tasks parameters from an Ansible task in the Python module code?如何从 Python 模块代码中的 Ansible 任务访问任务参数?
【发布时间】:2023-01-11 23:59:32
【问题描述】:

是否可以从 Python 模块代码访问 Ansible 任务参数?

具体来说,我想检查任务中是否有 register,以便返回更完整的信息集。

【问题讨论】:

    标签: ansible ansible-module


    【解决方案1】:

    是否可以从 Ansible 模块的 Python 代码访问任务参数?

    是的当然。例如,您可以查看 Developing modulesCreating a module

    def run_module():
        # define available arguments/parameters a user can pass to the module
        module_args = dict(
            name=dict(type='str', required=True),
            new=dict(type='bool', required=False, default=False)
        )
    

    具体来说,我想检查任务上是否有寄存器

    请注意Registering variables已完成

    ...来自带有任务关键字register 的 Ansible 任务的输出。

    这意味着任务,相应的在其中调用的模块不知道输出是否会被注册的事实,因为这是在执行模块代码并提供最终结果之后完成的。

    ...为了返回更完整的信息集。

    因此,您需要提供另一种方法来控制结果集的数据结构。

    例如

    ...
            supports_check_mode=True
    ...
        if module.check_mode:
    ...
    

    或者只是在您的自定义模块上引入一个单独的参数,例如

    verbose: True
    

    或者

    verbose_level: 1 # up to 4
    

    可以在模块中检查并简单地控制结果的冗长程度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 2012-02-05
      相关资源
      最近更新 更多