Ansible-inventory gcp_compute 插件下划线添加到主机组名称

Posted

技术标签:

【中文标题】Ansible-inventory gcp_compute 插件下划线添加到主机组名称【英文标题】:Ansible-inventory gcp_compute plugin underscore added to host group name 【发布时间】:2019-06-20 12:36:57 【问题描述】:

我正在尝试使用 gcp_compute 插件通过 GCE 标签解析 ansible 动态库存文件。我花了一段时间才设法运行插件,以便我真正正确地获取主机但是由于某种原因,ansible-inventory 会在组名中添加下划线前缀,即使前缀留空也是如此。

每当我使用以下 inventory.gcp.yml 文件运行 ansible-inventory 时:

plugin: gcp_compute
projects:
  - terzbx
filters:
keyed_groups:
  - key: tags['items']
auth_kind: serviceaccount
service_account_file: /root/deployment/MY_SERVICEACCOUNT.json

我收到的输出是:

 "all": 
     "children": [
         "__built_in_method_items_of_dict_object_at_0x2bc4db0_",
         "_analytics",
         "_consul_server",
         "_dashboardapi",
         "_elasticsearch",
         "_http_server",
         "_https_server",
         "_inventory",
         "_k2bq",
         "_kafka",
         "_kibana",
         "_logstash_k2bq",
         "_logstash_k2es",
         "_mysql",
         "_neo4j",
         "_ssl_offload",
         "_zookeeper",
         "ungrouped"
     ]

我希望它是:

 "all": 
     "children": [
         "_built_in_method_items_of_dict_object_at_0x2bc4db0_",
         "analytics",
         "consul_server",
         "dashboardapi",
         "elasticsearch",
         "http_server",
         "https_server",
         "inventory",
         "k2bq",
         "kafka",
         "kibana",
         "logstash_k2bq",
         "logstash_k2es",
         "mysql",
         "neo4j",
         "ssl_offload",
         "zookeeper",
         "ungrouped"
     ]

以前有人遇到过这个问题吗?我可以做些什么来获得所需的输出吗?

提前感谢您的帮助:)

【问题讨论】:

在 ansible 库存插件的 init.py 下找到它。在 _add_host_to_keyed_group 下,您会找到“前缀”和“分隔符”。我刚刚添加了一个条件,如果前缀留空,则分隔符被删除。 请考虑提交一个拉取请求来解决这个问题,因为这听起来不错。这对于第一个条目 "built_in_method_items..." 业务来说是双重的,这肯定是一个错误 【参考方案1】:

遇到同样的问题,你应该试一试:

plugin: gcp_compute
projects:
  - terzbx
filters:
keyed_groups:
  - key: tags['items']
    separator: ''
auth_kind: serviceaccount
service_account_file: /root/deployment/MY_SERVICEACCOUNT.json

【讨论】:

我发现它与 ansible 库存插件处理这些条目的方式有关。我的第一条评论中描述了解决方法。分隔符:'' 不会因此产生影响(它总是添加“_”分隔符 - 即使另有说明)

以上是关于Ansible-inventory gcp_compute 插件下划线添加到主机组名称的主要内容,如果未能解决你的问题,请参考以下文章