在 Windows 上使用 Chef 将组添加到组

在 Windows 上使用 Chef 将组添加到组

我正在尝试使用 chef 管理 Windows 服务器,需要创建一些用户、将他们添加到一个组,然后将该组添加到另一个组。

user 'test.user' do
    password    'password'
    action      :create
end

group 'TestGroup' do
    action  :create
    members [ 'test.user' ]
    append  true
end

group 'OtherGroup' do          # This is line 43
    action  :create
    members [ 'TestGroup' ]
    append  true
end

这会导致错误:

[2015-02-12T09:54:35+00:00] 严重错误:ArgumentError:group[OtherGroup](users::staff line 43)发生错误:ArgumentError:无法将新成员添加到本地组,因为该成员的帐户类型错误。

就像 Chef 无法将组添加到组中一样。将用户添加到组中是可以的。

奇怪的是,它似乎只影响自定义组。我可以正常添加到内置用户和管理员组。

group 'Administrators' do
    action  :modify
    members [ 'TestGroup' ]
    append  true
end

我也尝试过OtherGroup先创建空的,然后修改它,但还是出现了同样的问题。

答案1

您没有指定正在使用的 Windows Server 版本,也没有指定 Chef 的版本 - 因此这些只是一些假设。

从 Chef 文档来看,似乎不支持将组添加为组的成员:

成员

Ruby 类型:数组

应将哪些用户设置或附加到组中。当确定了多个组成员时,成员列表应为一个数组:members ['user1', 'user2']

从错误信息中,我们可以推断出正在尝试的操作是将本地组添加到另一个本地组。

Chef 内部使用的 Windows API 方法如下(重点是我的):

NetLocalGroupAddMembers 函数添加一个或多个现有用户帐户的成员身份,或全球集团账户对现有的本地组。该功能不会改变当前为本地组成员的用户或全局组的成员身份状态。

Chef 中底层 API 调用的规范/测试覆盖范围似乎不多 - 但从调用此方法看起来,向组中添加成员的目的仅仅是域用户,而不是另一个本地组。

相关内容