Spec-Zone.ru › Chef 16

ksh Ресурс

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

Страница справки по ресурсам


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

Синтаксис


Блок ресурса ksh выполняет скрипты с помощью ksh:

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

где:

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

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

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

где:

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

Действия


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

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

Свойства


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

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

Заключенная в кавычки (" “) строка кода, который необходимо выполнить.

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 Client (converge phase).

ignore_failure

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

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

retries

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

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

retry_delay

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

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

sensitive

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

Убедиться, что конфиденциальные данные ресурса не регистрируются Chef InfraClient.

Уведомления

notifies

Тип Ruby: Символ, 'Chef::Resource[String]'

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

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

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

:before

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

:delayed

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

:immediate, :immediately

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

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

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

Защиты

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

Примеры


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

Ресурс ksh
  • Синтаксис
  • Действия
  • Свойства
  • Общие возможности ресурса
    • Общие свойства
    • Уведомления
    • Защиты
  • Примеры

© 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/ksh/

Spec-Zone.ru

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