Spec-Zone.ru › Chef 18

Ресурс windows_package

Эта страница сгенерирована из исходного кода Chef Infra Client. Чтобы предложить изменение, отредактируйте файл windows_package.rb и отправьте запрос на вытягивание в репозиторий Chef Infra Client.

Все страницы ресурсов Infra


Используйте ресурс windows_package для управления пакетами на платформе Microsoft Windows. Ресурс windows_package поддерживает следующие форматы установщиков:

  • Пакет Microsoft Installer (MSI)
  • Система установки Nullsoft Scriptable Install (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: Строка

Контрольная сумма SHA-256 файла. Используется для предотвращения повторной загрузки файла. Когда локальный файл соответствует контрольной сумме, Chef Infra Client не загружает его. Используйте при указании URL в свойстве source.

installer_type
Тип в Ruby: Символ Допустимые значения: :custom, :inno, :installshield, :msi, :nsis, :wise

Символ, указывающий тип пакета. Возможные значения: :custom (например, установка файла, не являющегося .msi, который включает в себя установщик на базе .msi), :inno (Inno Setup), :installshield (InstallShield), :msi (Пакет Microsoft Installer (MSI)), :nsis (Nullsoft Scriptable Install System (NSIS)), :wise (Wise).

options
Тип в Ruby: Строка

Один или несколько дополнительных параметров, передаваемых команде.

package_name
Тип в Ruby: Строка

Необязательное свойство для установки имени пакета, если оно отличается от имени блока ресурса.

remote_file_attributes
Тип в Ruby: Хэш

Это свойство позволяет определить хэш свойств и их значений, если исходный пакет для установки находится в удаленном месте. Этот хэш будет использоваться подлежащим ресурсом remote_file, который извлечет исходный пакет.

returns
Тип в Ruby: Строка, целое число, массив целых чисел | Значение по умолчанию: 0 (success) and 3010 (success where a reboot is necessary)

Список кодов возврата, разделенных запятыми, которые указывают на успешное или неудачное выполнение команды пакета.

source
Тип в Ruby: Строка | Значение по умолчанию: 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: Строка, целое число | Значение по умолчанию: 600 (seconds)

Время ожидания (в секундах) перед истечением срока действия.

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 Infra Client.

Уведомления

notifies

Тип в Ruby: Символ, '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: Символ, '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, в котором выполняется уведомление. Доступны следующие таймеры:

: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.

Примеры


Следующие примеры демонстрируют различные подходы к использованию ресурса 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 и передаёт хэш, который изменяет свойства ресурса 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/

Spec-Zone.ru

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