Chef 获取节点的当前角色
Chef get node's current role
我有一些这样的代码,可以生成一个包含所有符合搜索条件的节点的数组。我有一大堆不同风格的负载均衡器,每一个都有自己的 Chef 角色。
我可以看到我想要的 knife node edit max_data_lb-1
"run_list": [
"role[max_data_lb]"
]
我想把这个角色拉出来,放到一个变量里,以备后用。我见过很多方法可以检查当前 run_list 中是否有特定角色,例如 node.role?('name')
,但只有 return 是布尔值。我不知道如何 return run_list 中的角色数组。
flavor = '#{node.role}'
# Somehow scrapes the node data for the role on the currently processing node.
#max_data_lb in one of my cases.
⚠ lb_q = "roles:#{flavor} AND chef_environment:#{node.chef_environment}"
lb_array = search(:node, lb_q, filter_result: { fqdn: ['fqdn'] }).map { |n| n['fqdn'] }.sort
#Code I'm trying to generalize and replace
⚠ #max_data_lb_q = "roles:max_data_lb AND chef_environment:#{node.chef_environment}"
⚠ #max_data_lb_array = search(:node, q, filter_result: { fqdn: ['fqdn'] }).map { |n| n['fqdn'] }.sort
⚠ #maxapi_lb_q = "roles:max_api_lb AND chef_environment:#{node.chef_environment}"
⚠ #maxapi_lb_array = search(:node, q, filter_result: { fqdn: ['fqdn'] }).map { |n| n['fqdn'] }.sort
节点有一个 roles
属性,Chef 会自动存储节点 运行 列表中的所有角色。您可以像这样从食谱中访问它:
my_roles = node['roles'] #or node[:roles]
您喜欢(字符串或符号)访问属性。
我有一些这样的代码,可以生成一个包含所有符合搜索条件的节点的数组。我有一大堆不同风格的负载均衡器,每一个都有自己的 Chef 角色。
我可以看到我想要的 knife node edit max_data_lb-1
"run_list": [
"role[max_data_lb]"
]
我想把这个角色拉出来,放到一个变量里,以备后用。我见过很多方法可以检查当前 run_list 中是否有特定角色,例如 node.role?('name')
,但只有 return 是布尔值。我不知道如何 return run_list 中的角色数组。
flavor = '#{node.role}'
# Somehow scrapes the node data for the role on the currently processing node.
#max_data_lb in one of my cases.
⚠ lb_q = "roles:#{flavor} AND chef_environment:#{node.chef_environment}"
lb_array = search(:node, lb_q, filter_result: { fqdn: ['fqdn'] }).map { |n| n['fqdn'] }.sort
#Code I'm trying to generalize and replace
⚠ #max_data_lb_q = "roles:max_data_lb AND chef_environment:#{node.chef_environment}"
⚠ #max_data_lb_array = search(:node, q, filter_result: { fqdn: ['fqdn'] }).map { |n| n['fqdn'] }.sort
⚠ #maxapi_lb_q = "roles:max_api_lb AND chef_environment:#{node.chef_environment}"
⚠ #maxapi_lb_array = search(:node, q, filter_result: { fqdn: ['fqdn'] }).map { |n| n['fqdn'] }.sort
节点有一个 roles
属性,Chef 会自动存储节点 运行 列表中的所有角色。您可以像这样从食谱中访问它:
my_roles = node['roles'] #or node[:roles]
您喜欢(字符串或符号)访问属性。