我安装了开源的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并注册新节点/客户端。
我的问题是:如果客户和用户可以完成相同的任务,为什么要将他们分开呢?
答案 0 :(得分:8)
在OSS Chef的上下文中,user
也可以作为client
使用,并且可以通过用户名/密码组合使用Web UI。
您缺少的是validator
客户端密钥。
validator
是一个特殊的客户端,只有一个目的:允许节点将自己注册为Chef服务器上的客户端。它是在第一个Chef运行的节点内部使用的。注册节点后,最好从节点中删除validator
密钥。
当您运行knife bootstrap
时,它会在运行chef-client
之前通过SSH将密钥从工作站复制到节点。您遇到的问题可能是因为您在工作站上没有validator
密钥,或者因为knife
无法找到它(请检查您的knife.rb
文件以查看它希望找到钥匙。
答案 1 :(得分:4)
我们对此主题进行了一些调试。关于client
和user
的主要想法绝对是区分人类和程序。他们是如何做到这一点的是我们所描述的。
在数据库中,您可以看到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)
admin
成员(clients
和users
)可以执行所有命令 validator
个成员(仅 clients
)只能执行节点命令 clients
和users
)只有在与此请求相同的客户端更新节点时,才能执行客户端显示和节点命令(见上表)
(的 00000000000077dd4efbcd39a1fb10d3 强>)因此客户端具有有限的命令权限,也是有限的范围(仅限最后更新的节点)。用户可以拥有所有权限,但无法更新节点。
我还发现了这个page,这有助于我们对这个主题的研究。