Назад | Перейти на главную страницу

Добавить группу в группу с помощью Chef в Windows

Я пытаюсь управлять сервером 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] FATAL: ArgumentError: группа [OtherGroup] (users :: staff, строка 43) имела ошибку: ArgumentError: не удалось добавить нового участника в локальную группу, поскольку участник имеет неправильный тип учетной записи.

Как будто Chef не может добавить группу в группу. Добавление пользователей в группу - нормально.

Как ни странно, это влияет только на настраиваемую группу. Я могу нормально добавить во встроенные группы пользователей и администраторов.

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

Я также пробовал создать OtherGroup сначала пусто, а затем: модифицируя его, но возникает та же проблема.

Вы не указали, с какой версией Windows Server вы работаете или с версией Chef, так что это несколько предположений.

Из документации Chef не видно, что добавление группы в качестве члена группы поддерживается:

члены

Тип Ruby: Массив

Какие пользователи должны быть установлены или добавлены в группу. Если идентифицировано более одного члена группы, список членов должен быть массивом: members ['user1', 'user2'].

Из сообщения об ошибке мы можем сделать вывод, что выполняемая операция добавляет локальную группу в другую локальную группу.

Метод Windows API, который Chef использует под капотом, гласит (выделено мной):

Функция NetLocalGroupAddMembers добавляет членство в одну или несколько существующих учетных записей пользователей или учетные записи глобальной группы существующему местная группа. Функция не изменяет статус членства пользователей или глобальных групп, которые в настоящее время являются членами локальной группы.

Похоже, что для основных вызовов API в Chef не так много спецификаций / тестов, но из вызов этого метода похоже, что намерение добавлять членов в группу ожидается только от пользователя домена, а не от другой локальной группы.