0Pricing
Ansible Academy · 课时

constructed:按标签对主机分组

根据云元数据构建组

constructed:按标签对主机分组 是 CoddyKit 上的免费 Ansible Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ansible Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ansible Academy 课程共包含 4 节课。

原始主机还不够

EC2 实例的扁平列表很难进行定位。您需要根据每台主机的元数据构建 webservers 或 production 这样的组。

两种分组方式

您可以在 aws_ec2 插件中使用 keyed_groups 进行分组,也可以叠加 constructed 插件来实现更丰富的逻辑。

使用标签创建 keyed_groups

keyed_groups 选项会自动将标签值转换为组名,每个不同的值对应一个组。

keyed_groups:
  - key: tags.Environment
    prefix: env

使用前缀保持名称整洁

使用像 env 这样的 prefix,可以将值 prod 转换为组 env_prod,从而避免云标签与您自己的组名冲突。

constructed 插件

constructed 插件会在其他来源加载主机后,使用 Jinja2 为现有主机添加组和变量。

plugin: constructed

使用表达式构建 groups

在 groups 下,由 Jinja2 表达式决定组成员身份。表达式结果为 true 的主机会加入该组。

groups:
  is_prod: "tags.Environment == 'prod'"

使用 compose 设置主机变量

compose 键会根据表达式设置新的主机变量,例如从标签中派生应用名称,以供后续使用。

compose:
  app: tags.Service | default('unknown')

这里也支持 keyed_groups

constructed 同样支持 keyed_groups,因此您可以根据已有的任何事实或变量生成动态组名。

strict 可以捕获拼写错误

设置 strict: true,这样错误的表达式会明确失败,而不是静默地跳过您本想分组的主机。

strict: true

现在可以整洁地定位组

组创建后,您就可以自然地针对这些组编写 play,例如使用 hosts: is_prod,而无需在任何地方维护静态主机列表。

- hosts: is_prod
  roles:
    - webserver

按顺序链接数据源

将 Ansible 指向一个清单文件目录。它会先加载 aws_ec2,然后由 constructed 使用您的组丰富这些主机。

快速检查

请回忆哪个选项会根据标签自动创建组。

回顾

使用 keyed_groups,以及 constructed 插件中的 groups 和 compose,将云标签转换为整洁且可定位的 Ansible 组。🏷️

常见问题解答

「constructed:按标签对主机分组」课时是免费的吗?

是的 — 「constructed:按标签对主机分组」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ansible Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ansible Academy 课程共包含 4 节课。

「constructed:按标签对主机分组」这节课中我会学到什么?

根据云元数据构建组 你通过在浏览器中直接运行的动手代码来练习 Ansible Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Ansible Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Ansible Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「constructed:按标签对主机分组」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Ansible Academy 课中编写并运行代码吗?

能。每节 Ansible Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 静态限制与 Inventory 插件模型
  2. aws_ec2 Inventory 插件
  3. constructed:按标签对主机分组
  4. 缓存与多个 Inventory 来源
← 返回 Ansible Academy