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.
Примеры
Этот ресурс не имеет примеров.
© 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/