【问题标题】:Creating nodes on the fly for large scale deployments using Chef使用 Chef 为大规模部署动态创建节点
【发布时间】:2014-08-28 15:25:43
【问题描述】:
据我了解,在运行 Chef-clients 之前,需要在 Chef 服务器上创建节点。就我而言,节点是自动缩放的,我无法事先在服务器上创建节点。我也不想在节点上运行刀命令。
Chef 有没有办法处理在 Chef 服务器上定义了角色但没有在节点上定义节点的情况?
我确实看到了 first-boot.json 方法,但它没有很好的文档记录,而且关于它的信息也很少,这让我怀疑这是否是一种非标准方法。
【问题讨论】:
标签:
chef-infra
chef-recipe
knife
【解决方案1】:
这不是一种非标准的方法,它是knife bootstrap 用来为被引导的主机上的第一个chef-client 运行定义运行列表的方法。
所以基本上在你的配置过程中你安装了 chef,给它验证密钥和一个包含它的运行列表的 first-boot.json。
引用文档here
first-boot.json 作为初始刀引导命令的一部分从工作站生成。
如果在测试机器上使用 knife bootstrap -r <runlist> 并检查生成的 first-boot.json 以在之后创建自己的,我会说最好的方法。
初始 json 的示例是 here(文档底部)
【解决方案2】:
其实反之亦然,手动创建节点对象往往会报错,支持得不是很好。使用 Chef 进行自动缩放的最简单方法是将 chef-client、client.rb 和您的验证密钥烘焙到 VM 映像中。然后制作一个脚本来在 VM 开始向 Chef 服务器注册自身时运行 chef-client。
我为此使用a packer template 和cloud-init script。