Spec-Zone.ru › Chef 16

Ресурс homebrew_package

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

Страница справки по ресурсам


Используйте ресурс homebrew_package для управления пакетами на платформе macOS.

Примечание

Начиная с Chef Infra Client 16, ресурс homebrew теперь принимает массив пакетов для одновременной установки нескольких пакетов.

Примечание

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

Новое в Chef Infra Client 12.0.

Синтаксис


Полный синтаксис всех свойств, доступных для ресурса homebrew_package:

homebrew_package 'name' do
  homebrew_user      String, Integer
  options            String, Array
  package_name       String, Array
  source             String
  timeout            String, Integer
  version            String, Array
  action             Symbol # defaults to :install if not specified
end

где:

  • homebrew_package - это ресурс.
  • name - имя блока ресурса.
  • action определяет действия, которые Chef Infra Client предпримет для приведения узла в желаемое состояние.
  • homebrew_user, options, package_name, source, timeout, и version - доступные для этого ресурса свойства.

Действия


Ресурс homebrew_package имеет следующие действия:

:install
По умолчанию. Устанавливает пакет. Если указана версия, устанавливается указанная версия пакета.
:nothing
Этот блок ресурса не выполняется, пока не будет уведомлен другим ресурсом. После уведомления этот блок ресурса выполняется немедленно или помещается в очередь для выполнения в конце выполнения Chef Infra Client.
:purge
Удаляет пакет. Это действие обычно удаляет конфигурационные файлы, а также сам пакет.
:remove
Удаляет пакет.
:upgrade
Устанавливает пакет и/или гарантирует, что пакет является последней версией.

Свойства


Ресурс homebrew_package имеет следующие свойства:

homebrew_user
Тип в Ruby: Строка, Целое число

Имя или UID владельца Homebrew, который будет использоваться Chef Infra Client при выполнении команды.

По умолчанию Chef Infra Client попытается выполнить команду Homebrew от имени владельца /usr/local/bin/brew. Если этот исполняемый файл не существует, Chef Infra Client попытается найти пользователя, выполнив which brew. Если этот исполняемый файл не найден, Chef Infra Client выведет сообщение об ошибке: Could not find the "brew" executable in /usr/local/bin or anywhere on the path.. Используйте атрибут homebrew_user, чтобы указать владельца Homebrew в ситуациях, когда Chef Infra Client не может автоматически определить правильного владельца.

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

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

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

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

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

Необязательный путь к пакету на локальной файловой системе.

timeout
Тип в Ruby: Строка, Целое число

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

version
Тип в Ruby: Строка, Массив

Версия пакета для установки или обновления.

Установка нескольких пакетов

Ресурс может указать несколько пакетов и/или версий для платформ, использующих менеджеры пакетов Apt, Chocolatey, DNF, Homebrew, Pacman или Zypper. Указание нескольких пакетов и/или версий позволяет в рамках одной транзакции:

  • Загрузить указанные пакеты и версии с помощью одной HTTP-транзакции
  • Обновить или установить несколько пакетов с помощью одного ресурса во время выполнения Chef Infra Client

Например, установка нескольких пакетов:

package %w(package1 package2)

Установка нескольких пакетов с версиями:

package %w(package1 package2) do
  version [ '1.3.4-2', '4.3.6-1']
end

Обновление нескольких пакетов:

package %w(package1 package2) do
  action :upgrade
end

Удаление нескольких пакетов:

package %w(package1 package2) do
  action :remove
end

Удаление нескольких пакетов (удаление):

package %w(package1 package2) do
  action :purge
end

Уведомления с неявным именем:

package %w(package1 package2) do
  action :nothing
end

log 'call a notification' do
  notifies :install, 'package[package1, package2]', :immediately
end

Примечание

Уведомления и подписки не требуют обновления при добавлении или удалении пакетов и версий из свойств package_name или version.


Общая функциональность ресурсов


Ресурсы 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.

Множественные пакеты

Ресурс может указать несколько пакетов и/или версий для платформ, использующих менеджеры пакетов Apt, Chocolatey, DNF, Homebrew, Pacman или Zypper. Указание нескольких пакетов и/или версий позволяет одной транзакции:

  • Загрузить указанные пакеты и версии посредством одной HTTP-транзакции
  • Обновить или установить несколько пакетов с помощью одного ресурса во время выполнения Chef Infra Client

Например, установка нескольких пакетов:

package %w(package1 package2)

Установка нескольких пакетов с версиями:

package %w(package1 package2) do
  version [ '1.3.4-2', '4.3.6-1']
end

Обновление нескольких пакетов:

package %w(package1 package2) do
  action :upgrade
end

Удаление нескольких пакетов:

package %w(package1 package2) do
  action :remove
end

Очистка нескольких пакетов:

package %w(package1 package2) do
  action :purge
end

Уведомления, с использованием неявного имени:

package %w(package1 package2) do
  action :nothing
end

log 'call a notification' do
  notifies :install, 'package[package1, package2]', :immediately
end

Примечание

Уведомления и подписки не нужно обновлять при добавлении или удалении пакетов и версий из свойств package_name или version.

Примеры


Следующие примеры демонстрируют различные подходы к использованию ресурса homebrew_package в рецептах:

Установка пакета:

homebrew_package 'git'

Установка нескольких пакетов одновременно:

homebrew_package %w(git fish ruby)

Укажите пользователя Homebrew с UUID

homebrew_package 'git' do
  homebrew_user 1001
end

Укажите пользователя Homebrew со строкой:

homebrew_package 'vim' do
  homebrew_user 'user1'
end
Ресурс homebrew_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/homebrew_package/

Spec-Zone.ru

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