gpt4 book ai didi

ruby - Chef 获取节点的当前角色

转载 作者:数据小太阳 更新时间:2023-10-29 07:55:00 24 4
gpt4 key购买 nike

我有一些这样的代码,可以生成一个包含所有符合搜索条件的节点的数组。我有一大堆不同风格的负载均衡器,每一个都有自己的 Chef 角色。

我可以通过knife node edit max_data_lb-1看到我想要的东西

  "run_list": [
"role[max_data_lb]"
]

我希望提取角色并将其放入变量中以备后用。我已经看到很多方法可以检查特定角色是否在当前 run_list 中,例如 node.role?('name'),但这只会返回一个 bool 值。我不知道如何返回 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

最佳答案

Node 有一个 roles 属性,Chef 会自动存储节点运行列表中的所有角色。您可以像这样从 Recipe 中访问它:

my_roles = node['roles'] #or node[:roles] 

无论您喜欢(字符串还是符号)访问属性。

关于ruby - Chef 获取节点的当前角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43730503/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com