我试图用厨师来pipe理Windows服务器,并且需要创build一些用户,将它们添加到一个组中,然后将该组添加到另一个组中。
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:新成员无法添加到本地组,因为成员有错误的帐户types。
这就像厨师不能添加一个组到一个组。 将用户添加到组是没有问题的。
奇怪它似乎只影响一个自定义组。 我可以添加到build立在用户和pipe理员组罚款。
group 'Administrators' do action :modify members [ 'TestGroup' ] append true end
我也尝试创buildOtherGroup空,然后:修改它,但同样的问题发生。
你没有指定你正在使用的Windows Server版本,也没有指定Chef的版本 – 所以这些是一些假设。
从厨师文档中,似乎并不支持添加组作为组的成员:
会员
Rubytypes:数组
应将哪些用户设置或附加到组中。 当多个组成员被识别时,成员列表应该是一个数组:
members ['user1', 'user2']。
从错误消息中,我们可以推导出正在尝试的操作是将本地组添加到另一个本地组。
厨师正在使用的Windows API方法(强调我的):
NetLocalGroupAddMembers函数将一个或多个现有用户帐户或全局组帐户的成员身份添加到现有本地组 。 该函数不会更改当前是本地组成员的用户或全局组的成员身份。
Chef中底层的API调用没有太多的spec / test覆盖 – 但是从调用这个方法看来,向一个组添加成员的意图只是一个域用户而不是另一个本地组。