使用Chef即时创建节点以进行大规模部署

时间:2014-08-28 15:25:43

标签: chef chef-recipe knife

根据我的理解,需要在运行chef-clients之前在Chef服务器上创建节点。在我的例子中,节点是自动缩放的,我不能事先在服务器上创建节点。我也不想在节点上运行刀命令。 在Chef中是否有办法处理在Chef服务器上定义角色但节点不是?

的情况

我确实看到了first-boot.json方法,但是没有很好地记录,并且关于它的信息很少,这让我想知道这是否是一种非标准的方法。

2 个答案:

答案 0 :(得分:1)

这不是一个非标准的方法,它是刀引导程序用来定义运行列表,用于在正在引导的主机上运行的第一个chef-client。

所以基本上在您的配置过程中安装chef,给它验证密钥和包含其运行列表的first-boot.json。

引用文档here

  

first-boot.json是从工作站生成的,作为初始刀引导命令的一部分。

我想说最好的方法是在测试机器上使用knife bootstrap -r <runlist>并检查生成的first-boot.json以便在此之后创建自己的。{/ p>

初始json的例子是here(文档的底部)

答案 1 :(得分:1)

实际上反之亦然,手动创建节点对象通常是一个错误,并且不能很好地支持。使用Chef进行自动缩放的最简单方法是将chef-client,client.rb和验证密钥烘焙到VM映像中。然后在VM开始向Chef Server注册时,创建一个脚本来运行chef-client。

我为此使用a packer templatecloud-init script