Chef infra 厨师-(服务器):客户端和用户之间的区别是什么

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}时,它需要一个具有管理员权限

我已经安装了开源的chef服务器(11.x)。我是厨师的新手。我可以看到有
用户
拥有密码和pub/priv密钥(通常是刀子用户(@workstations))。还有带有pub/priv键的
客户端
s(chef validator,nodes…)

当我进行
knife配置--initial
时,它使用
admin
用户名和私钥来包装新的工作站用户,例如
johnym
。所以,具有密钥的管理用户功能强大,足以创建用户、节点、客户端等

但是,当I
knife 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服务器上为新节点创建新的客户端对象。谢谢您的回答。我怀疑客户机和用户之间的差异主要是在高级(个人/机器)视图中,而不是在其功能中。