如何使用相同的配方为不同的节点设置不同的属性?

时间:2016-10-19 05:07:47

标签: chef chef-recipe chef-solo

我使用Chef Zero(或Chef Local模式),无法使用服务器。我有一本我想要运行的默认食谱的食谱。在我的场景中,我想为每个搜索/节点多次运行该配方,除了具有不同的属性。

食谱的重要部分:

keepalived_vrrp_instance 'inside_network' do
  state node['cookbookname']['state']
  interface node['network']['default_interface']
  virtual_router_id node['cookbookname']['router_id']
  priority node['cookbookname']['priority']
  virtual_ipaddress node['cookbookname']['virtual_ips']
end

1 个答案:

答案 0 :(得分:1)

您可以为每个节点名称定义属性哈希(attributes可以在属性文件或environement中定义):

node.default["cookbookname"] = {
  "node1" => {
    "state" => "desired_state"
    ...
  }
  "node2" => { ... }
  ...
}

然后你可以在食谱中使用它:

keepalived_vrrp_instance 'inside_network' do
  state node["cookbookname"][node["name"]]["state"]
  ...
end