Spec-Zone.ru › Chef 16

Ресурс 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\Uninstall
  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall
  • HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall

Примечание

Если установлено несколько версий пакета с одинаковым отображаемым именем, все эти пакеты будут удалены, если только версия не указана в свойстве version или если ее нельзя определить в установочном файле, указанном свойством source.

Примечание

Во многих случаях лучше использовать ресурс package вместо этого. Это связано с тем, что при использовании ресурса package в рецепте, клиент Chef Infra Client будет использовать данные, собранные Ohai в начале запуска клиента Chef Infra Client, чтобы определить правильное приложение пакета. Использование ресурса package позволяет создавать рецепт таким образом, чтобы его можно было использовать на многих платформах.

Синтаксис


Блок ресурсов 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
Ресурс windows_package
  • Синтаксис
  • Действия
  • Свойства
  • Общие возможности ресурса
    • Общие свойства
    • Уведомления
    • Ограничения
  • Примеры

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

Spec-Zone.ru

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