Ресурс powershell_package
Эта страница сгенерирована из исходного кода Chef. Чтобы предложить изменение, отредактируйте файл powershell_package.rb и отправьте запрос на вытягивание в репозиторий Chef.
Используйте ресурс powershell_package для установки и управления пакетами через PowerShell Package Manager для платформы Microsoft Windows. Ресурс powershell_package требует административных прав и источник должен быть настроен в PowerShell Package Manager с помощью команды Register-PackageSource или ресурса powershell_package_source.
Новое в Chef Infra Client 12.16.
Синтаксис
Блок ресурса powershell_package управляет пакетом на узле, обычно устанавливая его. Самый простой способ использования ресурса powershell_package:
powershell_package 'package_name'
который установит указанный пакет с использованием всех параметров по умолчанию и по умолчанию действием (:install).
Ресурс powershell_package имеет следующий синтаксис:
powershell_package 'name' do
options String, Array
package_name String, Array
skip_publisher_check true, false # default value: false
source String
timeout String, Integer
version String, Array
action Symbol # defaults to :install if not specified
end
где:
-
powershell_packageявляется ресурсом. -
name— имя, присвоенное блоку ресурса. -
actionопределяет действия, которые Chef Infra Client предпримет, чтобы привести узел в нужное состояние. -
options,package_name,skip_publisher_check,source,timeout, иversionявляются доступными для этого ресурса свойствами.
Действия
Ресурс powershell_package имеет следующие действия:
:install- По умолчанию. Устанавливает пакет. Если указана версия, устанавливает указанную версию пакета.
:remove- Удаляет пакет.
Свойства
Ресурс powershell_package имеет следующие свойства:
options-
Тип Ruby: Строка, Массив
Дополнительные параметры команд, которые передаются команде.
package_name-
Тип Ruby: Строка, Массив
Название пакета. Значение по умолчанию: имя блока ресурса.
skip_publisher_check-
Тип Ruby: true, false | Значение по умолчанию:
falseПропустить проверку автора модуля.
Новая функция в Chef Client 14.3
source-
Тип Ruby: Строка
Укажите источник пакета.
Новая функция в Chef Client 14.0
timeout-
Тип Ruby: Строка, Целое число
Время ожидания (в секундах) перед истечением времени.
version-
Тип Ruby: Строка, Массив
Версия пакета для установки или обновления.
Общие функции ресурсов
Ресурсы 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[Строка]'
Ресурс может уведомлять другой ресурс о выполнении действия при изменении его состояния. Укажите
'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[Строка]'
Ресурс может прослушивать другой ресурс и затем выполнять действие, если состояние прослушиваемого ресурса изменяется. Укажите '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.
Примеры
Следующие примеры демонстрируют различные подходы к использованию ресурса powershell_package в рецептах:
Установка конкретной версии пакета:
powershell_package 'xCertificate' do
action :install
version '1.1.0.0'
end
Установка нескольких пакетов:
powershell_package 'Install Multiple Packages' do
action :install
package_name %w(xCertificate xNetworking)
end
Установка пакета из пользовательского источника:
powershell_package 'xCertificate' do
action :install
source 'MyGallery'
end
Установка нескольких пакетов и указание версий пакетов:
powershell_package 'Install Multiple Packages' do
action :install
package_name %w(xCertificate xNetworking)
version ['2.0.0.0', '2.12.0.0']
end
Установка нескольких пакетов, указание версии пакета для одного пакета, но не для другого:
powershell_package 'Install Multiple Packages' do
action :install
package_name %w(xCertificate xNetworking)
version [nil, '2.12.0.0']
end
В этом примере nil указывает powershell_package установить самую последнюю версию xCertificate, которая доступна, при этом фиксируя xNetworking до версии 2.12.0.0.
Удаление пакета:
powershell_package 'xCertificate' do
action :remove
end
© 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/powershell_package/