Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Ansible中的自定义模块访问playbook变量_Ansible - Fatal编程技术网

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

从Ansible中的自定义模块访问playbook变量,ansible,Ansible,我正在用Ansible编写一个自定义模块,专门针对一个剧本。是否可以直接访问playbook变量,而不需要将其作为参数传递给任务?这是不可能的,因为该模块是远程执行的,除非明确传递,否则所有变量都不可用 不久前,我收到了一封信,普鲁士·p在他的回答中提出了一个有趣的解决办法 虽然在此期间我有另一个想法,但这只是理论上的,从未测试过:除了普通模块之外,Ansible还有一种特殊的模块:动作插件。(…未记录)它们与模块完全相同,但在本地执行。因为它们在本地运行,所以它们可以访问Ansibles ru

我正在用Ansible编写一个自定义模块,专门针对一个剧本。是否可以直接访问playbook变量,而不需要将其作为参数传递给任务?

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

不久前,我收到了一封信,普鲁士·p在他的回答中提出了一个有趣的解决办法

虽然在此期间我有另一个想法,但这只是理论上的,从未测试过:除了普通模块之外,Ansible还有一种特殊的模块:动作插件。(…未记录)它们与模块完全相同,但在本地执行。因为它们在本地运行,所以它们可以访问Ansibles runner对象,该对象包含所有组/主机变量等

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

我已经写了一些与runner对象中的变量交互的东西