在 Ansible 中将 roles/rolename/tasks/main.yml 重命名为 rolename.yml

Rename roles/rolename/tasks/main.yml to rolename.yml in Ansible

默认情况下,Ansible 在 main.yml 中查找角色的任务。我有太多 main.yml 文件,我想将其重命名为 rolename.yml 或更独特的名称。如何更改 Ansible 的默认行为以使用 rolename.yml 而不是 tasks/main.yml?

很遗憾,没有办法做到这一点。名称 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 文档中。

正如 Bruce 已经指出的那样,这是硬编码的。但我对这种行为也有疑问,因为我的 IDE 在选项卡中显示了文件名,而我曾经有无数个名为 "main.yml".

的选项卡

我的标准设置是有两个文件:

  • main.yml
  • 角色名.yml

main.yml那么简单的就是一个include任务给角色-name.yml.除了这个,我还处理标签,因为我希望我的所有角色都用他们的名字来标记。

---

- include: role-name.yml
  tags: role-name

...

作为一种变通方法,可以将符号链接方便地命名为 rolename_tasks.ymlmain.yml...