【发布时间】:2016-10-31 12:25:43
【问题描述】:
默认情况下,Ansible 在 main.yml 中查找角色的任务。我有太多 main.yml 文件,我想将其重命名为 rolename.yml 或更独特的名称。如何更改 Ansible 的默认行为以使用 rolename.yml 而不是 tasks/main.yml?
【问题讨论】:
标签: ansible
默认情况下,Ansible 在 main.yml 中查找角色的任务。我有太多 main.yml 文件,我想将其重命名为 rolename.yml 或更独特的名称。如何更改 Ansible 的默认行为以使用 rolename.yml 而不是 tasks/main.yml?
【问题讨论】:
标签: ansible
正如布鲁斯已经指出的那样,这是硬编码的。但我也有这种行为的问题,因为我的 IDE 在选项卡中显示文件名,而我曾经有一个名为“main.yml”的无数选项卡。
我的标准设置是有两个文件:
在 main.yml 中只是一个 include 任务到 role-name.yml。除了这个包括我处理标签,因为我希望我的所有角色都用他们的名字来标记。
---
- include: role-name.yml
tags: role-name
...
【讨论】:
include_tasks 方法而中断。跨度>
不幸的是,没有办法做到这一点。 main.yml 这个名字被硬编码到 ansible 源代码中。 (如果你真的很在意,请在this file 中寻找函数_resolve_main。)
角色任务将始终位于文件 roles/<rolename>/tasks/main.yml 中,变量位于 roles/<rolename>/vars/main.yml 中,等等。因为每个文件所在的路径提供了角色名称和文件用途的完整详细信息,所以真的没有需要从 main.yml 更改名称。你最终会得到像roles/<rolename>/tasks/<rolename>.yml 这样的东西,这是多余的。
这一切都记录在 Ansible 的 Best Practices 文档中。
【讨论】:
roles/<rolename>/tasks.yml 这样的路径结束? IMO,能够使用这种简化会很好。有什么隐藏的陷阱吗?
作为一种解决方法,可以方便地将命名为 rolename_tasks.yml 的符号链接到 main.yml...
【讨论】: