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对,只是字符串。您显示的内容已经是节点属性,因此它们对于再次使用标记系统没有任何意义,它只是节点属性中的一个字符串数组。谢谢。但我喜欢以这样的方式标记节点,以便在外部应用程序中使用这些标记进行统计和查询。你能帮忙吗?为什么?您可以将现有属性用于所需的所有搜索。