Ресурс ruby
Эта страница сгенерирована из исходного кода Chef. Чтобы предложить изменение, отредактируйте файл ruby.rb и отправьте заявку на включение изменений в репозиторий Chef.
Используйте ресурс ruby для выполнения скриптов с помощью интерпретатора Ruby. Этот ресурс также может использовать любые действия и свойства, доступные для ресурса execute. Команды, выполняемые с помощью этого ресурса, по своей природе не идемпотентны, так как они обычно уникальны для среды, в которой они выполняются. Используйте not_if и only_if для защиты этого ресурса от идемпотентности.
Синтаксис
Блок ресурса ruby выполняет скрипты с использованием Ruby:
ruby 'hello world' do
code <<-EOH
puts "Hello world! From Chef and Ruby."
EOH
end
где:
-
cwdопределяет каталог, из которого выполняется команда -
codeопределяет команду для выполнения
Полный синтаксис всех свойств, доступных для ресурса ruby:
ruby 'name' do
code String
creates String
cwd String
environment Hash
flags String
group String, Integer
path Array
returns Integer, Array
timeout Integer, Float
user String, Integer
umask String, Integer
action Symbol # defaults to :run if not specified
endгде:
-
ruby— это ресурс. -
name— имя, присвоенное блоку ресурса. -
actionопределяет шаги, которые Chef Infra Client предпримет для приведения узла к желаемому состоянию. -
code,creates,cwd,environment,flags,group,path,returns,timeout,user, иumask— свойства этого ресурса с указанным типом Ruby. Подробнее о всех свойствах, которые можно использовать с этим ресурсом, см. в разделе «Свойства».
Действия
Ресурс ruby имеет следующие действия:
:nothing- Этот блок ресурса не выполняет действия, пока не получит уведомление от другого ресурса. После получения уведомления этот блок ресурса либо выполняется немедленно, либо ставится в очередь для выполнения в конце выполнения Chef Infra Client.
:run- По умолчанию. Выполняет скрипт.
Свойства
Ресурс ruby имеет следующие свойства:
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/ruby/