从Ansible中的自定义模块访问playbook变量

时间:2015-08-19 18:27:49

标签: ansible

我在Ansible中编写自定义模块,特定于Playbook。是否可以直接访问playbook变量,而无需将其作为参数传递给任务?

1 个答案:

答案 0 :(得分:0)

这是不可能的,因为模块是远程执行的,除非明确传递,否则所有变量都不可用。

前一段时间我有same question,而Pruce P在他的回答中提供了一个有趣的解决方法。

虽然我在此期间有另一个想法,但这只是理论上的而且从未经过测试:在正常模块旁边,Ansible有一种特殊的模块:动作插件。 (...未记录)它们与模块完全一样,但在本地执行。由于它们在本地运行,因此可以访问Ansibles runner对象,该对象包含所有组/主机变量等。

很酷的是,您可以通过动作插件以编程方式调用模块。所以你可以有一个小的包装动作插件,然后调用实际模块并将所有(必需的)变量传递给它。由于它没有文档,你需要查看可用的插件。例如,这里有一个调用模块:assemble

我写了一些here,它与转轮对象的vars交互。