Spec-Zone.ru › Chef 17

Ресурс csh

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

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


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

Синтаксис


Блок ресурса csh выполняет скрипты с использованием csh:

csh 'hello world' do
  code <<-EOH
    echo "Hello world!"
    echo "Current directory: " $cwd
  EOH
end

где:

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

Полный синтаксис всех свойств, доступных для ресурса csh, выглядит так:

csh '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

где:

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

Действия


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

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

Свойства


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

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

Строка кода в кавычках (" “), которая должна быть выполнена.

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

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

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

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

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

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

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

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

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

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

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

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

timeout
Тип Ruby: Целое число, Вещественное число | Значение по умолчанию: 3600

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

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

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

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

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


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


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

Общие свойства

Следующие свойства являются общими для всех ресурсов:

compile_time

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

Управление фазой, в которой ресурс выполняется на узле. Установите в значение true, чтобы запустить ресурс во время построения коллекции ресурсов (фаза compile phase). Установите в значение false, чтобы запустить ресурс во время настройки узла клиентом Chef Infra (фаза converge phase).

ignore_failure

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

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

retries

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

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

retry_delay

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

Задержка в секундах между попытками повтора.

sensitive

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

Обеспечить, чтобы конфиденциальные данные ресурса не регистрировались клиентом Chef Infra.

Уведомления

notifies

Тип Ruby: Символ, 'Chef::Resource[Строка]'

Ресурс может уведомить другой ресурс о действии при изменении его состояния. Укажите 'resource[name]', :action действия, которое должен выполнить этот ресурс, а затем :timer этого действия. Ресурс может уведомлять несколько ресурсов; для каждого уведомляемого ресурса используйте инструкцию notifies.

Если указанный ресурс не существует, генерируется ошибка. В отличие от этого, subscribes не завершится с ошибкой, если исходный ресурс не найден.

Таймер указывает момент во время выполнения клиента Chef Infra, в который выполняется уведомление. Доступны следующие таймеры:

:before

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

:delayed

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

:immediate, :immediately

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

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

notifies :action, 'resource[name]', :timer
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

Блокировки

Свойство блокировки может использоваться для оценки состояния узла на этапе выполнения клиента 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/csh/

Spec-Zone.ru

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