Ansible是否有任何方法可以使全局任务在所有剧本中使用

Ansible是否有任何方法可以使全局任务在所有剧本中使用,ansible,Ansible,有没有办法只创建一次中心函数,并从每个需要它的任务手册中调用它? 例如,我有以下任务: - name: Download get_url: url_username: foo url_password: foo dest: "{{ ansible_env.APP }}/" url: "{{ download_url }}" 相同的任务是在不同的剧本中复制/粘贴多次 这是非常没有效率的 有没有办法定义一次并从其他剧本中调用它 有两种选择 1) 将任务放入文件并

有没有办法只创建一次中心函数,并从每个需要它的任务手册中调用它? 例如,我有以下任务:

- name: Download
  get_url:
    url_username: foo
    url_password: foo
    dest: "{{ ansible_env.APP }}/"
    url: "{{ download_url }}"
相同的任务是在不同的剧本中复制/粘贴多次 这是非常没有效率的

有没有办法定义一次并从其他剧本中调用它

有两种选择

1) 将任务放入文件并使用或

2) 使用该文件创建一个角色,并使用include\u角色

不管好坏请参阅我的任务库和。


问:“它们之间有什么区别?”

答:导入的代码从playbook执行的开始就存在。当工作流程到达该点时,将加载包含的代码。这影响

  • 标签的继承
  • 某些变量的可用性(例如角色默认值等)
详见


()

问:“通常使用什么?”

答:
include\u角色
是最强大、最灵活的选择。请参阅模块的第页


问:“导入剧本怎么样?”


答:这不是一个模块。这是一个包含代码的简单指令。使用
import_playbook
简化(模块化)复杂的playbook,并在保留的同时动态更改(例如,
主机,…
)。

谢谢。从较高的层次来看,它们之间的区别是什么?通常使用什么?导入剧本如何?这是推荐的吗?我正在尝试实施你的建议,你能看到这个新问题吗