windows_service Ресурс
Эта страница генерируется из исходного кода клиента Chef Infra. Чтобы предложить изменение, отредактируйте файл windows_service.rb и отправьте запрос на вытягивание в репозиторий клиента Chef Infra.
Страница со всеми ресурсами Infra
Используйте ресурс windows_service для создания, удаления или управления службой на платформе Microsoft Windows.
Синтаксис
Блок ресурсов windows_service управляет состоянием службы на машине под управлением Microsoft Windows. Например:
windows_service 'BITS' do
action :configure_startup
startup_type :manual
end
Полный синтаксис для всех свойств, доступных ресурсу windows_service, следующий:
windows_service 'name' do
binary_path_name String
delayed_start true, false # default value: false
dependencies String, Array
description String
desired_access Integer # default value: 983551
display_name String
error_control Integer # default value: 1
init_command String
load_order_group String
pattern String
reload_command String, false
restart_command String, false
run_as_password String
run_as_user String # default value: "LocalSystem"
service_name String # default value: 'name' unless specified
service_type Integer # default value: "SERVICE_WIN32_OWN_PROCESS"
start_command String, false
startup_type Symbol # default value: :automatic
status_command String, false
stop_command String, false
supports Hash # default value: {"restart"=>nil, "reload"=>nil, "status"=>nil}
timeout Integer
action Symbol # defaults to :nothing if not specified
endгде:
-
windows_serviceявляется ресурсом. -
name— это имя, данное блоку ресурсов. -
actionопределяет, какие шаги предпримет клиент Chef Infra для приведения узла в желаемое состояние. -
binary_path_name,display_name,desired_access,delayed_start,dependencies,description,error_control,init_command,load_order_group,pattern,reload_command,restart_command,run_as_password,run_as_user,service_name,service_type,start_command,startup_type,status_command,stop_command,supports, иtimeoutявляются свойствами этого ресурса, с указанным типом Ruby. См. раздел «Свойства» ниже для получения дополнительной информации обо всех свойствах, которые могут использоваться с этим ресурсом.
Действия
Ресурс windows_service имеет следующие действия:
:configure- Настроить существующую службу. Новое в Chef Client 14.0.
:configure_startup- Настроить службу на основе значения свойства
startup_type. :create- Создать службу на основе значения свойства
binary_path_name,service_nameи/илиdisplay_name. Новое в Chef Client 14.0. :delete- Удалить службу на основе значения свойства
service_name. Новое в Chef Client 14.0. :disable- Отключить службу. Это действие эквивалентно типу запуска
Disabledна платформе Microsoft Windows. :enable- Включить службу при загрузке. Это действие эквивалентно типу запуска
Automaticна платформе Microsoft Windows. :nothing- По умолчанию. Ничего не делать со службой.
:reload- Перезагрузить конфигурацию для этой службы. Это действие не поддерживается на платформе Windows и вызовет ошибку, если используется.
:restart- Перезапустить службу.
:start- Запустить службу и поддерживать ее работу до остановки или отключения.
:stop- Остановить службу.
Свойства
Ресурс windows_service имеет следующие свойства:
-
binary_path_name - Тип Ruby: String
Полный путь к исполняемому файлу службы. Путь может также включать аргументы для службы автозапуска. Это необходимо для действий
:createи:configureНовое в Chef Client 14.0
-
delayed_start - Тип Ruby: true, false | Значение по умолчанию:
falseУстановить тип запуска на отложенный запуск. Это применимо только в том случае, если
startup_typeравно:automaticНовое в Chef Client 14.0
-
dependencies - Тип Ruby: String, Array
Указатель на двойной нуль-терминированный массив имен служб или групп загрузки, разделенных нулями, которые система должна запустить до этой службы. Укажите
nilили пустую строку, если служба не имеет зависимостей. Зависимость от группы означает, что эта служба может работать, если хотя бы один член группы работает после попытки запуска всех членов группы.Новое в Chef Client 14.0
-
description - Тип Ruby: String
Описание службы.
Новое в Chef Client 14.0
-
desired_access - Тип Ruby: Integer | Значение по умолчанию:
983551Новое в Chef Client 14.0
-
display_name - Тип Ruby: String
Отображаемое имя, которое будет использоваться программами пользовательского интерфейса для идентификации службы. Эта строка имеет максимальную длину 256 символов.
Новое в Chef Client 14.0
-
error_control - Тип Ruby: Integer | Значение по умолчанию:
1Новое в Chef Client 14.0
-
load_order_group - Тип Ruby: String
Имя(на) группы(п) загрузки службы.
Новое в Chef Client 14.0
-
pattern - Тип Ruby: String | Значение по умолчанию:
The value provided to 'service_name' or the resource block's nameШаблон для поиска в таблице процессов.
-
reload_command - Тип Ruby: String, false
Команда, используемая для указания службе перезагрузить свою конфигурацию.
-
restart_command - Тип Ruby: String, false
Команда, используемая для перезапуска службы.
-
run_as_password - Тип Ruby: String
Пароль для пользователя, указанного в
run_as_user.
-
run_as_user - Тип Ruby: String | Значение по умолчанию:
localsystemПользователь, под которым работает служба Microsoft Windows.
-
service_name - Тип Ruby: String | Значение по умолчанию:
The resource block's nameНеобязательное свойство для установки имени службы, если оно отличается от имени блока ресурсов.
-
service_type - Тип Ruby: Integer | Значение по умолчанию:
16Новое в Chef Client 14.0
-
start_command - Тип Ruby: String, false
Команда, используемая для запуска службы.
-
startup_type - Тип Ruby: Symbol | Значение по умолчанию:
:automaticДопустимые значения::automatic, :disabled, :manualИспользуется для указания типа запуска службы.
-
status_command - Тип Ruby: String, false
Команда, используемая для проверки состояния выполнения службы.
-
stop_command - Тип Ruby: String, false
Команда, используемая для остановки службы.
-
supports - Тип Ruby: Hash | Значение по умолчанию:
{"restart"=>nil, "reload"=>nil, "status"=>nil}Список свойств, которые управляют тем, как клиент Chef Infra должен пытаться управлять службой:
:restart,:reload,:status. Для:restart, скрипт инициализации или другой поставщик служб может использовать команду перезапуска; если:restartне указан, клиент Chef Infra пытается остановить, а затем запустить службу. Для:reload, скрипт инициализации или другой поставщик служб может использовать команду перезагрузки. Для:status, скрипт инициализации или другой поставщик служб может использовать команду состояния для определения того, запущена ли служба; если:statusне указан, клиент Chef Infra пытается сопоставитьservice_nameс таблицей процессов как регулярное выражение, если только шаблон не указан как параметр свойства. Значение по умолчанию:{ restart: false, reload: false, status: false }для всех платформ (за исключением семейства платформ Red Hat, которое по умолчанию использует{ restart: false, reload: false, status: true }).
-
timeout - Тип Ruby: Integer | Значение по умолчанию:
60Время ожидания (в секундах) перед истечением времени ожидания.
Общие функции ресурса
Ресурсы Chef включают общие свойства, уведомления и средства защиты ресурсов.
Общие свойства
Следующие свойства являются общими для каждого ресурса:
compile_time-
Тип Ruby: true, false | Значение по умолчанию:
falseУправляет фазой, во время которой ресурс запускается на узле. Установите значение true для запуска во время построения коллекции ресурсов (
compile phase). Установите значение false для запуска во время настройки узла клиентом Chef Infra (converge phase). ignore_failure-
Тип Ruby: true, false, :quiet | Значение по умолчанию:
falseПродолжить выполнение рецепта, если ресурс завершится неудачей по какой-либо причине.
:quietне будет отображать полный трассировку стека, и рецепт будет продолжать выполняться, если ресурс завершится неудачей. retries-
Тип Ruby: Integer | Значение по умолчанию:
0Количество попыток перехватить исключения и повторить попытку использования ресурса.
retry_delay-
Тип Ruby: Integer | Значение по умолчанию:
2Задержка в секундах между попытками повтора.
sensitive-
Тип Ruby: true, false | Значение по умолчанию:
falseОбеспечьте, чтобы конфиденциальные данные ресурса не регистрировались клиентом Chef Infra.
Уведомления
-
notifies -
Тип Ruby: Символ, 'Chef::Resource[Строка]'
Ресурс может уведомить другой ресурс о выполнении действия при изменении его состояния. Укажите
'resource[name]',:action, которые должен выполнить ресурс, и: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.
Примеры
Следующие примеры демонстрируют различные подходы к использованию ресурса windows_service в рецептах:
Запуск служб
Запустить службу с типом запуска manual:
windows_service 'BITS' do
action :configure_startup
startup_type :manual
end
Создание служб
Создать службу с именем chef-client:
windows_service 'chef-client' do
action :create
binary_path_name "C:\opscode\chef\bin"
end
Создать службу с service_name и display_name:
windows_service 'Setup chef-client as a service' do
action :create
display_name 'CHEF-CLIENT'
service_name 'chef-client'
binary_path_name "C:\opscode\chef\bin"
end
Создать службу с типом запуска manual:
windows_service 'chef-client' do
action :create
binary_path_name "C:\opscode\chef\bin"
startup_type :manual
end
Создать службу с типом запуска disabled:
windows_service 'chef-client' do
action :create
binary_path_name "C:\opscode\chef\bin"
startup_type :disabled
end
Создать службу с типом запуска automatic и включенным отложенным запуском:
windows_service 'chef-client' do
action :create
binary_path_name "C:\opscode\chef\bin"
startup_type :automatic
delayed_start true
end
Создать службу с описанием:
windows_service 'chef-client' do
action :create
binary_path_name "C:\opscode\chef\bin"
startup_type :automatic
description "Chef client as service"
end
Удаление служб
Удалить службу с именем chef-client:
windows_service 'chef-client' do
action :delete
end
Удалить службу со свойством service_name:
windows_service 'Delete chef client' do
action :delete
service_name 'chef-client'
end
Настройка служб
Изменить существующую службу с автоматического на ручного запуска:
windows_service 'chef-client' do
action :configure
binary_path_name "C:\opscode\chef\bin"
startup_type :manual
end
© 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/windows_service/