Spec-Zone.ru › Chef 16

Ресурс log

Эта страница сгенерирована из исходного кода Chef. Чтобы предложить изменение, отредактируйте файл log.rb и отправьте запрос на вытягивание в репозиторий Chef.

Страница справки по ресурсам


Синтаксис


Блок ресурса log добавляет сообщения в файл журнала на основе событий, происходящих во время выполнения Chef Infra Client:

log 'message' do
  message 'A message add to the log.'
  level :info
end

Полный синтаксис всех доступных свойств ресурса log:

log 'name' do
  level        Symbol # default value: :info
  message      String # default value: 'name' unless specified
  action       Symbol # defaults to :write if not specified
end

где:

  • log — это ресурс.
  • name — это имя, данное блоку ресурса.
  • action определяет действия, которые Chef Infra Client выполнит для приведения узла в нужное состояние.
  • level и message — это доступные для этого ресурса свойства.

Свойства


Ресурс log имеет следующие свойства:

level

Тип в Ruby: Символ | Значение по умолчанию: :info

Уровень ведения журнала для отображения этого сообщения. Доступные варианты (в порядке приоритета): :debug, :info, :warn, :error, и :fatal.

message

Тип в Ruby: Строка | Значение по умолчанию: The resource block's name

Сообщение, которое должно быть добавлено в файл журнала. Значение по умолчанию: name блока ресурса. Дополнительная информация в разделе «Синтаксис» выше.

Записи журнала

Chef::Log будут отображать записи журнала в стандартном логгере, настроенном для машины, на которой запущен Chef Infra Client. (Чтобы создать запись журнала, встроенную в набор ресурсов, используйте ресурс log вместо Chef::Log.)

Поддерживаются следующие уровни журнала:

Уровень журнала Синтаксис
Fatal Chef::Log.fatal('string')
Error Chef::Log.error('string')
Warn Chef::Log.warn('string')
Info Chef::Log.info('string')
Debug Chef::Log.debug('string')

Примечание

Скобки необязательны, например, Chef::Log.info 'string' может быть использовано вместо Chef::Log.info('string').

Следующий пример показывает серию записей журнала Chef::Log типа fatal:

unless node['splunk']['upgrade_enabled']
  Chef::Log.fatal('The chef-splunk::upgrade recipe was added to the node,')
  Chef::Log.fatal('but the attribute `node["splunk"]["upgrade_enabled"]` was not set.')
  Chef::Log.fatal('I am bailing here so this node does not upgrade.')
  raise
end

service 'splunk_stop' do
  service_name 'splunk'
  supports status: true
  action :stop
end

if node['splunk']['is_server']
  splunk_package = 'splunk'
  url_type = 'server'
else
  splunk_package = 'splunkforwarder'
  url_type = 'forwarder'
end

splunk_installer splunk_package do
  url node['splunk']['upgrade']["#{url_type}_url"]
end

if node['splunk']['accept_license']
  execute 'splunk-unattended-upgrade' do
    command "#{splunk_cmd} start --accept-license --answer-yes"
  end
else
  Chef::Log.fatal('You did not accept the license (set node["splunk"]["accept_license"] to true)')
  Chef::Log.fatal('Splunk is stopped and cannot be restarted until the license is accepted!')
  raise
end

Полный рецепт — это upgrade.rb рецепт из кулинарной книги chef-splunk, которая поддерживается Chef.

Следующий пример демонстрирует использование нескольких Chef::Log типов записей:

...

begin
  aws = Chef::DataBagItem.load(:aws, :main)
  Chef::Log.info("Loaded AWS information from DataBagItem aws[#{aws['id']}]")
rescue
  Chef::Log.fatal("Could not find the 'main' item in the 'aws' data bag")
  raise
end

...

Полный рецепт находится в ebs_volume.rb рецепте кулинарной книги database, поддерживаемой Chef.


Общая функциональность ресурса


Ресурсы 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 InfraClient.

Уведомления

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.

Примеры


Следующие примеры демонстрируют различные подходы к использованию ресурса log в рецептах:

Установить уровень журнала по умолчанию

log 'a string to log'

Установить уровень журнала debug

log 'a debug string' do
  level :debug
end

Добавить сообщение в файл журнала

log 'message' do
  message 'This is the message that will be added to the log.'
  level :info
end
Журналирование ресурса
  • Синтаксис
  • Свойства
  • Записи Chef::Log
  • Общие возможности ресурса
    • Общие свойства
    • Уведомления
    • Ограничения
  • Примеры

© 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/log/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API