Ресурс windows_package
Эта страница сгенерирована из исходного кода Chef. Чтобы предложить изменение, отредактируйте файл windows_package.rb и отправьте запрос на включение изменений в репозиторий Chef.
Страница справочника по ресурсам
Используйте ресурс windows_package для управления пакетами на платформе Microsoft Windows. Ресурс windows_package поддерживает следующие форматы установщиков:
- Microsoft Installer Package (MSI)
- Nullsoft Scriptable Install System (NSIS)
- Inno Setup (inno)
- Wise
- InstallShield
- Пользовательские установщики, такие как установка файла без расширения .msi, который содержит установщик на основе .msi
Для обеспечения идемпотентности действия :install или для включения действия :remove без указанного свойства source, package_name ДОЛЖНО точно совпадать с именем, используемым установщиком пакета. Имена установленных пакетов, известные Windows, можно найти в Установка и удаление программ, в выводе ohai packages, или в свойстве DisplayName в одном из следующих разделов реестра Windows:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\UninstallHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\UninstallHKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
Примечание
Если установлено несколько версий пакета с одинаковым отображаемым именем, все эти пакеты будут удалены, если только версия не указана в свойстве version или если ее нельзя определить в установочном файле, указанном свойством source.
Примечание
Синтаксис
Блок ресурсов windows_package управляет пакетом на узле, обычно устанавливая его. Простейшее использование ресурса windows_package выглядит следующим образом:
windows_package 'package_name'
что установит указанный пакет, используя все параметры по умолчанию и действие по умолчанию (:install).
Полный синтаксис для всех свойств, доступных ресурсу windows_package, следующий:
windows_package 'name' do
checksum String
installer_type Symbol
options String
package_name String
remote_file_attributes Hash
returns String, Integer, Array
source String # default value: "The resource block's name"
timeout String, Integer # default value: "600 (seconds)"
version String
action Symbol # defaults to :install if not specified
endгде:
-
windows_packageэто ресурс. -
nameэто имя, присвоенное блоку ресурсов. -
actionопределяет, какие шаги предпримет клиент Chef Infra Client, чтобы привести узел в желаемое состояние. -
checksum,installer_type,options,package_name,remote_file_attributes,returns,source,timeoutиversionявляются свойствами, доступными для этого ресурса.
Действия
Ресурс windows_package имеет следующие действия:
:install- По умолчанию. Установка пакета. Если указана версия, устанавливается указанная версия пакета.
:nothing- Этот блок ресурсов не действует, если не получит уведомление от другого ресурса о необходимости действия. После получения уведомления этот блок ресурсов либо запускается немедленно, либо помещается в очередь для запуска в конце запуска клиента Chef Infra Client.
:remove- Удаление пакета.
Свойства
Ресурс windows_package имеет следующие свойства:
checksum-
Тип Ruby: String
Контрольная сумма SHA-256 файла. Используется для предотвращения повторной загрузки файла. Когда локальный файл соответствует контрольной сумме, клиент Chef Infra Client не загружает его. Используйте, когда URL-адрес указан свойством
source.
installer_type-
Тип Ruby: SymbolДопустимые значения:
:custom, :inno, :installshield, :msi, :nsis, :wiseСимвол, указывающий тип пакета. Возможные значения:
:custom(например, установка файла без расширения .msi, который содержит установщик на основе .msi),:inno(Inno Setup),:installshield(InstallShield),:msi(Microsoft Installer Package (MSI)),:nsis(Nullsoft Scriptable Install System (NSIS)),:wise(Wise).
options-
Тип Ruby: String
Один (или несколько) дополнительных параметров, передаваемых команде.
package_name-
Тип Ruby: String
Необязательное свойство для установки имени пакета, если оно отличается от имени блока ресурсов.
remote_file_attributes-
Тип Ruby: Hash
Это свойство позволяет определить хэш свойств и их значений, если устанавливаемый исходный пакет находится в удаленном расположении. Этот хэш будет использоваться базовым ресурсом remote_file, который будет извлекать исходный пакет.
returns-
Тип Ruby: String, Integer, Array of integers | Значение по умолчанию:
0 (success) and 3010 (success where a reboot is necessary)Список кодов возврата, разделенных запятыми, которые указывают на успешное или неудачное выполнение команды пакета.
source-
Тип Ruby: String | Значение по умолчанию:
The resource block's nameПуть к пакету в локальной файловой системе. Расположение пакета может быть URL-адресом.
Если свойство
sourceне указано, имя пакета ДОЛЖНО точно совпадать с отображаемым именем, найденным в Установка и удаление программ, или точно совпадать со свойствомDisplayNameв соответствующем разделе реестра, который может быть одним из следующих:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\UninstallПримечание
Если установлено несколько версий пакета с одинаковым отображаемым именем, все эти пакеты будут удалены, если только версия не указана в свойстве
versionили если ее нельзя определить в установочном файле, указанном свойствомsource.
timeout-
Тип Ruby: String, Integer | Значение по умолчанию:
600 (seconds)Время ожидания (в секундах) перед истечением времени ожидания.
version-
Тип Ruby: String
Версия пакета, который необходимо установить или обновить.
Общие функции ресурса
Ресурсы 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: Integer | Значение по умолчанию:
0Количество попыток перехвата исключений и повтора попытки выполнения ресурса.
retry_delay-
Тип Ruby: Integer | Значение по умолчанию:
2Задержка повтора (в секундах).
sensitive-
Тип Ruby: true, false | Значение по умолчанию:
falseОбеспечьте, чтобы конфиденциальные данные ресурса не регистрировались клиентом Chef InfraClient.
Уведомления
notifies-
Тип Ruby: Symbol, '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: Symbol, '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.
Примеры
Следующие примеры демонстрируют различные подходы к использованию ресурса windows_package в рецептах:
Установка пакета:
windows_package '7zip' do
action :install
source 'C:\7z920.msi'
end
Указание URL для атрибута source:
windows_package '7zip' do
source 'http://www.7-zip.org/a/7z938-x64.msi'
end
Указание пути и контрольной суммы:
windows_package '7zip' do
source 'http://www.7-zip.org/a/7z938-x64.msi'
checksum '7c8e873991c82ad9cfc123415254ea6101e9a645e12977dcd518979e50fdedf3'
end
Изменение атрибутов ресурса remote_file:
Ресурс windows_package может указывать пакет в удалённом расположении с помощью свойства remote_file_attributes. Это использует ресурс remote_file для загрузки содержимого по указанному URL и передаёт в качестве значения Hash, который изменяет свойства ресурса remote_file.
windows_package '7zip' do
source 'http://www.7-zip.org/a/7z938-x64.msi'
remote_file_attributes ({
:path => 'C:\7zip.msi',
:checksum => '7c8e873991c82ad9cfc123415254ea6101e9a645e12977dcd518979e50fdedf3'
})
end
Загрузка пакета nsis (Nullsoft):
windows_package 'Mercurial 3.6.1 (64-bit)' do
source 'http://mercurial.selenic.com/release/windows/Mercurial-3.6.1-x64.exe'
checksum 'febd29578cb6736163d232708b834a2ddd119aa40abc536b2c313fc5e1b5831d'
end
Загрузка пользовательского пакета:
windows_package 'Microsoft Visual C++ 2005 Redistributable' do
source 'https://download.microsoft.com/download/6/B/B/6BB661D6-A8AE-4819-B79F-236472F6070C/vcredist_x86.exe'
installer_type :custom
options '/Q'
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/windows_package/