Spec-Zone.ru › Chef 16

Ресурс subversion

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

Страница ссылок на ресурсы


Используйте ресурс subversion для управления ресурсами системы контроля версий, которые существуют в репозитории Subversion.

Предупреждение

Ресурс subversion имеет известные ошибки и может работать некорректно. Для получения дополнительной информации см. проблемы Chef на GitHub, в частности #4050 и #4257.

Синтаксис


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

subversion 'name' do
  destination        String # default value: 'name' unless specified
  environment        Hash
  group              String, Integer
  repository         String
  revision           String # default value: "HEAD"
  svn_arguments      String, false # default value: "--no-auth-cache"
  svn_binary         String
  svn_info_args      String, false # default value: "--no-auth-cache"
  svn_password       String
  svn_username       String
  timeout            Integer
  user               String, Integer
  action             Symbol # defaults to :sync if not specified
end

где:

  • subversion — это ресурс.
  • name — это имя, присвоенное блоку ресурса.
  • action определяет, какие действия будет выполнять клиент Chef Infra для приведения узла в желаемое состояние.
  • destination, environment, group, repository, revision, svn_arguments, svn_binary, svn_info_args, svn_password, svn_username, timeout, и user — это свойства, доступные для этого ресурса.

Действия


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

:checkout
Клонирование или выгрузка исходного кода. Если выгрузка доступна, этот провайдер ничего не делает.
:export
Экспорт исходного кода без артефактов системы контроля версий.
:force_export
Экспорт исходного кода без артефактов системы контроля версий и принудительный экспорт исходного кода с перезаписью существующей копии (если она существует).
:nothing
Этот блок ресурса не выполняет никаких действий, если не получит уведомление от другого ресурса о необходимости выполнить действие. После получения уведомления этот блок ресурса либо выполняется немедленно, либо помещается в очередь для выполнения в конце работы клиента Chef Infra.
:sync
Действие по умолчанию. Обновление исходного кода до указанной версии или получение нового клона или выгрузки. Это действие приводит к жесткому сбросу индекса и рабочей области, отбрасывая все несохраненные изменения.

Свойства


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

destination
Тип Ruby: String | Значение по умолчанию: The resource block's name

Путь к расположению, в которое нужно клонировать, выгрузить или экспортировать исходный код. Значение по умолчанию: имя блока ресурса.

environment
Тип Ruby: Hash

Хэш переменных среды в формате ({‘ENV_VARIABLE’ => ‘VALUE’}).

group
Тип Ruby: String, Integer

Системная группа, которой будет принадлежать выгруженный код.

repository
Тип Ruby: String

URI репозитория кода.

revision
Тип Ruby: String | Значение по умолчанию: HEAD

Ветвь, тег или коммит, которые необходимо синхронизировать с git. Это может быть символьное значение, например HEAD, или идентификатор ревизии, специфичный для системы управления версиями.

svn_arguments
Тип Ruby: String, false | Значение по умолчанию: --no-auth-cache

Дополнительные аргументы, передаваемые в команду Subversion.

svn_binary
Тип Ruby: String

Расположение двоичного файла svn.

svn_info_args
Тип Ruby: String, false | Значение по умолчанию: --no-auth-cache

Используется, когда команда svn info используется клиентом Chef Infra и необходимо передать аргументы. Команда svn_arguments не работает, когда используется команда svn info.

svn_password
Тип Ruby: String

Пароль пользователя, имеющего доступ к репозиторию Subversion.

svn_username
Тип Ruby: String

Имя пользователя, имеющего доступ к репозиторию Subversion.

timeout
Тип Ruby: Integer

Время ожидания (в секундах) выполнения команды до истечения времени ожидания. Когда это свойство указывается с помощью ресурса deploy, значение свойства timeout передается из ресурса deploy в ресурс subversion.

user
Тип Ruby: String, Integer | Значение по умолчанию: `HOME` environment variable of the user running chef-client

Системный пользователь, которому будет принадлежать выгруженный код.


Общие функции ресурса


Ресурсы Chef включают общие свойства, уведомления и средства защиты ресурсов.

Общие свойства

Следующие свойства являются общими для каждого ресурса:

compile_time

Тип Ruby: true, false | Значение по умолчанию: false

Управление фазой, во время которой ресурс выполняется на узле. Установите значение true для выполнения во время построения коллекции ресурсов (compile phase). Установите значение false для выполнения во время настройки узла клиентом Chef Infra (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, когда выполняется уведомление. Доступны следующие таймеры:

:before

Указывает, что действие для уведомленного ресурса должно быть выполнено до обработки блока ресурса, в котором находится уведомление.

:delayed

Значение по умолчанию. Указывает, что уведомление должно быть помещено в очередь, а затем выполнено в конце работы клиента Chef Infra.

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

: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 Client ничего не делать.

Свойства

Ниже перечислены свойства, которые могут использоваться для определения защиты, которая оценивается во время фазы выполнения выполнения Chef Infra Client:

not_if

Предотвратить выполнение ресурса, когда условие возвращает true.

only_if

Разрешить выполнение ресурса только в том случае, если условие возвращает true.

Примеры


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

Получить последнюю версию приложения

subversion 'CouchDB Edge' do
  repository 'http://svn.apache.org/repos/asf/couchdb/trunk'
  revision 'HEAD'
  destination '/opt/my_sources/couch'
  action :sync
end
Ресурс subversion
  • Синтаксис
  • Действия
  • Свойства
  • Общие функции ресурса
    • Общие свойства
    • Уведомления
    • Защиты
  • Примеры

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

Spec-Zone.ru

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