windows_service Ресурс
Эта страница сгенерирована из исходного кода Chef. Чтобы предложить изменение, отредактируйте файл windows_service.rb и отправьте запрос на включение изменений в репозиторий Chef.
Страница справочника по ресурсам
Используйте ресурс 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 InfraClient.
Уведомления
notifies-
Тип Ruby: Symbol, 'Chef::Resource[String]'
Ресурс может уведомлять другой ресурс о выполнении действий при изменении его состояния. Укажите
'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[String]'
Ресурс может следить за другим ресурсом и принимать действия, если состояние отслеживаемого ресурса изменится. Укажите '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/