厨师客户和验证人员

时间:2014-07-16 19:18:10

标签: chef bootstrapping knife

我正在尝试理解Chef客户端和验证器的概念,以及它们与引导过程的关系。

根据this article,chef-client将使用/etc/chef/validation.pem私钥对初始运行进行身份验证,因为/etc/chef/client.pem尚不存在。这个初始运行将以某种方式生成client.pem,然后将其用于所有后续客户端请求。

我的问题:

  1. 什么过程首先将/etc/chef/validation.pem文件放在chef-client节点上?引导程序?有人可以提供一个可以执行此操作的刀具命令示例吗?
  2. 同样的问题,但对于/etc/chef/client.pem文件。
  3. 什么决定了厨师 - 客户及其厨师验证员的名字?

1 个答案:

答案 0 :(得分:12)

回答您的最新问题

1)在引导过程之后将创建Validation.Pem(和client.rb)。您需要运行下面显示的命令(knife configure client)才能创建这些文件。一旦在〜/ .chef目录中创建了这些文件,您需要将它们移动到/ etc / chef

 knife configure client ~/.chef  
 sudo su
 mkdir -p /etc/chef
cp ~/.chef/client.rb /etc/chef
cp ~/.chef/validation.pem /etc/chef

,输出为

创建客户端配置 编写client.rb 编写validation.pem

2)Client.pem将在第一次厨师 - 客户端运行期间创建。摘自Chef Documenation

“在第一次厨师 - 客户端运行期间,此(client.pem)私钥不存在。相反,chef-client将尝试使用分配给/ etc / chef中的chef-validator的私钥。 /validation.pem。(如果由于任何原因,chef-validator无法向Chef服务器发出经过身份验证的请求,则初始Chef-client运行将失败。)“

例如,我通常以下列方式进行。一旦客户端被设置(第一次)并且我使用chef-client命令在该节点上运行chef recipe,如下所示它将自动创建client.pem

chef-client -o Cookbook_name::Recipe_Name

3)确保你的主机名在这之前是独特/正确的。在Centos上,更改/ etc / sysconfig / network文件并使用/etc/init.d/network restart重新绑定所有内容。

我对第一个问题的回答是这里的解决方案。运行命令后(通常此命令在bootstrap之后运行)

knife configure client ~/.chef 

客户端节点的主机名将在chef-server中自动创建。


解答您的第一个和第二个问题(在编辑问题之前)

1)您在以下链接http://mychefserver.example.com/clients中看到的所有内容都是向该特定Chef-Server注册的节点(物理机)发送的内容。 Chef-Client是一个代理,它将在chef-server注册的每个节点上运行。 Chef-client用于在相应节点上运行配方。以下是使用厨师客户端在节点上运行厨师食谱的方法。

chef-client -o Cookbook_name::Recipe_Name

将所有客户端放在一起的是连接到chef-server的节点集chef-client是在所有节点中运行的代理,用于向chef-server注册节点以便将节点带到理想的状态。厨师 - 客户还有很多其他用途。有关详细信息,请访问[Chef-Client] [1]文档页面。

2)引导程序是在目标系统上安装chef-client的过程,以便它可以作为chef-client运行并与Chef服务器通信。

换句话说,引导过程是在节点(硬件机器)上安装chef-client的方法,并将该节点作为该chef-server的客户端之一。只有在完成引导过程后,特定节点才会显示在

的客户端列表中
http://mychefserver.example.com/clients