Ресурс habitat_service
Эта страница сгенерирована из исходного кода Chef Infra Client. Чтобы предложить изменение, отредактируйте файл habitat_service.rb и отправьте запрос на включение изменений в репозиторий Chef Infra Client.
Используйте ресурс habitat_service для управления сервисами Chef Habitat. Это требует, чтобы core/hab-sup работало как служба. См. документацию по ресурсу habitat_sup для получения дополнительной информации.
Примечание
Приложения могут работать от имени конкретного пользователя. Часто в Habitat используется значение по умолчанию hab, или root. Если приложение требует другого пользователя, то он должен быть создан с помощью ресурса user Chef.
Новое в Chef Infra Client 17.3.
Синтаксис
Полный синтаксис всех свойств, доступных для ресурса habitat_service:
habitat_service 'name' do
bind String, Array # default value: []
binding_mode Symbol, String # default value: :strict
bldr_url String # default value: "https://bldr.habitat.sh/"
channel Symbol, String # default value: :stable
gateway_auth_token String
health_check_interval Integer # default value: 30
remote_sup String # default value: "127.0.0.1:9632"
remote_sup_http String # default value: "127.0.0.1:9631"
service_group String # default value: "default"
service_name String # default value: 'name' unless specified
shutdown_timeout Integer # default value: 8
strategy Symbol, String # default value: :none
topology Symbol, String # default value: :standalone
update_condition Symbol, String # default value: :latest
action Symbol # defaults to :load if not specified
endгде:
-
habitat_service— ресурс. -
name— имя блока ресурса. -
actionопределяет шаги, которые Chef Infra Client предпримет для приведения узла в нужное состояние. -
bind,binding_mode,bldr_url,channel,gateway_auth_token,health_check_interval,remote_sup,remote_sup_http,service_group,service_name,shutdown_timeout,strategy,topology, иupdate_condition— доступные свойства этого ресурса.
Действия
Ресурс habitat_service имеет следующие действия:
:load- (действие по умолчанию) выполняет
hab service loadдля загрузки и запуска указанной службы приложения (по умолчанию) :nothing- Этот блок ресурса не действует, пока не получит уведомление от другого ресурса о выполнении действия. После уведомления этот блок ресурса либо выполняется немедленно, либо ставится в очередь для выполнения в конце выполнения Chef Infra Client.
:reload- выполняет действия
:unloadи затем:load :restart- выполняет действия
:stopи затем:start :start- выполняет
hab service startдля запуска указанной службы приложения :stop- выполняет
hab service stopдля остановки указанной службы приложения :unload- выполняет
hab service unloadдля выгрузки и остановки указанной службы приложения
Свойства
Ресурс habitat_service имеет следующие свойства:
-
bind - Тип в Ruby: Строка, Массив | Значение по умолчанию:
[]Передает
--bindсо специфицированными сервисами для привязки к команде hab. Если указан массив нескольких привязок сервисов, то для каждой добавляется флаг--bind.
-
binding_mode - Тип в Ruby: Символ, Строка | Значение по умолчанию:
:strictРазрешенные значения::strict, "strict", :relaxed, "relaxed"Передает
--binding-modeсо специфицированным режимом привязки. По умолчанию:strict. Доступные варианты:strictили:relaxed
-
bldr_url - Тип в Ruby: Строка | Значение по умолчанию:
https://bldr.habitat.sh/Передает
--urlсо специфицированным URL Habitat Builder к команде hab. В зависимости от типа Habitat Builder, к которому вы подключаетесь, этот URL будет отличаться. Вот 3 текущих типа: - Публичный Habitat Builder (по умолчанию) -https://bldr.habitat.sh- Habitat Builder локальной установки, установленный с помощью метода установки из исходного кода -https://your.bldr.url- Habitat Builder локальной установки, установленный с помощью инсталлятора Automate -https://your.bldr.url/bldr/v1
-
channel - Тип в Ruby: Символ, Строка | Значение по умолчанию:
:stableПередает
--channelсо специфицированным каналом в команду hab
-
gateway_auth_token - Тип в Ruby: Строка
Токен аутентификации для доступа к http-порту удаленного супервайзера.
-
health_check_interval - Тип в Ruby: Целое число | Значение по умолчанию:
30Интервал (секунды) для выполнения проверок работоспособности.
-
remote_sup - Тип в Ruby: Строка | Значение по умолчанию:
127.0.0.1:9632Адрес удаленного шлюза управления супервайзера.
-
remote_sup_http - Тип в Ruby: Строка | Значение по умолчанию:
127.0.0.1:9631IP-адрес и порт, используемые для связи с удаленным супервайзером. Если это значение недействительно, ресурс будет обновлять конфигурацию супервайзера каждый раз при запуске Chef Infra Server.
-
service_group - Тип в Ruby: Строка | Значение по умолчанию:
defaultПередает
--groupсо специфицированной группой сервисов в команду hab
-
service_name - Тип в Ruby: Строка | Значение по умолчанию:
The resource block's nameИмя сервиса, должно быть в формате
origin/name
-
shutdown_timeout - Тип в Ruby: Целое число | Значение по умолчанию:
8Тайм-аут в секундах, разрешенный при завершении работы.
-
strategy - Тип в Ruby: Символ, Строка | Значение по умолчанию:
:noneРазрешенные значения::none, "none", :"at-once", "at-once", :rolling, "rolling"Передает
--strategyсо специфицированной стратегией обновления в команду hab. По умолчанию:none. Другие варианты:'at-once'и:rolling
-
topology - Тип в Ruby: Символ, Строка | Значение по умолчанию:
:standaloneРазрешенные значения::standalone, "standalone", :leader, "leader"Передает
--topologyсо специфицированной топологией сервиса в команду hab
-
update_condition - Тип в Ruby: Символ, Строка | Значение по умолчанию:
:latestРазрешенные значения::latest, "latest", :"track-channel", "track-channel"Передает
--update-condition, определяя, когда этот сервис должен быть обновлен. По умолчаниюlatest. Доступные вариантыlatestилиtrack-channel**_Примечание
Требуется минимальная версия habitat 1.5.71_** -
latest: Запускает последнюю доступную версию пакета в настроенном канале и локальных пакетах. -track-channel: Всегда запускает пакет в начале заданного канала. Это позволяет отменять действия сервиса, где понижение пакета из канала приведет к отмене до более старой версии пакета. Последствием включения этого условия является то, что пакеты, более новые, чем пакет в начале канала, также удаляются при отмене действия сервиса.
Общие функциональные возможности ресурсов
Ресурсы 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]',: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.
Примеры
В следующих примерах показаны различные подходы к использованию ресурса habitat_service в рецептах:
Установка и загрузка nginx
habitat_package 'core/nginx'
habitat_service 'core/nginx'
habitat_service 'core/nginx unload' do
service_name 'core/nginx'
action :unload
end
Передача опций strategy и topology командам hab service
habitat_service 'core/redis' do
strategy 'rolling'
topology 'standalone'
end
Использование update_condition
habitat_service 'core/redis' do
strategy 'rolling'
update_condition 'track-channel'
topology 'standalone'
end
Если у сервиса указан свой пользователь, отличный от hab пользователя, не создавайте пользователя hab при установке, а вместо этого создайте пользователя приложения с помощью ресурса Chef user
habitat_install 'install habitat' do
create_user false
end
user 'acme-apps' do
system true
end
habitat_service 'acme/apps'
© 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/habitat_service/