Ansible角色可以包含Python代码作为辅助方法吗?

时间:2019-09-18 11:31:07

标签: ansible

我想在Ansible角色中添加一个辅助方法。想法是例如在任务中调用此辅助方法,并提供“事实”作为该辅助方法的参数。 helper方法将返回一个字符串和一个将在任务中处理的列表

1 个答案:

答案 0 :(得分:1)

是的。

您可以使用script模块,该模块允许您在远程主机上运行脚本。然后,您使用registers处理结果。 只要确保您的脚本在files子文件夹中的角色路径内即可。

例如:

- name: run python script
  script: "script.py --argument {{argument}}"
  register: output

另一种选择是开发自己的filter,如Zeitounator在评论中所述。这将允许您使用Jinja2模板表达式来调用脚本。在这种情况下,请确保过滤器位于您的角色路径中的filter_plugins子目录内(值得注意的是,在角色中包含自定义过滤器也会使它在调用剧本中可用)。

例如:

- module:
    module_argument: "{{ argument | custom_filter}}"