Spec-Zone.ru › Chef 17

Ресурс remote_file

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

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


Используйте ресурс remote_file для передачи файла из удалённого расположения с использованием специфичности к файлам. Этот ресурс похож на ресурс file.

Примечание

Загрузка файлов из каталога files/ в кулинарной книге должна выполняться с помощью ресурса cookbook_file.

Синтаксис


Блок ресурса remote_file управляет файлами, используя удалённые файлы. Например, чтобы записать домашнюю страницу веб-сайта Apache:

remote_file '/var/www/customers/public_html/index.html' do
  source 'http://somesite.com/index.html'
  owner 'web_admin'
  group 'web_admin'
  mode '0755'
  action :create
end

где:

  • '/var/www/customers/public_html/index.html' — путь к файлу, который должен быть создан
  • 'http://somesite.com/index.html' указывает расположение удалённого файла, откуда происходит загрузка файла
  • owner, group, и mode определяют права доступа

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

remote_file 'name' do
  atomic_update              true, false
  authentication             # default value: remote
  backup                     Integer, false # default value: 5
  checksum                   String
  content                    String, nil
  force_unlink               true, false # default value: false
  ftp_active_mode            true, false # default value: false
  group                      String, Integer
  headers                    Hash
  inherits                   true, false
  manage_symlink_source      true, false
  mode                       String, Integer
  notifies                   # see description
  owner                      String, Integer
  path                       String # defaults to 'name' if not specified
  rights                     Hash
  source                     String, Array
  subscribes                 # see description
  use_conditional_get        true, false
  verify                     String, Block
  remote_domain              String
  remote_password            String
  remote_user                String
  show_progress              true, false # default value: false
  use_etag                   true, false # default value: true
  use_last_modified          true, false # default value: true
  sensitive                  true, false # default value: false
  verifications              Array
  action                     Symbol # defaults to :create if not specified
end

где:

  • remote_file — ресурс.
  • name — имя, заданное для блока ресурса.
  • action определяет, какие шаги Chef Infra Client предпримет для приведения узла в желаемое состояние.
  • atomic_update, authentication, backup, checksum, content, force_unlink, ftp_active_mode, group, headers, http_options, manage_symlink_source, mode, owner, path, remote_domain, remote_password, remote_user, show_progress, ssl_verify_mode, use_etag, и use_last_modified — доступные для этого ресурса свойства.

Действия


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

:create
По умолчанию. Создать файл. Если файл уже существует (но не соответствует), обновить этот файл, чтобы он соответствовал.
:create_if_missing
Создать файл только в том случае, если он не существует. Если файл существует, ничего не происходит.
:delete
Удалить файл.
:nothing
Этот блок ресурса не действует, пока другой ресурс не сообщит ему о выполнении действия. После получения сообщения, этот блок ресурса выполняется немедленно или помещается в очередь для выполнения в конце выполнения Chef Infra Client.
:touch
Изменить метку файла. Это обновляет время доступа (atime) и время изменения файла (mtime). (Это действие может использоваться с этим ресурсом, но обычно используется только с ресурсом file.)

Свойства


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

atomic_update
Тип Ruby: true, false | Значение по умолчанию: False if modifying /etc/hosts, /etc/hostname, or /etc/resolv.conf within Docker containers. Otherwise default to the client.rb 'file_atomic_update' config value.

Выполнять атомарные обновления файлов на основе каждого ресурса. Установите в значение true для атомарных обновлений файлов. Установите в значение false для неатомарных обновлений файлов. Это значение переопределяет file_atomic_update, которое является глобальным значением, найденным в файле client.rb.

authentication
Тип Ruby: Символ | Значение по умолчанию: :remote Разрешенные значения: :local, :remote
backup
Тип Ruby: Целое число, false | Значение по умолчанию: 5

Количество резервных копий, которые нужно сохранить в /var/chef/backup (для платформ на основе UNIX и Linux) или C:/chef/backup (для платформы Microsoft Windows). Установите в false, чтобы не сохранять резервные копии.

checksum
Тип Ruby: Строка

Необязательно, см. use_conditional_get. Сумма контрольной цифры SHA-256 файла. Используется для предотвращения повторной загрузки файла. Если локальный файл соответствует контрольной сумме, Chef Infra Client не загружает его.

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

