厨师客户和验证人员

IAm*_*aja 14 bootstrapping chef-infra knife

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

根据这篇文章,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. 什么决定了厨师 - 客户及其厨师验证员的名字?

sun*_*are 14

回答您的最新问题

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
Run Code Online (Sandbox Code Playgroud)

输出将是

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

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

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

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

chef-client -o Cookbook_name::Recipe_Name
Run Code Online (Sandbox Code Playgroud)

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

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

knife configure client ~/.chef 
Run Code Online (Sandbox Code Playgroud)

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


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

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

chef-client -o Cookbook_name::Recipe_Name
Run Code Online (Sandbox Code Playgroud)

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

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

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

http://mychefserver.example.com/clients
Run Code Online (Sandbox Code Playgroud)