
我怀疑这是否可以从模块本身内部实现,因为它们是在具有预定义参数的远程计算机的上下文中执行的。
但是,您可以使用动作插件(在本地上下文中执行)包装模块,从可用变量中收集所需的数据,并将其作为参数传递给模块。
像这样(./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:
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)