Ресурс chef_node
Эта страница сгенерирована из исходного кода Chef. Чтобы предложить изменение, отредактируйте файл chef_node.rb и отправьте запрос на вытягивание в репозиторий Chef.
Узел — это любое устройство: физическое, виртуальное, облачное, сетевое устройство и т. д., находящееся под управлением Chef Infra.
Используйте ресурс chef_node для управления узлами.
Синтаксис
Синтаксис использования ресурса chef_node в рецепте следующий:
chef_node 'name' do
attribute 'value' # see properties section below
...
action :action # see actions section below
end
где:
-
chef_nodeсообщает Chef Infra Client использовать провайдерChef::Provider::ChefNodeво время выполнения Chef Infra Client -
name— имя блока ресурса -
attribute— нуль (или более) свойств, доступных для этого ресурса -
actionопределяет действия Chef Infra Client для приведения узла к желаемому состоянию
Действия
Ресурс chef_node имеет следующие действия:
:create- По умолчанию. Используется для создания узла.
:delete- Используется для удаления узла.
:nothing- Этот блок ресурса не выполняет никаких действий, пока не получит уведомление от другого ресурса о необходимости выполнения действия. После уведомления этот блок ресурса либо выполняется немедленно, либо добавляется в очередь для выполнения в конце выполнения Chef Infra Client.
Свойства
Ресурс chef_node имеет следующие свойства:
automatic_attributes-
Атрибут
automaticсодержит данные, идентифицированные Ohai в начале каждого выполнения Chef Infra Client. Атрибутautomaticне может быть изменен и всегда имеет наивысший приоритет среди атрибутов.Значение по умолчанию:
{}.
chef_environmentСреда Chef Infra Server, в которой должен (или уже существует) этот узел.
chef_serverURL сервера Chef Infra Server.
completeИспользуется для указания, определяет ли этот ресурс узел полностью. При значении
trueлюбые свойства, не указанные в этом ресурсе, будут сброшены до значений по умолчанию.
default_attributes-
Атрибут
defaultавтоматически сбрасывается в начале каждого выполнения Chef Infra Client и имеет наименьший приоритет среди атрибутов. Используйте атрибутыdefaultв кулинариях как можно чаще.Значение по умолчанию:
{}.
ignore_failure-
Тип в Ruby: true, false | Значение по умолчанию:
falseПродолжать выполнение рецепта, если ресурс завершился ошибкой по любой причине.
nameУникальный идентификатор узла.
normal_attributes-
Атрибут
normal— это настройка, сохраняемая в объекте узла. Атрибутnormalимеет более высокий приоритет, чем атрибутdefault.Значение по умолчанию:
{}.
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
override_attributes-
Атрибут
overrideавтоматически сбрасывается в начале каждого выполнения Chef Infra Client и имеет более высокий приоритет, чем атрибутыdefault,force_defaultиnormal. Атрибутoverrideчаще всего указывается в рецепте, но может быть указан в файле атрибутов, для роли и/или среды. Кулинария должна быть написана так, чтобы использовать атрибутыoverrideтолько при необходимости.Значение по умолчанию:
{}.
raw_json-
Узел в формате JSON. Например:
{ "overrides": {}, "name": "latte", "chef_type": "node", "json_class": "Chef::Node", "attributes": { "hardware_type": "laptop" }, "run_list": [ "recipe[apache2]" ], "defaults": {} }
retries-
Тип в Ruby: Целое число | Значение по умолчанию:
0Количество попыток перехвата исключений и повторного выполнения ресурса.
retry_delay-
Тип в Ruby: Целое число | Значение по умолчанию:
2Задержка повторного выполнения (в секундах).
run_listСписок ролей и/или рецептов, которые будут применены, разделенный запятыми. Значение по умолчанию:
[]. Например:["recipe[default]","recipe[apache2]"]
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 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/chef_node/