Я пытаюсь управлять сервером 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 не так много спецификаций / тестов, но из вызов этого метода похоже, что намерение добавлять членов в группу ожидается только от пользователя домена, а не от другой локальной группы.