0Pricing
Ansible Academy · 课时

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 反馈 — 无需本地设置。

此课程中的所有课时

  1. meta/main.yml 中的 Role 依赖
  2. defaults 与 vars:覆盖顺序
  3. 运行时的 include_role 与 import_role
  4. allow_duplicates 与 Role 幂等性
← 返回 Ansible Academy