Ansible 动态库存键组 gcp

Ansible dynamic inventory keyed groups gcp

我正在尝试在 ansible 中创建一个清单文件,该文件根据 Google 云平台中的实例组对所有实例进行分组。

A​​nsible 文档给出了以下示例,根据标签对实例进行分组。当我使用此示例时,它可以正常工作并显示按标签分组的实例。

keyed_groups:
  - prefix: gcp
    key: labels

但我想按实例组对它们进行分组。我尝试了以下的很多变体,但其中 none 有效。

keyed_groups:
  - prefix: gcp
    key: instance-groups

keyed_groups:
  - prefix: gcp
    key: compute_instance_groups

知道我的问题的语法是什么吗?

主机列表由 gcp_compute ansible inventory 插件构建。该插件检查一组 Compute Engine 实例并构建一个列表。我们可以用作键的项目集可在此处找到:

如果我们查看此数据,我们会不会发现计算引擎知道它属于哪个(如果有的话)实例组。

回过头来看,我们发现要创建实例组,我们首先要创建一个计算引擎模板来描述实例的外观。接下来我们创建一个引用该模板的实例组。 GCP 的实例组子系统似乎与计算引擎实例分开管理组。

如果您希望能够了解计算引擎属于哪个实例组,一种解决方案是在用于创建计算引擎的模板中创建一个标签。例如:

  • instance_group:我的实例组

完成后,由实例组创建并与该模板关联的计算引擎实例将有一个名为 instance_group 的标签。届时,您可以使用 Ansible 库存插件按标签分组。

参考文献:

看起来,您可以在元数据中找到该实例组,尽管不是那么整齐。它在数据中 ansible 可以像这样访问:

"metadata": {
    "created-by": "projects/XXXX/regions/europe-west4/instanceGroupManagers/my-instance-group",

您可以基于此创建一个群组:

groups:
  my-instance-group: "'instanceGroupManagers/my-instance-group' in metadata['created-by']"

请注意,当您 运行 ansible-inventory --list -i inventory/nonprod_gcp.yml 时,您可以看到所有元数据,因此您还可以在其他属性上创建 groupskeyed_groups