meta/main.yml 中的 Role 依赖
串联相互依赖的 Role
meta/main.yml 中的 Role 依赖 是 CoddyKit 上的免费 Ansible Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ansible Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ansible Academy 课程共包含 4 节课。
需要其他角色的角色
有些角色只有在另一个角色先运行后才能正常工作。例如,您的应用角色可能需要一个基础角色先加固服务器,然后再进行部署。
认识 meta/main.yml
每个角色都可以包含一个 meta/main.yml 文件。它存储角色元数据,例如作者、支持的平台及其依赖项。
dependencies 键
在 meta/main.yml 中,dependencies 键列出必须在当前角色之前运行的角色。Ansible 会自动先运行它们。
dependencies:
- role: common
- role: firewall依赖项先运行
应用角色时,Ansible 会按照 dependencies 中的列出顺序,先运行这些依赖项,然后再运行您角色自己的任务。
向依赖项传递变量
您可以直接在列表中向依赖项传递变量。这样,基础角色就会按照当前角色所需的配置准确运行。
dependencies:
- role: nginx
vars:
http_port: 8080真实的依赖链
一个 webapp 角色依赖 nginx,而 nginx 又依赖 common。应用 webapp 后,整条依赖链会由上到下自动为您解析。
有条件的依赖项
依赖项可以带有 when 条件,因此只会在匹配的主机上运行。例如,可以在开发环境主机上跳过防火墙角色。
dependencies:
- role: firewall
when: env == 'prod'依赖项是静态的
meta 中的依赖项会在剧本开始前解析。它们无法使用之后才收集的运行时事实,因此请让它们的条件保持简单。
Galaxy 也会读取 meta
从 Ansible Galaxy 安装角色时,它会读取 meta/main.yml,并自动获取其中列出的所有依赖项。
保持依赖项真实明确
只有当某个角色确实必须先运行时,才将它列为依赖项。隐藏的依赖链会让自动化流程难以理解和调试。
Galaxy 信息也在这里
除了依赖项之外,meta/main.yml 还包含 galaxy_info:许可证、最低 Ansible 版本和平台信息。它说明了角色应如何使用。
快速检查
回想一下,应在哪里声明一个角色必须先于另一个角色运行。
回顾
在 meta/main.yml 的 dependencies 下列出所需角色,Ansible 就会先运行这条依赖链,也可以选择传入变量和条件。🔗
常见问题解答
「meta/main.yml 中的 Role 依赖」课时是免费的吗?
是的 — 「meta/main.yml 中的 Role 依赖」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ansible Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ansible Academy 课程共包含 4 节课。
「meta/main.yml 中的 Role 依赖」这节课中我会学到什么?
串联相互依赖的 Role 你通过在浏览器中直接运行的动手代码来练习 Ansible Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Ansible Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Ansible Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「meta/main.yml 中的 Role 依赖」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Ansible Academy 课中编写并运行代码吗?
能。每节 Ansible Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- meta/main.yml 中的 Role 依赖
- defaults 与 vars:覆盖顺序
- 运行时的 include_role 与 import_role
- allow_duplicates 与 Role 幂等性