Ansible角色与集合的短横线/下划线命名规则问询
Ansible角色与集合命名:短横线vs下划线的规则说明
技术限制与兼容性
- Ansible核心引擎对两种命名风格双向兼容:在playbook里引用时,
role-name和role_name会被识别为同一个角色,内部自动做转换处理。 - 文档中提到的“角色名称仅限小写字母、数字和下划线”,实际是针对Ansible内置模块、插件的命名约束,而非Galaxy平台的角色发布规则——Galaxy允许使用短横线,所以
ansible-galaxy role init my-super-role能正常执行,平台上也有大量短横线命名的公开角色。 - 你遇到的角色从
acme-sh改名为acme_sh的情况,是旧版Galaxy的命名要求,目前平台已放宽限制,两种风格都可正常发布。
官方建议规范
- Ansible核心生态(内置模块、插件、变量)严格遵循snake_case,这是为了保证核心代码的一致性。
- 对于Galaxy上的公开角色/集合,官方没有强制统一命名,但最新指南更推荐snake_case:尤其是当角色需要和核心模块、内部变量交互时,能减少命名转换带来的混淆。
- 文档示例里的
test-role-1属于早期遗留内容,并非强制要求的规范。
社区通用实践
- 像geerlingguy这类资深维护者从kebab-case转向snake_case,核心原因是对齐Ansible核心的命名风格,降低用户的认知成本。
- 公开分享的角色/集合:优先选snake_case,既贴合官方规范,也能避免playbook引用、变量定义时的潜在问题;内部使用场景:两种风格均可,只要团队内部保持统一即可。
内容的提问来源于stack exchange,提问作者phanaz
相关产品推荐
相关产品推荐

