Ресурс remote_directory
Эта страница сгенерирована из исходного кода Chef Infra Client. Чтобы предложить изменение, отредактируйте файл remote_directory.rb и отправьте запрос на добавление в репозиторий Chef Infra Client.
Используйте ресурс remote_directory для поэтапной передачи каталога из кулинарной книги на узел. Каталог, копируемый из кулинарной книги, должен находиться в COOKBOOK_NAME/files/default/REMOTE_DIRECTORY. Ресурс remote_directory будет учитывать специфику файлов.
Синтаксис
Блок ресурса remote_directory передает каталог из кулинарной книги на узел и назначает необходимые права доступа к этому каталогу. Например:
remote_directory '/etc/apache2' do
source 'apache2'
owner 'root'
group 'root'
mode '0755'
action :create
end
где:
-
'/etc/apache2'указывает каталог -
sourceуказывает каталог в текущей кулинарной книге (используйте свойствоcookbookдля указания файла, находящегося в другой кулинарной книге) -
owner,groupиmodeопределяют права доступа
Полный синтаксис всех свойств ресурса remote_directory:
remote_directory 'name' do
cookbook String
files_backup Integer, false # default value: 5
files_group String, Integer
files_mode String, Integer # default value: 0644 on *nix systems
files_owner String, Integer
group String, Integer
inherits true, false
mode String, Integer
overwrite true, false # default value: true
owner String, Integer
path String # default value: 'name' unless specified
purge true, false
recursive true, false
rights Hash
source String
action Symbol # defaults to :create if not specified
endгде:
-
remote_directory— это ресурс. -
name— это имя, данное блоку ресурса. -
actionопределяет шаги, которые Chef Infra Client предпримет для приведения узла к желаемому состоянию. -
cookbook,files_backup,files_group,files_mode,files_owner,group,mode,overwrite,owner,path,purge,recursiveиsource— доступные свойства этого ресурса.
Действия
Ресурс remote_directory имеет следующие действия:
:create- По умолчанию. Создает каталог и/или содержимое этого каталога. Если каталог или его содержимое уже существуют (но не совпадают), обновляет этот каталог или его содержимое, чтобы они соответствовали.
:create_if_missing- Создает каталог и/или содержимое этого каталога, только если он не существует.
:delete- Удаляет каталог, включая содержимое этого каталога.
:nothing- Этот блок ресурса не действует, пока другой ресурс не уведомит его о действии. После уведомления этот блок ресурса либо выполняется немедленно, либо помещается в очередь для выполнения в конце выполнения Chef Infra Client.
Свойства
Ресурс remote_directory имеет следующие свойства:
-
cookbook - Тип Ruby: Строка
Кулинарная книга, в которой находится файл (если он не находится в текущей кулинарной книге). Значение по умолчанию — текущая кулинарная книга.
-
files_backup - Тип Ruby: Целое число, false | Значение по умолчанию:
5Количество резервных копий файлов в каталоге.
-
files_group - Тип Ruby: Строка, Целое число
Настройка прав группы для файлов. Строка или идентификатор, определяющий владельца группы по имени группы, включая полные имена групп, такие как
domain\groupилиgroup@domain. Если это значение не указано, существующие группы остаются неизменными, а новые назначения групп используют стандартную группу POSIX (если доступна).
-
files_mode - Тип Ruby: Строка, Целое число | Значение по умолчанию:
0644 on *nix systemsВосьмеричный режим для файла.
Системы на базе UNIX и Linux: строка из 3-5 символов, определяющая восьмеричный режим, передаваемый в chmod. Например:
'755','0755'или00755. Если значение задано как строка, оно работает точно так же, как если бы была передана командаchmod. Если значение задано как целое число, добавьте ноль (0) к значению, чтобы убедиться, что оно интерпретируется как восьмеричное число. Например, чтобы назначить права чтения, записи и выполнения для всех пользователей, используйте'0777'или'777'; для тех же прав плюс бит «stick» используйте01777или'1777'.Microsoft Windows: строка из 3-5 символов, определяющая восьмеричный режим, который преобразуется в права для безопасности Microsoft Windows. Например:
'755','0755'или00755. Допускаются значения до'0777'(без битов «stick») и они имеют такое же значение в Microsoft Windows, как и в UNIX, где4равноGENERIC_READ,2равноGENERIC_WRITEи1равноGENERIC_EXECUTE. Это свойство не может использоваться для установки:full_control. Это свойство не имеет эффекта, если не указано, но когда оно иrightsуказаны оба, эффекты накапливаются.
-
files_owner - Тип Ruby: Строка, Целое число
Настройка прав владельца для файлов. Строка или идентификатор, определяющий владельца группы по имени пользователя, включая полные имена пользователей, такие как
domain\userилиuser@domain. Если это значение не указано, существующие владельцы остаются неизменными, а новые назначения владельцев используют текущего пользователя (при необходимости).
-
group - Тип Ruby: Целое число, Строка
Используется для настройки прав каталогов. Строка или идентификатор, определяющий владельца группы по имени группы или SID, включая полные имена групп, такие как
domain\groupилиgroup@domain. Если это значение не указано, существующие группы остаются неизменными, а новые назначения групп используют стандартную группуPOSIX(если доступна).
-
inherits - Тип Ruby: true, false | Значение по умолчанию:
trueТолько Microsoft Windows. Наследуют ли файлы права из родительского каталога.
-
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'; для тех же прав плюс бит «stick» используйте01777или'1777'.Microsoft Windows: строка из 3-5 символов, определяющая восьмеричный режим, который преобразуется в права для безопасности Microsoft Windows. Например:
'755','0755'или00755. Допускаются значения до'0777'(без битов «stick») и они имеют такое же значение в Microsoft Windows, как и в UNIX, где4равноGENERIC_READ,2равноGENERIC_WRITEи1равноGENERIC_EXECUTE. Это свойство не может использоваться для установки:full_control. Это свойство не имеет эффекта, если не указано, но когда оно иrightsуказаны оба, эффекты накапливаются.
-
overwrite - Тип Ruby: true, false | Значение по умолчанию:
trueПерезаписывать файл, если он отличается.
-
owner - Тип Ruby: Целое число, Строка
Используется для настройки прав каталогов. Строка или идентификатор, определяющий владельца группы по имени пользователя или SID, включая полные имена пользователей, такие как
domain\userилиuser@domain. Если это значение не указано, существующие владельцы остаются неизменными, а новые назначения владельцев используют текущего пользователя (при необходимости).
-
path - Тип Ruby: Строка | Значение по умолчанию:
The resource block's nameПуть к каталогу. Рекомендуется использовать полный путь, но это не всегда необходимо. Значение по умолчанию:
nameблока ресурса. См. раздел «Синтаксис» выше для получения дополнительной информации.
-
purge - Тип Ruby: true, false | Значение по умолчанию:
falseУдалить лишние файлы, найденные в целевом каталоге.
-
recursive - Тип Ruby: true, false | Значение по умолчанию:
trueРекурсивное создание или удаление каталогов. Chef Infra Client должен иметь возможность создать структуру каталога, включая родительские каталоги (если они отсутствуют), как определено в
COOKBOOK_NAME/files/default/REMOTE_DIRECTORY.
-
rights - Тип Ruby: Целое число, Строка
Только Microsoft Windows. Права для пользователей и групп в среде Microsoft Windows. Например:
rights <permissions>, <principal>, <options>, где<permissions>указывает предоставленные права принципалу,<principal>— имя группы или пользователя, а<options>— словарь с одним (или несколькими) расширенными вариантами прав.
-
source - Тип Ruby: Строка | Значение по умолчанию:
The base portion of the 'path' property.Основное имя файла исходного кода (и выведено из свойства
path). Например, в значении по умолчанию, `/some/path/` будет `path`.
Рекурсивные каталоги
Ресурс remote_directory может использоваться для рекурсивного создания пути за пределами структуры удалённых каталогов, но права доступа к этим внешним путям не управляются. Это происходит потому, что атрибут recursive применяется только group, mode и owner к самому каталогу удалённого расположения и любым внутренним каталогам, которые ресурс копирует.
Структура каталогов:
/foo
/bar
/baz
Следующий пример показывает способ создания файла в каталоге /baz:
remote_directory '/foo/bar/baz' do
owner 'root'
group 'root'
mode '0755'
action :create
end
Но в этом примере значения атрибутов group, mode и owner будут применены только к /baz. Что хорошо, если именно это нужно. Но в большинстве случаев, когда вся структура каталога /foo/bar/baz отсутствует, необходимо явно указать каждый каталог. Например:
%w( /foo /foo/bar /foo/bar/baz ).each do |path|
remote_directory path do
owner 'root'
group 'root'
mode '0755'
end
end
Этот подход создаст правильную иерархию — /foo, затем /bar в /foo, и затем /baz в /bar — а также с правильными значениями атрибутов для group, mode и owner.
Общие функциональные возможности ресурсов
Ресурсы 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[Строка]'
Ресурс может уведомить другой ресурс о выполнении действия при изменении его состояния. Укажите
'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.
Рекурсивные каталоги
Ресурс remote_directory может использоваться для рекурсивного создания пути за пределами структуры удалённых каталогов, но права доступа к этим внешним путям не управляются. Это происходит потому, что атрибут recursive применяется только group, mode и owner к самому каталогу удалённого расположения и любым внутренним каталогам, которые ресурс копирует.
Структура каталогов:
/foo
/bar
/baz
Следующий пример показывает способ создания файла в каталоге /baz:
remote_directory '/foo/bar/baz' do
owner 'root'
group 'root'
mode '0755'
action :create
end
Но в этом примере значения атрибутов group, mode и owner будут применены только к /baz. Что хорошо, если именно это нужно. Но в большинстве случаев, когда вся структура каталога /foo/bar/baz отсутствует, необходимо явно указать каждый каталог. Например:
%w( /foo /foo/bar /foo/bar/baz ).each do |path|
remote_directory path do
owner 'root'
group 'root'
mode '0755'
end
end
Этот подход создаст правильную иерархию — /foo, затем /bar в /foo, и затем /baz в /bar — а также с правильными значениями атрибутов для group, mode и owner.
Пример
Этот раздел содержит более подробный пример того, как Chef Infra Client управляет рекурсивными структурами каталогов:
- Кулинария с именем
cumbria, которая используется для создания веб-сайта - Подкаталог в каталоге
/files/defaultс именем/website - Файл с именем
index.html, который является главной страницей веб-сайта - Каталоги внутри
/websiteс именами/cities,/placesи/football, которые содержат страницы о городах, местах и футбольных командах - Каталог с именем
/images, который содержит изображения
Эти файлы размещаются в каталоге /files/default в кулинарии cumbria, как показано ниже:
cumbria
/files
/default
/website
index.html
/cities
carisle.html
kendal.html
penrith.html
windermere.html
/football
carisle_united.html
/images
carisle_united.png
furness_abbey.png
hadrians_wall.png
kendal.png
/places
furness_abbey.html
hadrians_wall.html
Ресурс remote_directory может использоваться для создания веб-сайта, используя эти файлы. Этот веб-сайт работает на веб-сервере Apache. Ресурс будет похож на следующий:
remote_directory '/var/www/html' do
files_mode '0440'
files_owner 'yan'
mode '0770'
owner 'hamilton'
source 'website'
end
При запуске Chef Infra Client ресурс remote_directory укажет Chef Infra Client скопировать дерево каталогов из кулинарии в файловую систему, используя структуру, определённую в кулинарии:
/var
/www
/html
index.html
/cities
carisle.html
kendal.html
penrith.html
windermere.html
/football
carisle_united.html
/images
carisle_united.png
furness_abbey.png
hadrians_wall.png
kendal.png
/places
furness_abbey.html
hadrians_wall.html
Chef Infra Client будет управлять правами всей структуры каталогов ниже /html, в общей сложности 12 файлов и 4 каталога. Например:
dr-xr-xr-x 2 root root 4096 /var/www/html
dr--r----- 1 yan root 4096 /var/www/html/index.html
drwxrwx--- 2 hamilton root 4096 /var/www/html/cities
dr--r----- 1 yan root 4096 /var/www/html/cities/carlisle.html
dr--r----- 1 yan root 4096 /var/www/html/cities/kendal.html
dr--r----- 1 yan root 4096 /var/www/html/cities/penrith.html
dr--r----- 1 yan root 4096 /var/www/html/cities/windermere.html
drwxrwx--- 2 hamilton root 4096 /var/www/html/football
dr--r----- 1 yan root 4096 /var/www/html/football/carlisle_united.html
drwxrwx--- 2 hamilton root 4096 /var/www/html/images
dr--r----- 1 yan root 4096 /var/www/html/images/carlisle_united/png
dr--r----- 1 yan root 4096 /var/www/html/images/furness_abbey/png
dr--r----- 1 yan root 4096 /var/www/html/images/hadrians_wall.png
dr--r----- 1 yan root 4096 /var/www/html/images/kendal.png
drwxrwx--- 2 hamilton root 4096 /var/www/html/places
dr--r----- 1 yan root 4096 /var/www/html/places/furness_abbey.html
dr--r----- 1 yan root 4096 /var/www/html/places/hadrians_wall.html
Безопасность файлов 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.
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, что гарантирует, что настройки безопасности существующих файлов останутся неизменными.
Примеры
В следующих примерах демонстрируются различные подходы к использованию ресурса remote_directory в рецептах:
Рекурсивно передать каталог из удаленного расположения
# create up to 10 backups of the files
# set the files owner different from the directory
remote_directory '/tmp/remote_something' do
source 'something'
files_backup 10
files_owner 'root'
files_group 'root'
files_mode '0644'
owner 'nobody'
group 'nobody'
mode '0755'
end
Использование с ресурсом chef_handler
В следующем примере показано, как использовать ресурс remote_directory и ресурс chef_handler для перезагрузки обработчика с именем WindowsRebootHandler:
# the following code sample comes from the
# ``reboot_handler`` recipe in the ``windows`` cookbook:
# https://github.com/chef-cookbooks/windows
remote_directory node['chef_handler']['handler_path'] do
source 'handlers'
recursive true
action :create
end
chef_handler 'WindowsRebootHandler' do
source "#{node['chef_handler']['handler_path']}/windows_reboot_handler.rb"
arguments node['windows']['allow_pending_reboots']
supports :report => true, :exception => false
action :enable
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_directory/