Chef infra 如何为不同节点分离数据包项?

Chef infra 如何为不同节点分离数据包项?,chef-infra,databags,Chef Infra,Databags,基本数据包结构是:/data\u bags/[databag name]/[databag items] 假设我想在一个名为用户的数据包中为我所有节点的所有可能管理员创建一个数据包。 i、 e 现在对于node1我只想要admin1和admin3,对于node2我想要admin2和admin3作为我的管理员 如何分离或构造配置,以便为每个不同节点指定或拆分数据包项目 我的一个想法是我们是否可以做这样的事情 /data_bags/node1/users/... /data_bags/node2/u

基本数据包结构是:
/data\u bags/[databag name]/[databag items]

假设我想在一个名为用户的数据包中为我所有节点的所有可能管理员创建一个数据包。 i、 e

现在对于
node1
我只想要
admin1和admin3
,对于
node2
我想要
admin2和
admin3
作为我的管理员

如何分离或构造配置,以便为每个不同节点指定或拆分数据包项目

我的一个想法是我们是否可以做这样的事情

/data_bags/node1/users/...
/data_bags/node2/users/...

我是厨师的新手,所以如果我想做的事情很愚蠢,应该以其他方式来处理,我很感激能给我指明正确方向的任何信息。

您需要按用户或主机分组。我们有以下数据包结构(更多):

可以将更多节点添加到
节点
哈希。然后,相应的数据库将搜索与其自己的
节点['fqdn']
匹配的数据包项:

users=search('users',“nodes:{node['fqdn']}”)

当然,如果按节点对其进行分组对您来说更为重要,则只需按另一种方式进行分组,只需选择与
fqdn
或类似属性匹配的数据包项。

您需要按用户或主机进行分组。我们有以下数据包结构(更多):

可以将更多节点添加到
节点
哈希。然后,相应的数据库将搜索与其自己的
节点['fqdn']
匹配的数据包项:

users=search('users',“nodes:{node['fqdn']}”)
当然,如果按节点对其进行分组对您来说更为重要,则只需以另一种方式进行分组,只需选择与
fqdn
或类似属性匹配的数据包项即可。

社区支持此功能。在每台服务器上指定要管理的用户组,cookbook将在数据库项中搜索匹配的组成员资格

例如,请看以下答案:


更新 “用户”食谱有一个LWRP,它定义了应该在服务器上安装的用户组

users_manage "admins1"
然后在数据包中指定用户所属的组。例如,“user1”将包含在需要admins1或admins2组的服务器中

{
  "id": "user1",
  "ssh_keys": [
    "ssh-rsa I AM A DUMMY KEY 1"
  ],
  "groups": [
    "admins1",
    "admins2"
  ],
  "uid": 2001
}
当然,您可以为每台服务器创建一个特定的组,但这并不能很好地扩展。就我个人而言,我会根据用户角色建议组名

  • 管理员
  • 德沃斯
  • 开发者
  • 部署者
社区支持此功能。在每台服务器上指定要管理的用户组,cookbook将在数据库项中搜索匹配的组成员资格

例如,请看以下答案:


更新 “用户”食谱有一个LWRP,它定义了应该在服务器上安装的用户组

users_manage "admins1"
然后在数据包中指定用户所属的组。例如,“user1”将包含在需要admins1或admins2组的服务器中

{
  "id": "user1",
  "ssh_keys": [
    "ssh-rsa I AM A DUMMY KEY 1"
  ],
  "groups": [
    "admins1",
    "admins2"
  ],
  "uid": 2001
}
当然,您可以为每台服务器创建一个特定的组,但这并不能很好地扩展。就我个人而言,我会根据用户角色建议组名

  • 管理员
  • 德沃斯
  • 开发者
  • 部署者

那么节点需要在项目内部分离?看起来令人失望。谢谢你的回答。这只是代码和数据。你想怎么做都行。您可以为每个节点、每个用户或(每个节点的每个用户,即
srv123 johndoe.json
,其中只包含一些
true
值)设置数据包项。OTOH,您可以将所有信息放入一个数据包项目中。我只说明了对我们有用的东西™ 复杂度有点低。嗯,但我可能需要使用文件阅读器来搜索符合条件的数据包项目。有一个解决方案是我认为最好的,但遗憾的是还没有找到。我认为你的想法太复杂了。让项目
users/srv123.example.org
包含用户可以吗?否则,我建议你编辑一下你的问题,也许有一个理想的结构。我不明白你的意思。我不想对这个问题做太多的修改,但我更新了一个我想到的结构。所以节点需要在项目内部分开?看起来令人失望。谢谢你的回答。这只是代码和数据。你想怎么做都行。您可以为每个节点、每个用户或(每个节点的每个用户,即
srv123 johndoe.json
,其中只包含一些
true
值)设置数据包项。OTOH,您可以将所有信息放入一个数据包项目中。我只说明了对我们有用的东西™ 复杂度有点低。嗯,但我可能需要使用文件阅读器来搜索符合条件的数据包项目。有一个解决方案是我认为最好的,但遗憾的是还没有找到。我认为你的想法太复杂了。让项目
users/srv123.example.org
包含用户可以吗?否则,我建议你编辑一下你的问题,也许有一个理想的结构。那我就不明白你的意思了。我不想太多地改变这个问题,但我更新了我脑海中的一个结构。这之后的主要目标是什么?或者换一种说法:你将如何使用这些用户信息?这听起来像RBAC管理的XY问题,而不是结构问题。您仍然可以在每个节点上拥有一个属性,告诉您希望为每个节点指定哪些管理员,并通过此列表获取数据。这之后的主要目标是什么?或者换一种说法:你将如何使用这些用户信息?这听起来像RBAC管理的XY问题,而不是结构问题。您仍然可以在每个节点上拥有一个属性,告诉您希望为每个节点指定哪些管理员并获取da