如何通过Chef设置获取配置机器的ipaddress

时间:2016-10-11 21:44:56

标签: chef chef-provisioning

我正在编写一个厨师配置食谱来配置一组机器。我有更多/更少的工作,但现在我想将所有配置机器的主机文件设置为所有其他主机的动态分配IP地址。有没有办法查询配置主机的IP地址是什么?

2 个答案:

答案 0 :(得分:1)

不在ChefProvisioning图层上,但我按如下方式执行此操作:

您可以使用厨师超市的hostsfile cookbook和厨师服务器中的databag

可以使用属性node[:ipaddress]访问一个节点IP,将其存储在数据库中,然后通过所有ips循环访问,使用hostsfile cookbook创建/更新资源hostsfile_entry的条目,类似于:

node[:list_of_hosts].each do |name, ip|
  hostsfile_entry ip do
    hostname name
    action [:create_if_missing, :update]
  end
end

假设您在哈希中有数据库中的IP和主机名列表。

希望您觉得这很有帮助。

答案 1 :(得分:0)

简短的回答是:您不应该使用厨师配置的原因。很长的答案,一些驱动程序允许通过资源访问底层对象,但你最终会看起来像普通的Chef代码。将每个machine对象存储在一个数组中,然后您可以尝试将其用于第二次传递。

真正的答案是配置层不应该这样做,使用像Chef Search或相关的云API来实际配置节点上的配方,就像使用“普通”Chef一样。