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 反馈 — 无需本地设置。
此课程中的所有课时
- 静态限制与 Inventory 插件模型
- aws_ec2 Inventory 插件
- constructed:按标签对主机分组
- 缓存与多个 Inventory 来源