Ресурс csh
Эта страница сгенерирована из исходного кода клиента Chef Infra. Чтобы предложить изменение, отредактируйте файл csh.rb и отправьте запрос на добавление в репозиторий Chef Infra Client.
Используйте ресурс 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/