0

一个基本的数据包结构是:/data_bags/[data bag name]/[data bag items]

假设我想在一个名为 users 的数据包中为我所有节点的所有可能的管理员创建一个数据包。IE

/data_bags/users/admin1.json
/data_bags/users/admin2.json
/data_bags/users/admin3.json

现在,node1我只想拥有admin1 and admin3node2我想拥有admin2,并且admin3作为我的管理员。

如何以可以为每个不同节点指定或拆分数据包项的方式分离或构造我的配置?

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

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

我是厨师的初学者,所以如果我想要的是愚蠢的并且应该以其他方式处理,我很感激任何信息可以为我指明正确的方向。

4

2 回答 2

1

You either need to group by user or by host. We have the following data bag structure (more docs):

{
    "id": "a-srv123-admin",
    ...
    "nodes": {
            "srv123.example.org": {
                    "sudo": "true"
            }
    }
}

More nodes can be added to the node hash. The corresponding recipe then searches for data bag items matching its own node['fqdn']:

users = search('users', "nodes:#{node['fqdn']}")

Of course, if it is more important to you to have it grouped by node, just do it the other way around and simply pick the data bag item matching the fqdn or similar attribute.

于 2017-01-10T11:53:58.377 回答
1

社区用户手册支持此功能。在每台服务器上,您指定要管理的用户组,并且说明书将搜索数据包项目以查找匹配的组成员身份。

例如,看看这个答案:


更新

“用户”说明书有一个 LWRP,它定义了应该在服务器上安装的用户组。

users_manage "admins1"

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

{
  "id": "user1",
  "ssh_keys": [
    "ssh-rsa I AM A DUMMY KEY 1"
  ],
  "groups": [
    "admins1",
    "admins2"
  ],
  "uid": 2001
}

您当然可以创建一个特定于每个服务器的组,但这不会很好地扩展。我个人会根据用户角色建议组名。

  • 管理员
  • 开发运维
  • 开发商
  • 部署者
于 2017-01-11T21:47:27.657 回答