这是我的角色:
/roles
/foo
/tasks
main.yml <----- I want to split this
main.yml
文件很大,所以我想把它分成多个文件,然后依次调用。
/roles
/foo
/tasks
run-this-first.yml <--- 1st
run-this-last.yml <--- last
run-this-second.yml <--- 2nd
如何调用这些文件,以及如何确保它们按顺序运行?
include_tasks
来做到这一点:
/roles
/foo
/tasks
main.yml
run-this-first.yml <--- 1st
run-this-last.yml <--- last
run-this-second.yml <--- 2nd
您可以注意到,
main.yml
目录中还有tasks
,而您的main.yml
只包含以下内容:
---
- include_tasks: run-this-first.yml
- include_tasks: run-this-second.yml
- include_tasks: run-this-last.yml
您基本上有两种方法(准确地说是两个内置模块)来实现这一目标。两种方法显示的都是您的
tasks/main.yml
文件的外观:
include_tasks
模块
---
- name: First tasks
ansible.builtin.include_tasks:
file: run-this-first.yml
- name: second tasks
ansible.builtin.include_tasks:
file: run-this-second.yml
- name: Last tasks
ansible.builtin.include_tasks:
file: run-this-last.yml
import_tasks
模块
---
- name: First tasks
ansible.builtin.import_tasks:
file: run-this-first.yml
- name: second tasks
ansible.builtin.import_tasks:
file: run-this-second.yml
- name: Last tasks
ansible.builtin.import_tasks:
file: run-this-last.yml
请注意,根据有关角色的 ansible 文档,建议采用
import_tasks
模块。
上述示例的区别实际上只是
include_tasks/import_tasks
。
但是,您使用的模块将影响如何导入任务,因为include_tasks
以动态方式导入任务,而import_tasks
以静态方式导入任务。
可以在官方有关重用工件的指南中找到两种方法的比较此处,并且您可以在同一指南中此处阅读有关何时可能想要使用哪个模块的更多信息。