Chef infra 基于特定属性标记厨师节点

Chef infra 基于特定属性标记厨师节点,chef-infra,Chef Infra,运行以下命令并获取其输出时: $ knife node show webnode21.domain.tld -a openstack webnode21.domain.tld: openstack: ami_id: ami-88171711 ami_launch_index: 0 ami_manifest_path: /var/os/manifest block_device_

运行以下命令并获取其输出时:

$ knife node show webnode21.domain.tld -a openstack
webnode21.domain.tld:
  openstack:
    ami_id:                      ami-88171711
    ami_launch_index:            0
    ami_manifest_path:           /var/os/manifest
    block_device_mapping_ami:    vdb
    block_device_mapping_ebs0:   /dev/vdb
    block_device_mapping_root:   /dev/vdb
    block_device_mapping_swap:   /dev/vdc
    hostname:                    webnode21.domain.tld
    instance_action:             none
    instance_id:                 i-11243010
    instance_type:               small
    local_hostname:              webnode21.domain.tld
    local_ipv4:                  192.168.20.101
    placement_availability_zone: AZ002
    provider:                    openstack
    public_hostname:             webnode21.domain.tld
    public_ipv4:
    public_keys_0_openssh_key:   ssh-rsa somekey
    reservation_id:              r-88x801h
    security_groups:             default

我希望能够在配方中标记以下属性:主机名、ami\u id、安全组、本地ipv4。我知道你可以用标记“key:value”来标记。。但我不知道如何在配方中提取属性,只标记特定的键/值对。

最终解决了这个问题。在其他人遇到类似情况时发布答案:

if node['openstack']['ami_id']
  tag("ami_id:#{node['openstack']['ami_id']}")
end

你是指厨师节点标签还是AWS对象标签?@coderanger不一定。我知道AWS Ohai插件。。这是我想在菜谱中用来标记厨师节点的属性。因此,这个节点会有如下标记:tags:hostname:webnode21.domain.tld,ami_id:ami-88171711,local_ipv4:192.168.20.101,security_groups:default。我想你误解了Chef标记是什么,它只是节点属性中的一个数组,显然不是k/v对,只是字符串。您显示的内容已经是节点属性,因此它们对于再次使用标记系统没有任何意义,它只是节点属性中的一个字符串数组。谢谢。但我喜欢以这样的方式标记节点,以便在外部应用程序中使用这些标记进行统计和查询。你能帮忙吗?为什么?您可以将现有属性用于所需的所有搜索。