Chef infra 厨师-(服务器):客户端和用户之间的区别是什么
我已经安装了开源的chef服务器(11.x)。我是厨师的新手。我可以看到有Chef infra 厨师-(服务器):客户端和用户之间的区别是什么,chef-infra,knife,Chef Infra,Knife,我已经安装了开源的chef服务器(11.x)。我是厨师的新手。我可以看到有用户拥有密码和pub/priv密钥(通常是刀子用户(@workstations))。还有带有pub/priv键的客户端s(chef validator,nodes…) 当我进行knife配置--initial时,它使用admin用户名和私钥来包装新的工作站用户,例如johnym。所以,具有密钥的管理用户功能强大,足以创建用户、节点、客户端等 但是,当Iknife bootstrap${FQDN}时,它需要一个具有管理员权限
用户
拥有密码和pub/priv密钥(通常是刀子用户(@workstations))。还有带有pub/priv键的客户端
s(chef validator,nodes…)
当我进行knife配置--initial
时,它使用admin
用户名和私钥来包装新的工作站用户,例如johnym
。所以,具有密钥的管理用户功能强大,足以创建用户、节点、客户端等
但是,当Iknife bootstrap${FQDN}
时,它需要一个具有管理员权限的客户机(chef validator)才能对chef服务器进行身份验证/authz并注册新节点/客户机
我的问题是:如果客户端和用户可以完成相同的任务,为什么我们要将它们分开?在OSS Chef的环境中,就像您的情况一样,用户也可以作为客户端,通过用户名/密码组合使用Web UI
您缺少的是客户端密钥
validator
是一种特殊的客户机,它只有一个用途:允许节点在Chef服务器上注册为客户机。它在第一次运行时从节点内部使用。注册节点后,最好从节点中删除验证程序
密钥
运行knife bootstrap
时,它会在运行chef-client
之前通过SSH将密钥从工作站复制到节点。您面临的问题可能是因为工作站上没有验证器
键,或者刀
找不到它(检查刀.rb
文件,查看它希望在哪里找到键)。我们对此主题进行了一些调试。关于客户端
和用户
的主要思想是绝对区分人和程序。他们是怎么做到的这就是我们调试的。
在数据库中,您可以看到用户
可以具有管理
组标志,客户端
可以具有管理
和=或验证程序
标志。
用户
可以使用webUI(使用webUI客户端
),也可以使用chefAPI。
客户端
只能使用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)
管理员
成员(包括客户端
和用户
)可以执行所有命令
验证程序
成员(仅客户端
)只能执行节点命令
普通成员(无论是客户端
还是用户
)都可以执行客户端显示和节点命令,前提是该节点由与此请求相同的客户端更新(见上表)
(00000000000077dd4efbcd39a1fb10d3)
因此,客户机的命令权限有限,范围也有限(只有最后更新的节点)。用户可以拥有所有权限,但不能更新节点
我也发现这有助于我们对这个主题的研究。谢谢您的回复!好的是我没有问题…一切正常。我只是不明白为什么用户有管理员权限而客户有管理员权限?他们是一样的!它们都使用密钥进行身份验证/身份验证,并创建节点,等等?它们之间唯一的区别是密码属性?为什么我们需要在OSS chef server中为同一项工作创建单独的实体?我认为,用户
与人相关:他们登录到Web UI,并且还通过刀
与chef server交互(因此他们需要客户端密钥)<另一方面,code>客户端仅由机器使用,与任何特定的人类无关。如果我允许我的CI服务器部署新节点,我将创建一个具有此类权限的CI_服务器
客户端。如果新厨师加入我的团队,我会为他/她创建一个新的用户。另外,请注意,验证程序
客户端不是管理员。它的唯一用途是在Chef服务器上为新节点创建新的客户端对象。谢谢您的回答。我怀疑客户机和用户之间的差异主要是在高级(个人/机器)视图中,而不是在其功能中。