Spec-Zone.ru › Chef 17

Ресурс ruby

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

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


Используйте ресурс 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 предпримет для перевода узла в нужное состояние.
  • code, creates, cwd, environment, flags, group, path, returns, timeout, user, и umask — свойства этого ресурса с указанным типом Ruby. Более подробная информация обо всех свойствах, которые можно использовать с этим ресурсом, приведена в разделе «Свойства» ниже.

Действия


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

:nothing
Этот блок ресурса не выполняет действий, пока не получит уведомление от другого ресурса о необходимости действия. После получения уведомления этот блок ресурса либо выполняется немедленно, либо помещается в очередь для выполнения в конце выполнения клиента Chef Infra.
: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, когда выполняется уведомление. Доступны следующие таймеры:

:before

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

:delayed

По умолчанию. Указывает, что уведомление должно помещаться в очередь и выполняться в конце выполнения клиента Chef Infra.

: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, когда выполняется уведомление. Доступны следующие таймеры:

:before

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

:delayed

По умолчанию. Указывает, что уведомление должно помещаться в очередь и выполняться в конце выполнения клиента Chef Infra.

:immediate, :immediately

Указывает, что уведомление должно выполняться немедленно для каждого уведомленного ресурса.

Синтаксис для subscribes:

subscribes :action, 'resource[name]', :timer
timeout
Тип Ruby: Целое число, Число с плавающей запятой | Значение по умолчанию: 3600

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

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

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

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

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


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


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

Защиты

Свойство защиты может использоваться для оценки состояния узла на этапе выполнения клиента Chef Infra. В зависимости от результатов этой оценки свойство защиты затем используется, чтобы указать клиенту Chef Infra, следует ли ему продолжать выполнение ресурса. Свойство защиты принимает строковое значение или значение блока Ruby:

  • Строка выполняется как команда оболочки. Если команда возвращает 0, защита применяется. Если команда возвращает любое другое значение, свойство защиты не применяется. Строковые защиты в powershell_script выполняют команды Windows PowerShell и могут возвращать true в дополнение к 0.
  • Блок выполняется как код Ruby, который должен вернуть либо true или false. Если блок возвращает true, свойство защиты применяется. Если блок возвращает false, свойство защиты не применяется.

Свойство защиты полезно для обеспечения идемпотентности ресурса, позволяя этому ресурсу проверить желаемое состояние во время выполнения, а затем, если желаемое состояние присутствует, не предпринимать никаких действий клиентом Chef Infra.

Свойства

Следующие свойства могут использоваться для определения защиты, которая оценивается во время выполнения клиента Chef Infra:

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/

Spec-Zone.ru

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