Группа Ресурс
Эта страница сгенерирована из исходного кода Клиента Chef Infra. Чтобы предложить изменение, отредактируйте файл group.rb и отправьте запрос на включение изменений в репозиторий Chef Infra Client.
Используйте ресурс group для управления локальной группой.
Синтаксис
Полный синтаксис всех свойств, доступных для ресурса group:
group 'name' do
append true, false # default value: false
comment String
excluded_members String, Array # default value: []
gid String, Integer
group_name String # default value: 'name' unless specified
members String, Array # default value: []
non_unique true, false # default value: false
system true, false # default value: false
action Symbol # defaults to :create if not specified
endгде:
-
group— это ресурс. -
name— это имя, данное блоку ресурса. -
actionопределяет шаги, которые Chef Infra Client предпримет для приведения узла к желаемому состоянию. -
append,comment,excluded_members,gid,group_name,members,non_unique, иsystem— это свойства, доступные для этого ресурса.
Действия
Ресурс group имеет следующие действия:
:create- По умолчанию. Создать группу. Если группа уже существует (но не соответствует), обновить эту группу, чтобы она соответствовала.
:manage- Управлять существующей группой. Это действие ничего не делает, если группа не существует.
:modify- Изменить существующую группу. Это действие вызывает исключение, если группы не существует.
:nothing- Этот блок ресурса не действует, пока не получит уведомление от другого ресурса о необходимости выполнения действия. После уведомления этот блок ресурса либо выполняется немедленно, либо помещается в очередь для выполнения в конце выполнения Chef Infra Client.
:remove- Удалить группу.
Свойства
Ресурс group имеет следующие свойства:
-
append - Тип Ruby: true, false | Значение по умолчанию:
falseКак члены должны быть добавлены и/или удалены из группы. При значении true,
membersдобавляются, аexcluded_membersудаляются. При значенииfalse, члены группы сбрасываются до значения свойстваmembers.
-
comment - Тип Ruby: Строка
Указывает комментарий, который необходимо связать с локальной группой.
Новое в Chef Client 14.9
-
excluded_members - Тип Ruby: Строка, Массив | Значение по умолчанию:
[]Удаление пользователей из группы. Может использоваться только когда
appendустановлено вtrue.
-
gid - Тип Ruby: Строка, Целое число
Идентификатор группы.
-
group_name - Тип Ruby: Строка | Значение по умолчанию:
The resource block's nameНазвание группы. Значение по умолчанию: имя
nameблока ресурса. Дополнительная информация в разделе «Синтаксис» выше.
-
members - Тип Ruby: Строка, Массив | Значение по умолчанию:
[]Какие пользователи должны быть установлены или добавлены в группу. Когда идентифицировано более одного члена группы, список членов должен быть массивом:
members ['user1', 'user2'].
-
non_unique - Тип Ruby: true, false | Значение по умолчанию:
falseРазрешить дублирование gid. Может использоваться только с поставщиком ресурсов
Groupaddпользователя.
-
system - Тип Ruby: true, false | Значение по умолчанию:
falseУстановите в
true, если группа принадлежит к системной группе.
Общие функциональные возможности ресурсов
Ресурсы Chef включают общие свойства, уведомления и блокировки ресурсов.
Общие свойства
Следующие свойства являются общими для каждого ресурса:
compile_time-
Тип Ruby: true, false | Значение по умолчанию:
falseУправление фазой, в которой ресурс выполняется на узле. Установите в true, чтобы выполнить во время построения коллекции ресурсов (
compile phase). Установите в false, чтобы выполнить во время конфигурации узла Chef Infra Client (converge phase). ignore_failure-
Тип Ruby: true, false, :quiet | Значение по умолчанию:
falseПродолжить выполнение рецепта, если ресурс завершился неудачно по любой причине.
:quietне отобразит полный стек вызовов, и рецепт продолжит выполнение, если ресурс завершится неудачно. retries-
Тип Ruby: Целое число | Значение по умолчанию:
0Количество попыток перехвата исключений и повторной попытки ресурса.
retry_delay-
Тип Ruby: Целое число | Значение по умолчанию:
2Задержка в секундах между попытками повторного выполнения.
sensitive-
Тип Ruby: true, false | Значение по умолчанию:
falseУбедитесь, что конфиденциальные данные ресурсов не регистрируются Chef Infra Client.
Уведомления
-
notifies -
Тип Ruby: Символ, 'Chef::Resource[String]'
Ресурс может уведомить другой ресурс о выполнении действия при изменении его состояния. Укажите
'resource[name]', действие, которое должен выполнить ресурс, и:timerдля этого действия. Один ресурс может уведомить более одного ресурса; используйте операторnotifiesдля каждого уведомляемого ресурса.Если указанный ресурс не существует, возникает ошибка. В противоположность этому,
subscribesне завершится ошибкой, если исходный ресурс не найден.
Таймер определяет момент во время выполнения Chef Infra Client, когда выполняется уведомление. Доступны следующие таймеры:
:before-
Указывает, что действие уведомленного ресурса должно выполняться до обработки блока ресурса, в котором расположено уведомление.
:delayed-
По умолчанию. Указывает, что уведомление должно быть помещено в очередь и выполнено в конце выполнения Chef Infra Client.
-
:immediate,:immediately -
Указывает, что уведомление должно выполняться немедленно, для каждого уведомленного ресурса.
Синтаксис для notifies:
notifies :action, 'resource[name]', :timer
-
subscribes -
Тип Ruby: Символ, 'Chef::Resource[Строка]'
Ресурс может следить за другим ресурсом и выполнить действие, если состояние отслеживаемого ресурса изменится. Укажите 'resource[name]', действие :action, и :timer для этого действия.
Обратите внимание, что subscribes не применяет указанное действие к ресурсу, за которым он следит; например:
file '/etc/nginx/ssl/example.crt' do
mode '0600'
owner 'root'
end
service 'nginx' do
subscribes :reload, 'file[/etc/nginx/ssl/example.crt]', :immediately
end
В этом случае свойство subscribes перезапускает службу nginx всякий раз, когда файл сертификата, расположенный в /etc/nginx/ssl/example.crt, обновляется. subscribes не вносит изменений в сам файл сертификата, а лишь отслеживает изменения файла и выполняет действие :reload для своего ресурса (в данном примере nginx) при обнаружении изменений.
Если другой ресурс не существует, подписка не вызовет ошибку. В отличие от более строгих семантик notifies, которые вызовут ошибку, если другой ресурс не существует.
Таймер определяет момент во время выполнения Chef Infra Client, когда выполняется уведомление. Доступны следующие таймеры:
:before-
Указывает, что действие уведомленного ресурса должно выполняться до обработки блока ресурса, в котором расположено уведомление.
:delayed-
По умолчанию. Указывает, что уведомление должно быть помещено в очередь и выполнено в конце выполнения Chef Infra Client.
-
:immediate,:immediately -
Указывает, что уведомление должно выполняться немедленно, для каждого уведомленного ресурса.
Синтаксис для subscribes:
subscribes :action, 'resource[name]', :timer
Блокировки
Свойство блокировки может использоваться для оценки состояния узла во время фазы выполнения Chef Infra Client. На основе результатов этой оценки свойство блокировки используется для указания Chef Infra Client, должен ли он продолжить выполнение ресурса. Свойство блокировки принимает либо строковое значение, либо значение блока Ruby:
- Строка выполняется как команда оболочки. Если команда возвращает
0, блокировка применяется. Если команда возвращает любое другое значение, то свойство блокировки не применяется. Строковые блокировки в powershell_script запускают команды Windows PowerShell и могут возвращатьtrueв дополнение к0. - Блок выполняется как код Ruby, который должен возвращать либо
true, либоfalse. Если блок возвращаетtrue, свойство блокировки применяется. Если блок возвращаетfalse, свойство блокировки не применяется.
Свойство блокировки полезно для обеспечения идемпотентности ресурса, позволяя ему проверять желаемое состояние по мере выполнения, и, если желаемое состояние присутствует, Chef Infra Client ничего не делает.
СвойстваСледующие свойства могут быть использованы для определения блокировки, оцениваемой во время фазы выполнения Chef Infra Client:
not_if-
Запретить выполнение ресурса, если условие возвращает
true. only_if-
Разрешить выполнение ресурса только в том случае, если условие возвращает
true.
Примеры
Следующие примеры демонстрируют различные подходы к использованию ресурса group в рецептах:
Добавление пользователей в группы\n\nruby\n group 'www-data' do\n \ \ action :modify\n members 'maintenance'\n append true\n end\n \n\n \ \ Добавление пользователя в группу на платформе Windows\n\n ruby\n group 'Administrators'\ \ do\n members ['domain\\foo']\n append true\n action :modify\n end\n\ \ \n"
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/resources/group/