Ресурс python
Эта страница сгенерирована из исходного кода Chef. Чтобы предложить изменения, отредактируйте файл python.rb и отправьте запрос на вытягивание в репозиторий Chef.
Используйте ресурс python для выполнения скриптов с помощью интерпретатора Python. Этот ресурс также может использовать любые действия и свойства, доступные для ресурса execute. Команды, выполняемые с помощью этого ресурса, по своей природе не идемпотентны, так как обычно уникальны для среды, в которой они выполняются. Используйте not_if и only_if для защиты этого ресурса от идемпотентности.
Синтаксис
Ресурс python имеет следующий синтаксис:
python 'hello world' do
code <<-EOH
print "Hello world! From Chef and Python."
EOH
end
где:
-
codeуказывает команду для выполнения
Полный синтаксис всех свойств, доступных для ресурса python:
python 'name' do
code String
command String # default value: 'name' unless specified
creates String
cwd String
default_env true, false # default value: false
domain String
elevated true, false # default value: false
environment Hash
flags String
group String, Integer
interpreter String
live_stream true, false # default value: false
password String
returns Integer, Array # default value: 0
sensitive true, false # default value: "True if the password property is set. False otherwise."
timeout Integer, Float
umask String, Integer
user String, Integer
action Symbol # defaults to :run if not specified
endгде:
-
python— это ресурс. -
name— имя, присваиваемое блоку ресурса. -
actionопределяет шаги, которые Chef Infra Client предпримет для перевода узла в желаемое состояние. -
code,command,creates,cwd,default_env,domain,elevated,environment,flags,group,interpreter,live_stream,password,returns,sensitive,timeout,umask, иuser— это свойства, доступные для данного ресурса.
Действия
Ресурс python имеет следующие действия:
:nothing- Запрещает выполнение команды. Это действие используется для указания того, что команда выполняется только при уведомлении от другого ресурса.
:run- По умолчанию. Выполняет скрипт.
Свойства
Ресурс python имеет следующие свойства:
code-
Тип Ruby: Строка |
REQUIREDСтрока кода для выполнения в кавычках (" ").
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\[Строка\]
Ресурс может подписываться на другой ресурс и затем совершать действия, если состояние наблюдаемого ресурса изменяется. Укажите
'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/python/