Chef-(服务器):客户端和用户之间有什么区别

时间:2014-03-07 09:40:22

标签: chef knife

我安装了开源的chef-server(11.x)。我是厨师的新手。我可以看到有user个密码和pub / priv密钥(通常是刀用户(@workstations))。还有client s(厨师验证器,节点......)和pub / priv密钥。

当我执行knife configuration --initial时,它会使用admin用户名和私钥来创建新的工作站用户,例如johnnym。因此,具有密钥的管理员用户足以创建用户,节点,客户端等......

但是当我knife bootstrap ${FQDN}时,它需要client具有管理员权限(chef-validator)才能对主厨服务器进行authn / authz并注册新节点/客户端。

我的问题是:如果客户和用户可以完成相同的任务,为什么要将他们分开呢?

2 个答案:

答案 0 :(得分:8)

在OSS Chef的上下文中,user也可以作为client使用,并且可以通过用户名/密码组合使用Web UI。

您缺少的是validator客户端密钥。

validator是一个特殊的客户端,只有一个目的:允许节点将自己注册为Chef服务器上的客户端。它是在第一个Chef运行的节点内部使用的。注册节点后,最好从节点中删除validator密钥。

当您运行knife bootstrap时,它会在运行chef-client之前通过SSH将密钥从工作站复制到节点。您遇到的问题可能是因为您在工作站上没有validator密钥,或者因为knife无法找到它(请检查您的knife.rb文件以查看它希望找到钥匙。

答案 1 :(得分:4)

我们对此主题进行了一些调试。关于clientuser的主要想法绝对是区分人类和程序。他们是如何做到这一点的是我们所描述的。
在数据库中,您可以看到users可以有admin组标记,clients可以有admin和=或validator标记。
users可以使用webUI(使用webui client)并可以使用chefAPI clients只能使用 chefAPI。

opscode_chef=# select username,admin from osc_users;
 username | admin 
----------+-------
 admin    | t
 johnnym  | t
 leki     | t
 nemadmin | f
(4 rows)
                     name                  | admin | validator |                id                
---------------------------------------+-------+-----------+----------------------------------
 chef-validator                        | f     | t         | 0000000000006ab38d5bb2564bd91f5b
 chef-webui                            | t     | f         | 000000000000bd469d802db9a3fc3c88
 statictestXXxd.xxxxx.xxxxxxxx.private | f     | f         | 000000000000f106e5461e64a15d0662
 test-validator                        | f     | f         | 000000000000ea638b18e484e034b859
 cica                                  | f     | f         | 00000000000077dd4efbcd39a1fb10d3
(5 rows)

opscode_chef=# select name,environment,last_updated_by from nodes;
                 name                  | environment |         last_updated_by          
---------------------------------------+-------------+----------------------------------
 statictestXXxd.xxxxx.xxxxxxxx.private | _default    | 000000000000f106e5461e64a15d0662
 cica_node                             | _default    | 00000000000077dd4efbcd39a1fb10d3
(2 rows)
  1. admin成员(clientsusers)可以执行所有命令
  2. validator个成员( clients)只能执行节点命令
  3. 正常成员(clientsusers)只有在与此请求相同的客户端更新节点时,才能执行客户端显示节点命令(见上表) (的 00000000000077dd4efbcd39a1fb10d3
  4. 因此客户端具有有限的命令权限,也是有限的范围(仅限最后更新的节点)。用户可以拥有所有权限,但无法更新节点。

    我还发现了这个page,这有助于我们对这个主题的研究。