Spec-Zone.ru › Chef 17

Ресурс perl

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

Все страницы ресурсов Infra


Используйте ресурс 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
returns
Тип Ruby: Целое число, массив | Значение по умолчанию: 0

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

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
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.

Примеры


У этого ресурса нет примеров.

© 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