Как Chef Infra Client обрабатывает определённые ситуации, когда целевой файл оказывается не файлом. Например, когда целевой файл на самом деле является символической ссылкой. Установите в true для Chef Infra Client, чтобы удалить целевой объект, который не является файлом, и заменить его указанным файлом. Установите в false для Chef Infra Client, чтобы выдать ошибку.

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

Использует ли Chef Infra Client активный или пассивный FTP. Установите в true для использования активного FTP.

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

Строка или идентификатор, который идентифицирует владельца группы по имени группы или SID, включая полностью квалифицированные имена групп, такие как domain\group или group@domain. Если это значение не указано, существующие группы остаются без изменений, а новые назначения групп используют группу по умолчанию POSIX (если доступна).

headers
Тип Ruby: Хэш | Значение по умолчанию: {}

Хэш пользовательских заголовков. Например:

headers({ "Cookie" => "user=user_name; pass=p@ssw0rd!" })

или:

headers({ "Referer" => "#{header}" })

или:

headers( "Authorization"=>"Basic #{ Base64.encode64("#{username}:#{password}").gsub("\n", "") }" )
inherits
Тип Ruby: true, false | Значение по умолчанию: true

Только Microsoft Windows. Наследует ли файл права из родительского каталога.

http_options
Тип Ruby: Хэш | Значение по умолчанию: {}

Хэш пользовательских параметров HTTP. Например: http_options({ http_retry_count: 0, http_retry_delay: 2 })

Новое в Chef Infra Client 17.5

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

(с предупреждением)

Изменить поведение ресурса файла, если он указывает на символическую ссылку. Когда это значение установлено в true, Chef Infra Client будет управлять правами символической ссылки или заменит символическую ссылку обычным файлом, если у ресурса есть содержимое. Когда это значение установлено в false, Chef Infra Client будет следовать символической ссылке и будет управлять правами и содержимым целевого файла символической ссылки.

Поведение по умолчанию — true, но выводится предупреждение, что значение по умолчанию будет изменено на false в будущей версии; явное указание значения true или false подавляет это предупреждение.

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

Заключённая в кавычки строка длиной от 3 до 5 символов, определяющая восьмеричный режим. Например: '755', '0755', или 00755. Если mode не указано и если файл уже существует, используется существующий режим файла. Если mode не указано, файл не существует и действие :create указано, Chef Infra Client предполагает значение маски '0777' и затем применяет значение umask для системы, на которой файл должен быть создан, к значению mask. Например, если umask в системе — '022', Chef Infra Client использует значение по умолчанию '0755'.

Поведение различается в зависимости от платформы.

Системы на базе UNIX и Linux: Заключённая в кавычки строка длиной от 3 до 5 символов, определяющая восьмеричный режим, передаваемый в chmod. Например: '755', '0755', или 00755. Если значение указано как строка в кавычках, оно работает точно так же, как если бы команда chmod была передана. Если значение указано как целое число, добавьте ноль (0) к значению, чтобы убедиться, что оно интерпретируется как восьмеричное число. Например, чтобы назначить права чтения, записи и выполнения для всех пользователей, используйте '0777' или '777'; для тех же прав плюс бит «приклеивания» используйте 01777 или '1777'.

Microsoft Windows: Заключённая в кавычки строка длиной от 3 до 5 символов, определяющая восьмеричный режим, который преобразуется в права для безопасности Microsoft Windows. Например: '755', '0755', или 00755. Разрешены значения до '0777' (без битов «приклеивания»), которые имеют тот же смысл в Microsoft Windows, что и в UNIX, где 4 равно GENERIC_READ, 2 равно GENERIC_WRITE, и 1 равно GENERIC_EXECUTE. Это свойство не может использоваться для установки :full_control. Это свойство не имеет эффекта, если не указано, но когда оно и rights указаны оба, эффекты являются кумулятивными.

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

Строка или идентификатор, который идентифицирует владельца группы по имени пользователя или SID, включая полностью квалифицированные имена пользователей, такие как domain\user или user@domain. Если это значение не указано, существующие владельцы остаются без изменений, и новые назначения владельцев используют текущего пользователя (при необходимости).

path
Тип Ruby: Строка | Значение по умолчанию: The resource block's name

Полный путь к файлу, включая имя файла и его расширение. Значение по умолчанию: name блока ресурса. См. раздел «Синтаксис» выше для получения дополнительной информации.

remote_domain
Тип Ruby: Строка

Только Windows Домен пользователя, указанный свойством remote_user. По умолчанию ресурс будет авторизован в домене удаленной системы или как локальный пользователь, если удаленная система не присоединена к домену. Если удаленная система не входит в домен, необходимо авторизоваться как локальный пользователь на удаленной системе, установив домен в ., например: remote_domain ‘.’. Домен также может быть указан как часть свойства remote_user.

Новое в Chef Client 13.4

remote_password
Тип Ruby: Строка

Только Windows Пароль пользователя, указанный свойством remote_user. Это свойство обязательно, если указано remote_user, и может быть указано только при наличии remote_user . Свойство sensitive для этого ресурса будет автоматически установлено в значение true, если указано remote_password.

Новое в Chef Client 13.4

remote_user
Тип Ruby: Строка

Только Windows Имя пользователя с доступом к удаленному файлу, указанному свойством source. Имя пользователя может быть необязательно указано с доменом, например: domain\user или user@my.dns.domain.com в формате Universal Principal Name (UPN). Домен также может быть задан с помощью свойства remote_domain . Обратите внимание, что это свойство игнорируется, если source не является UNC-путем. Если это свойство указано, то обязательно указать свойство remote_password.

Новое в Chef Client 13.4

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

Только Microsoft Windows. Разрешения для пользователей и групп в среде Microsoft Windows. Например: rights <permissions>, <principal>, <options>, где <permissions> указывает права, предоставленные субъекту, <principal> — имя группы или пользователя, а <options> — словарь с одним (или несколькими) расширенными параметрами прав.

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

Обязательное. Путь к исходному файлу. Путь к исходному файлу может быть HTTP (http://), FTP (ftp://), SFTP (sftp://), локальный (file:///) или UNC (\\host\share\file.tar.gz).

Существует множество способов определить расположение исходного файла. Используя путь:

source 'http://couchdb.apache.org/img/sketch.png'

Используя FTP:

source 'ftp://remote_host/path/to/img/sketch.png'

Используя SFTP:

source 'sftp://username:password@remote_host:22/path/to/img/sketch.png'

Используя локальный путь:

source 'file:///path/to/img/sketch.png'

Используя Microsoft Windows UNC:

source '\\\\path\\to\\img\\sketch.png'

Используя атрибут узла:

source node['nginx']['foo123']['url']

Используя атрибуты для определения путей:

source "#{node['python']['url']}/#{version}/Python-#{version}.tar.bz2"

Определяя несколько путей для нескольких расположений:

source 'http://seapower/spring.png', 'http://seapower/has_sprung.png'

Определяя те же несколько путей как массив:

source ['http://seapower/spring.png', 'http://seapower/has_sprung.png']

Когда указано несколько путей, Chef Infra Client будет пытаться загрузить файлы в указанном порядке, останавливаясь после первой успешной загрузки.

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

Включить условные HTTP-запросы, используя условный GET (с заголовком If-Modified-Since) или неявный идентификатор (ETag). Чтобы использовать заголовки If-Modified-Since, use_last_modified также должно быть установлено в true. Чтобы использовать заголовки ETag, use_etag также должно быть установлено в true.

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

Отображает процесс загрузки файла.

ssl_verify_mode
Тип Ruby: Символ Допустимые значения: :verify_none, :verify_peer

Необязательное свойство для переопределения политики SSL. Если не указано, используется политика SSL из config.rb.

Новое в Chef Infra Client 16.2

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

Включить заголовки ETag. Установите в false для отключения заголовков ETag. Чтобы использовать это значение, use_conditional_get также должно быть установлено в true.

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

Включить заголовки If-Modified-Since. Установите в false для отключения заголовков If-Modified-Since. Чтобы использовать это значение, use_conditional_get также должно быть установлено в true.

verify
Тип Ruby: Строка, блок

Блок или строка, возвращающая true или false. Строка, когда true выполняется как системная команда.

Блок — произвольный код Ruby, определенный в блоке ресурса с использованием свойства verify. Когда блок true, Chef Infra Client продолжит обновлять файл как положено.

Например, это должно вернуть true:

remote_file '/tmp/baz' do
  verify { 1 == 1 }
end

Это должно вернуть true:

remote_file '/etc/nginx.conf' do
  verify 'nginx -t -c %{path}'
end

Это должно вернуть true:

remote_file '/tmp/bar' do
  verify { 1 == 1}
end

И это должно вернуть true:

remote_file '/tmp/foo' do
  verify do |path|
    true
  end
end

В то время как это должно вернуть false:

remote_file '/tmp/turtle' do
  verify '/usr/bin/false'
end

Если строка или блок возвращают false, выполнение Chef Infra Client прекратится, и будет возвращено сообщение об ошибке.

Атомарные обновления файлов

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

Атомарные обновления включены по умолчанию. Они могут быть управляемы глобально с помощью настройки file_atomic_update в файле client.rb. Они могут быть управляемы на уровне каждого ресурса с помощью свойства atomic_update, доступного с ресурсами cookbook_file, file, remote_file и template.

Примечание

На определённых платформах после перемещения файла в нужное место Chef Infra Client может изменить разрешения файла для поддержки функций, специфичных для этих платформ. На платформах с включённым SELinux Chef Infra Client исправит контексты безопасности после перемещения файла в нужное место, выполнив команду restorecon. На платформе Microsoft Windows Chef Infra Client создаст файлы так, чтобы наследование ACL работало должным образом.

Безопасность файлов в Windows

Для поддержки безопасности в Microsoft Windows ресурсы template, file, remote_file, cookbook_file, directory и remote_directory поддерживают использование наследования и списков управления доступом (ACL) внутри рецептов. Списки управления доступом (ACL)

Свойство rights может использоваться в рецептах для управления списками управления доступом (ACL), которые позволяют предоставлять права нескольким пользователям и группам. Свойство rights может использоваться столько раз, сколько необходимо; Chef Infra Client будет применять их к файлу или каталогу по мере необходимости. Синтаксис свойства rights следующий:

rights permission, principal, option_type => value

где

permission

Используется для указания прав, предоставляемых principal. Возможные значения: :read, :write, read_execute, :modify, :full_control, или целое число.

Целые числа, используемые для прав, должны соответствовать следующему списку FileSystemRights Enum полей.

These permissions are cumulative. If `:write` is specified, then it
includes `:read`. If `:full_control` is specified, then it includes
both `:write` and `:read`.

(For those who know the Microsoft Windows API: `:read` corresponds
to `GENERIC_READ`; `:write` corresponds to `GENERIC_WRITE`;
`:read_execute` corresponds to `GENERIC_READ` and `GENERIC_EXECUTE`;
`:modify` corresponds to `GENERIC_WRITE`, `GENERIC_READ`,
`GENERIC_EXECUTE`, and `DELETE`; `:full_control` corresponds to
`GENERIC_ALL`, which allows a user to change the owner and other
metadata about a file.)
principal

Используется для указания группы или пользователя. Субъект может быть указан по имени или SID. При использовании имени это идентично тому, что вводится в поле входа для Microsoft Windows, например user_name, domain\user_name, или user_name@fully_qualified_domain_name. При использовании SID вы можете использовать либо стандартное строковое представление SID (S-R-I-S-S), либо одно из констант строк SDDL. Chef Infra Client не нужно знать, является ли субъект пользователем или группой.

option_type

Словарь, содержащий расширенные параметры прав. Например, права на каталог, которые применяются только к первому уровню дочерних элементов, могут выглядеть примерно так: rights :write, 'domain\group_name', :one_level_deep => true. Возможные типы параметров:

Тип параметра Описание
:applies_to_children Указывает, как права применяются к дочерним элементам. Возможные значения: true — наследовать как дочерние каталоги, так и файлы; false — не наследовать никакие дочерние каталоги или файлы; :containers_only — наследовать только дочерние каталоги (но не файлы); :objects_only — рекурсивно наследовать файлы (но не дочерние каталоги).
:applies_to_self Указывает, применяется ли разрешение к родительскому каталогу. Возможные значения: true — применить к родительскому каталогу или файлу и его дочерним элементам; false — не применять только к дочерним каталогам и файлам.
:one_level_deep Указывает глубину, до которой будут применяться права. Возможные значения: true — применить только к первому уровню дочерних элементов; false — применить ко всем дочерним элементам.

Например:

resource 'x.txt' do
  rights :read, 'S-1-1-0'
  rights :write, 'domain\group'
  rights :full_control, 'group_name_or_user_name'
  rights :full_control, 'user_name', applies_to_children: true
end

или:

rights :read, %w(Administrators Everyone)
rights :full_control, 'Users', applies_to_children: true
rights :write, 'Sally', applies_to_children: :containers_only, applies_to_self: false, one_level_deep: true

Некоторые другие важные моменты при использовании атрибута rights:

  • Остаются только унаследованные права. Все существующие явные права на объект удаляются и заменяются.
  • Если права не указаны, ничего не изменится. Chef Infra Client не очищает права на файл или каталог, если права не указаны.
  • Изменение унаследованных прав может быть дорогостоящим. Microsoft Windows будет рекурсивно распространять права на всех потомков из-за наследования. Это нормальная особенность Microsoft Windows, поэтому следует рассмотреть частоту необходимости такого действия и принять меры по контролю за таким действием, если производительность является первоочередной задачей.

Используйте свойство deny_rights, чтобы запретить определенные права определенным пользователям. Порядок не зависит от использования свойства rights. Например, не имеет значения, если права предоставляются всем, перед или после deny_rights :read, ['Julian', 'Lewis'], как Джулиан, так и Луис не смогут читать документ. Например:

resource 'x.txt' do
  rights :read, 'Everyone'
  rights :write, 'domain\group'
  rights :full_control, 'group_name_or_user_name'
  rights :full_control, 'user_name', applies_to_children: true
  deny_rights :read, %w(Julian Lewis)
end

или:

deny_rights :full_control, ['Sally']
Наследование

По умолчанию файл или каталог наследуют права из родительского каталога. В большинстве случаев это предпочтительное поведение, но иногда может потребоваться принять меры для более точного управления правами. Свойство inherits можно использовать для указания Chef Infra Client на применение (или не применение) унаследованных прав из родительского каталога.

Например, в следующем примере задаются права для каталога:

directory 'C:\mordor' do
  rights :read, 'MORDOR\Minions'
  rights :full_control, 'MORDOR\Sauron'
end

а затем в следующем примере показано, как использовать наследование, чтобы запретить доступ к дочернему каталогу:

directory 'C:\mordor\mount_doom' do
  rights :full_control, 'MORDOR\Sauron'
  inherits false # Sauron is the only person who should have any sort of access
end

Если вместо этого использовалось бы разрешение deny_rights, что-то могло бы пройти незамеченным, если бы не были запрещены все пользователи и группы.

Другой пример также демонстрирует, как задать права для каталога:

directory 'C:\mordor' do
  rights :read, 'MORDOR\Minions'
  rights :full_control, 'MORDOR\Sauron'
  rights :write, 'SHIRE\Frodo' # Who put that there I didn't put that there
end

но затем не использовать свойство inherits, чтобы запретить эти права в дочернем каталоге:

directory 'C:\mordor\mount_doom' do
  deny_rights :read, 'MORDOR\Minions' # Oops, not specific enough
end

Поскольку свойство inherits не указано, Chef Infra Client по умолчанию установит его в значение true, что обеспечит сохранение неизменными параметров безопасности для существующих файлов.

Предотвращение повторных загрузок

Чтобы предотвратить повторную загрузку файлов Chef Infra Client, которые уже присутствуют на узле, используйте один из следующих атрибутов в рецепте: use_conditional_get (по умолчанию) или checksum.

  • Атрибут use_conditional_get — это поведение Chef Infra Client по умолчанию. Если удаленный файл находится на сервере, поддерживающем заголовки ETag и/или If-Modified-Since, Chef Infra Client будет использовать условный запрос GET для определения того, обновлялся ли файл. Если файл был обновлён, Chef Infra Client перескачает файл.
  • Атрибут checksum попросит Chef Infra Client сравнить контрольную сумму локального файла с контрольной суммой в удалённом месте. Если они совпадают, Chef Infra Client не перескачает файл. Использование локальной контрольной суммы для сравнения требует, чтобы локальная контрольная сумма была верной.

Желаемый подход зависит от желаемого рабочего процесса. Например, если узел требует нового файла каждый день, использование подхода с контрольной суммой потребует обновления и/или проверки локальной контрольной суммы каждый день, чтобы убедиться, что локальная контрольная сумма верна. Использование условного запроса GET в этом случае значительно упростит управление, необходимое для обеспечения точного обновления файлов.

Доступ к удалённому пути UNC на Windows

Ресурс remote_file на Windows поддерживает доступ к файлам из удалённой общей папки SMB/CIFS. Имя файла должно быть указано в свойстве source как путь UNC, например, \myserver\myshare\mydirectory\myfile.txt. Это позволяет получить доступ к файлу по этому пути, даже если процесс Chef Infra Client не имеет разрешений на доступ к файлу. Данные для аутентификации на удалённой системе можно указать с помощью свойств remote_user, remote_domain и remote_password, когда пользователь, под которым выполняется Chef Infra Client, не имеет доступа к удалённому файлу. Подробные сведения о параметрах см. в разделе «Свойства».

Примечание: Это в основном для доступа к удалённым файлам, когда пользователь, под которым выполняется Chef Infra Client, не имеет достаточных прав доступа, и необходимо указать альтернативные учетные данные. Если пользователь уже имеет доступ, указывать учетные данные не нужно. В случае, когда локальная и удалённая системы находятся в одной домене, часто не нужно указывать свойства remote_user и remote_password, поскольку пользователь может уже иметь доступ к удалённой общей папке.

Примеры:

Доступ к файлу от учётной записи другого домена:

remote_file 'E:/domain_test.txt' do
  source '\\myserver\myshare\mydirectory\myfile.txt'
  remote_domain 'domain'
  remote_user 'username'
  remote_password 'password'
end

ИЛИ

remote_file 'E:/domain_test.txt' do
  source '\\myserver\myshare\mydirectory\myfile.txt'
  remote_user 'domain\username'
  remote_password 'password'
end

Доступ к файлу с использованием локальной учётной записи на удалённой машине:

remote_file 'E:/domain_test.txt' do
  source '\\myserver\myshare\mydirectory\myfile.txt'
  remote_domain '.'
  remote_user 'username'
  remote_password 'password'
end

ИЛИ

remote_file 'E:/domain_test.txt' do
  source '\\myserver\myshare\mydirectory\myfile.txt'
  remote_user '.\username'
  remote_password 'password'
end

Примеры


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

Загрузка файла без проверки контрольной суммы:

  remote_file '/tmp/remote.txt' do
    source 'https://example.org/remote.txt'
  end

Загрузка файла с контрольной суммой для проверки:

  remote_file '/tmp/test_file' do
    source 'http://www.example.com/tempfiles/test_file'
    mode '0755'
    checksum '3a7dac00b1' # A SHA256 (or portion thereof) of the file.
  end

Загрузка файла только если он ещё не присутствует:

  remote_file '/tmp/remote.txt' do
    source 'https://example.org/remote.txt'
    checksum '3a7dac00b1' # A SHA256 (or portion thereof) of the file.
    action :create_if_missing
  end

Использование HTTP Basic Authentication в заголовках:

  remote_file '/tmp/remote.txt' do
    source 'https://example.org/remote.txt'
    headers('Authorization' => "Basic #{Base64.encode64("USERNAME_VALUE:PASSWORD_VALUE").delete("\n")}")
    checksum '3a7dac00b1' # A SHA256 (or portion thereof) of the file.
    action :create_if_missing
  end

Загрузка файла в каталог кэша файлов Chef для выполнения:

  remote_file '#{Chef::Config['file_cache_path']}/install.sh' do
    source 'https://example.org/install.sh'
    action :create_if_missing
  end

  execute '#{Chef::Config['file_cache_path']}/install.sh'

Указание расширенных параметров HTTP-соединения, включая параметры Net::HTTP (nethttp):

  remote_file '/tmp/remote.txt' do
    source 'https://example.org/remote.txt'
    http_options({
      http_retry_delay: 0,
      http_retry_count: 0,
      keepalives: false,
      nethttp: {
        continue_timeout: 5,
        max_retries: 5,
        read_timeout: 5,
        write_timeout: 5,
        ssl_timeout: 5,
      },
    })
  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/remote_file/

Spec-Zone.ru

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