windows_service Ресурс
Эта страница сгенерирована из исходного кода клиента Chef Infra. Чтобы предложить изменение, отредактируйте файл windows_service.rb и отправьте запрос на включение изменений в репозиторий Chef Infra Client.
Страница со всеми ресурсами 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/