如何在 ansible 角色中使用不同的入口点
How to use a different entry point in ansible roles
基于 roles 的 ansible 文档,我可以通过创建文件来创建多个角色入口点:
playbooks/roles/my_role/tasks/main.yml
playbooks/roles/my_role/tasks/other.yml
我可以使用以下代码添加默认 main.yml
角色:
---
- name: Example 1
hosts: <hostnames>
roles:
- my_role
但是如何使用 other.yml
入口点?
我希望它是这样的,但是 none 这些作品:
---
- name: Example 1
hosts: <hostnames>
roles:
- my_role:other
- my_role/other
- my_role.other
剧本中的 roles
指令加载角色的默认“入口点”,即 tasks/main.yml
。 tasks/others.yml
等其他任务文件可以根据条件、标签等从中加载
但是,如果您确实想从某个角色加载特定文件,您可以使用 include_role or import_role 模块。
例如:
# invoke role's default "entrypoint" (main.yml)
roles:
- my_role
tasks:
# include the role, but tasks from other.yml
- include_role:
name: my_role
tasks_from: other.yml
请注意您链接的文档中提到的执行顺序。
另一个“hacky”选项是使用 include|import_tasks
模块,如果它满足您的要求,它的工作方式就像包含一个简单的“任务”文件(失去角色功能)。
tasks:
- include_tasks: path/to/my_role/tasks/other.yml
基于 roles 的 ansible 文档,我可以通过创建文件来创建多个角色入口点:
playbooks/roles/my_role/tasks/main.yml
playbooks/roles/my_role/tasks/other.yml
我可以使用以下代码添加默认 main.yml
角色:
---
- name: Example 1
hosts: <hostnames>
roles:
- my_role
但是如何使用 other.yml
入口点?
我希望它是这样的,但是 none 这些作品:
---
- name: Example 1
hosts: <hostnames>
roles:
- my_role:other
- my_role/other
- my_role.other
剧本中的 roles
指令加载角色的默认“入口点”,即 tasks/main.yml
。 tasks/others.yml
等其他任务文件可以根据条件、标签等从中加载
但是,如果您确实想从某个角色加载特定文件,您可以使用 include_role or import_role 模块。
例如:
# invoke role's default "entrypoint" (main.yml)
roles:
- my_role
tasks:
# include the role, but tasks from other.yml
- include_role:
name: my_role
tasks_from: other.yml
请注意您链接的文档中提到的执行顺序。
另一个“hacky”选项是使用 include|import_tasks
模块,如果它满足您的要求,它的工作方式就像包含一个简单的“任务”文件(失去角色功能)。
tasks:
- include_tasks: path/to/my_role/tasks/other.yml