Chef infra 如何编写脚本,将chef中客户机的节点名从没有刀片的客户机更改为

Chef infra 如何编写脚本,将chef中客户机的节点名从没有刀片的客户机更改为,chef-infra,knife,cloud-init,Chef Infra,Knife,Cloud Init,我有一个“黄金映像”AMI,我想把它放在一个自动缩放组中,该组将获取映像,重命名它,并执行run llst。我一天的大部分时间都在使用cloud config的chef功能,但它不起作用,因为原始的chef环境与cloud config使用的任何配置之间存在太多的不一致。从长远来看,它也将变得不那么可靠和缓慢,因为每次都必须从头做起。我想举一个例子,让chef在上面运行,然后从那里开始。环顾四周,我看到的都是手动和使用刀子的方法。有没有办法重写一些文件并通过这种方式向chef服务器注册映像?请查

我有一个“黄金映像”AMI,我想把它放在一个自动缩放组中,该组将获取映像,重命名它,并执行run llst。我一天的大部分时间都在使用cloud config的chef功能,但它不起作用,因为原始的chef环境与cloud config使用的任何配置之间存在太多的不一致。从长远来看,它也将变得不那么可靠和缓慢,因为每次都必须从头做起。我想举一个例子,让chef在上面运行,然后从那里开始。环顾四周,我看到的都是手动和使用刀子的方法。有没有办法重写一些文件并通过这种方式向chef服务器注册映像?

请查看。这正是它的目的。AMI已经预装了Chef,并且具有验证证书。启动时,cloud init运行我向您展示的脚本,该脚本生成客户机配置和初始运行列表,然后向chef服务器注册。

我需要做的是,删除client.pem并重命名节点。由于该节点以前是以不同的名称聚合的,因此所有其他节点都可以保持不变。感谢您帮助我度过难关。说清楚点,以下内容对我有用:rm-f/etc/client.pem&&echo“server-app-$(date%+s)”>>/etc/chef/client.rb为什么AMI中有client.pem?我不会使用chef client来构建AMI(solo就是这么做的),但如果必须的话,您应该在AMI构建过程中删除它。@numb3rs1x我同意coderanger的最后一点意见,我对基础架构的选择略有不同,但我也会定期启动原始VM,以使其保持最新)。我选择了一个快速且肮脏的路径,其中包含一个脚本:1)启动VM,2)将client.pem从/root复制到/etc/chef 3)运行chef client 4)删除/etc/chef/client.pem,5)关闭VM。我在客户端\u rb中没有节点\u名称,因为配置会负责更改主机名(我的情况下是使用vshpere插件的vagrant)。@coderanger是的,我认为在创建AMI之前删除client.pem更有意义。我没有说明这一过程中的那一步。