在模块代码中使用ansible_facts

在模块代码中使用ansible_facts,第1张

模块代码中使用ansible_facts

我怀疑这是否可以从模块本身内部实现,因为它们是在具有预定义参数的远程计算机的上下文中执行的。

但是,您可以使用动作插件(在本地上下文中执行)包装模块,从可用变量中收集所需的数据,并将其作为参数传递给模块。

像这样(./action_plugins/a_test.py):

from ansible.plugins.action import Actionbaseclass ActionModule(Actionbase):    def run(self, tmp=None, task_vars=None):        result = super(ActionModule, self).run(tmp, task_vars)        module_args = self._task.args.copy()        module_args['mem_size'] = self._templar._available_variables.get('ansible_memtotal_mb')        return self._execute_module(module_args=module_args, task_vars=task_vars, tmp=tmp)

在这种情况下,如果您的模块期望

mem_size
参数将通过
ansible_memtotal_mb
*** 作插件将其设置为的值。

模块示例(./library/a_test.py):

#!/usr/bin/pythondef main():    module = AnsibleModule(        argument_spec = dict( mem_size=dict(required=False, default=None),        ),        supports_check_mode = False    )    module.exit_json(changed=False, mem_size=module.params['mem_size'])from ansible.module_utils.basic import *from ansible.module_utils.urls import *main()

测试手册:

---- hosts: all  tasks:    - a_test:


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5508442.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-13
下一篇2022-12-13

发表评论

登录后才能评论

评论列表(0条)

    保存