Spec-Zone.ru › Chef 16

perl Ресурс

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

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


Используйте ресурс perl для выполнения скриптов с помощью интерпретатора Perl. Этот ресурс также может использовать любые действия и свойства, доступные для ресурса execute. Команды, выполняемые с помощью этого ресурса, по своей природе не идемпотентны, так как обычно уникальны для среды, в которой они выполняются. Используйте not_if и only_if для защиты этого ресурса от идемпотентности.

Синтаксис


Блок ресурса perl выполняет скрипты Perl:

perl 'hello world' do
  code <<-EOH
    print "Hello world! From Chef and Perl.";
  EOH
end

где:

  • code задаёт команду для выполнения

Полный синтаксис всех свойств, доступных для ресурса perl, выглядит следующим образом:

perl 'name' do
  code                       String
  creates                    String
  cwd                        String
  environment                Hash
  flags                      String
  group                      String, Integer
  notifies                   # see description
  path                       Array
  returns                    Integer, Array
  subscribes                 # see description
  timeout                    Integer, Float
  user                       String, Integer
  umask                      String, Integer
  action                     Symbol # defaults to :run if not specified
end

где:

  • perl — это ресурс.
  • name — это имя, заданное для блока ресурса.
  • action определяет шаги, которые Chef Infra Client предпримет для приведения узла в желаемое состояние.
  • code, creates, cwd, environment, flags, group, path, returns, timeout, user, и umask — это свойства этого ресурса с указанным типом Ruby. Подробную информацию обо всех свойствах, которые можно использовать с этим ресурсом, см. в разделе «Свойства» ниже.

Действия


Ресурс perl имеет следующие действия:

:nothing
Предотвращает выполнение команды. Это действие используется для указания того, что команда выполняется только тогда, когда другое ресурс её уведомляет.
:run
По умолчанию. Выполнить скрипт.

Свойства


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

code
Тип Ruby: Строка

Строка кода (в кавычках « “») для выполнения.

creates
Тип Ruby: Строка

Предотвратить создание файла командой, если этот файл уже существует.

cwd
Тип Ruby: Строка

Текущая рабочая директория.

environment
Тип Ruby: Словарь

Словарь переменных среды в формате ({"ENV_VARIABLE" => "VALUE"}). (Эти переменные должны существовать для успешного выполнения команды.)

flags
Тип Ruby: Строка

Одна или несколько командных флагов, которые передаются интерпретатору при вызове команды.

group
Тип Ruby: Строка, Целое число

Имя или идентификатор группы, которые должны быть изменены перед запуском команды.

ignore_failure
Тип Ruby: true, false | Значение по умолчанию: false

Продолжить выполнение рецепта, если ресурс завершится неудачей по любой причине.

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
retries
Тип Ruby: Целое число | Значение по умолчанию: 0

Количество попыток перехватить исключения и повторить ресурс.

retry_delay
Тип Ruby: Целое число | Значение по умолчанию: 2

Задержка повтора (в секундах).

returns
Тип Ruby: Целое число, массив | Значение по умолчанию: 0

Значение возврата команды. Это может быть массив допустимых значений. При несоответствии возвращаемого значения(й) генерируется исключение.

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
timeout
Тип Ruby: Целое число, вещественное число | Значение по умолчанию: 3600

Время ожидания команды в секундах до истечения срока действия.

user
Тип Ruby: Строка, целое число

Имя пользователя или идентификатор пользователя, который должен быть изменён перед запуском команды.

umask
Тип Ruby: Строка, целое число

Маска создания режима файла или umask.


Общие функциональные возможности ресурсов


Ресурсы Chef включают общие свойства, уведомления и защитные механизмы ресурсов.

Защитные механизмы

Свойство защитного механизма может использоваться для оценки состояния узла во время фазы выполнения 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.

Примеры


Этот ресурс не имеет примеров.

Ресурс perl
  • Синтаксис
  • Действия
  • Свойства
  • Общие функциональные возможности ресурсов
    • Защитные механизмы
  • Примеры

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

Spec-Zone.ru

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