Ruby Chef客户端安装在映像上,希望让它创建自己的节点

Ruby Chef客户端安装在映像上,希望让它创建自己的节点,ruby,powershell,automation,chef-infra,Ruby,Powershell,Automation,Chef Infra,我不知道这是否可能,我只使用了一个半星期的厨师现在,我似乎找不到任何关于在互联网上这样做。但基本上,我们在一个映像上安装了chef客户端。每个映像都有一个配置脚本,该脚本在首次设置映像时运行,以设置计算机名和特定于其设置的其他设置 因此,一旦配置脚本完成,我需要创建一个节点,将节点名称作为自动输入的计算机名称,并将其添加到角色中,以便以后可以对这些节点进行排序并添加正确的角色。这样,在没有人工交互的情况下,服务器一安装,就可以创建每个新节点 执行此操作的方法是使用验证器密钥系统。基本上,在图中安

我不知道这是否可能,我只使用了一个半星期的厨师现在,我似乎找不到任何关于在互联网上这样做。但基本上,我们在一个映像上安装了chef客户端。每个映像都有一个配置脚本,该脚本在首次设置映像时运行,以设置计算机名和特定于其设置的其他设置


因此,一旦配置脚本完成,我需要创建一个节点,将节点名称作为自动输入的计算机名称,并将其添加到角色中,以便以后可以对这些节点进行排序并添加正确的角色。这样,在没有人工交互的情况下,服务器一安装,就可以创建每个新节点

执行此操作的方法是使用验证器密钥系统。基本上,在图中安装了Chef,创建了
/etc/Chef/client.rb
配置并指向Chef服务器,但不创建
client.pem
键。如果该密钥不存在,chef客户端将查找验证密钥并使用该密钥向chef服务器进行自注册(默认情况下,它使用服务器的FQDN作为节点名称,但如果您想使用其他内容,可以让最后一英里脚本将
节点\u name“whatever”
附加到
客户端.rb
)。基于验证器的引导的难点在于如何存储、访问和管理验证器密钥。懒惰的方法是只将其包含在映像中,但这会引发一些令人不安的安全问题。不幸的是,最好的方法完全取决于您运行的系统类型以及可用的安全基础设施。另外,不要忘了在初始引导后删除验证程序密钥,
chef-client
cookbook中有一个解决方法