Ресурс remote_directory
Эта страница сгенерирована из исходного кода Chef. Чтобы предложить изменение, отредактируйте файл remote_directory.rb и отправьте запрос на вытягивание в репозиторий Chef.
Страница справочника по ресурсам
Используйте ресурс 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 для приведения узла в желаемое состояние. -
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.
Свойства
Ресурс remote_directory имеет следующие свойства:
cookbook-
Тип Ruby: String
Поваренная книга, в которой находится файл (если он не находится в текущей поваренной книге). Значение по умолчанию — текущая поваренная книга.
files_backup-
Тип Ruby: Integer, false | Значение по умолчанию:
5Количество резервных копий, которые необходимо сохранить для файлов в каталоге.
files_group-
Тип Ruby: String, Integer
Настройка разрешений группы для файлов. Строка или идентификатор, который идентифицирует владельца группы по имени группы или SID, включая полные квалифицированные имена групп, такие как
domain\groupилиgroup@domain. Если это значение не указано, существующие группы остаются неизменными, а новые назначения групп используют группуPOSIXпо умолчанию (если доступна).
files_mode-
Тип Ruby: String, Integer | Значение по умолчанию:
0644 on *nix systemsОктальный режим для файла.
Системы на базе 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указаны оба, эффекты суммируются.
files_owner-
Тип Ruby: String, Integer
Настройка разрешений владельца для файлов. Строка или идентификатор, который идентифицирует владельца группы по имени пользователя или SID, включая полные квалифицированные имена пользователей, такие как
domain\userилиuser@domain. Если это значение не указано, существующие владельцы остаются неизменными, а новые назначения владельцев используют текущего пользователя (при необходимости).
group-
Тип Ruby: Integer, String
Используется для настройки разрешений для каталогов. Строка или идентификатор, который идентифицирует владельца группы по имени группы или SID, включая полные квалифицированные имена групп, такие как
domain\groupилиgroup@domain. Если это значение не указано, существующие группы остаются неизменными, а новые назначения групп используют группуPOSIXпо умолчанию (если доступна).
inherits-
Тип Ruby: true, false | Значение по умолчанию:
trueТолько Microsoft Windows. Наследует ли файл права от своего родительского каталога.
mode-
Тип Ruby: Integer, String
Строка из 3-5 символов в кавычках, которая определяет октальный режим. Например:
'755','0755'или00755. Еслиmodeне указано и каталог уже существует, используется существующий режим каталога. Еслиmodeне указано, каталог не существует, и указано действие:create, клиент Chef Infra предполагает значение маски'0777', а затем применяет umask для системы, на которой должен быть создан каталог, к значениюmask. Например, если umask в системе равен'022', клиент Chef Infra использует значение по умолчанию'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указаны оба, эффекты суммируются.
overwrite-
Тип Ruby: true, false | Значение по умолчанию:
trueПерезаписать файл, если он отличается.
owner-
Тип Ruby: Integer, String
Используется для настройки разрешений для каталогов. Строка или идентификатор, который идентифицирует владельца группы по имени пользователя или SID, включая полные квалифицированные имена пользователей, такие как
domain\userилиuser@domain. Если это значение не указано, существующие владельцы остаются неизменными, а новые назначения владельцев используют текущего пользователя (при необходимости).
path-
Тип Ruby: String | Значение по умолчанию:
The resource block's nameПуть к каталогу. Рекомендуется использовать полный квалифицированный путь, но это не всегда обязательно. Значение по умолчанию:
nameблока ресурсов. См. раздел «Синтаксис» выше для получения дополнительной информации.
purge-
Тип Ruby: true, false | Значение по умолчанию:
falseОчистить лишние файлы, найденные в целевом каталоге.
recursive-
Тип Ruby: true, false | Значение по умолчанию:
trueСоздавать или удалять каталоги рекурсивно. Клиент Chef Infra должен иметь возможность создавать структуру каталогов, включая родительские каталоги (если отсутствуют), как определено в
COOKBOOK_NAME/files/default/REMOTE_DIRECTORY.
rights-
Тип Ruby: Integer, String
Только Microsoft Windows. Разрешения для пользователей и групп в среде Microsoft Windows. Например:
rights <permissions>, <principal>, <options>, где<permissions>указывает права, предоставленные участнику,<principal>— это имя группы или пользователя, а<options>— это Hash с одним (или несколькими) дополнительными параметрами прав.
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 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.
Рекурсивные директории
Ресурс 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 будет управлять разрешениями всей структуры каталогов ниже /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 применит их к файлу или каталогу по мере необходимости. Синтаксис свойства rights следующий:
rights permission, principal, option_type => value
где
permission-
Используется для указания прав, предоставляемых
principal. Возможные значения::read,:write,read_execute,:modifyи:full_control.Эти разрешения суммируются. Если указано
:write, то это включает в себя:read. Если указано:full_control, то это включает в себя как:write, так и:read.(Для тех, кто знаком с API Microsoft Windows:
:readсоответствуетGENERIC_READ;:writeсоответствуетGENERIC_WRITE;:read_executeсоответствуетGENERIC_READиGENERIC_EXECUTE;:modifyсоответствуетGENERIC_WRITE,GENERIC_READ,GENERIC_EXECUTEиDELETE;:full_controlсоответствуетGENERIC_ALL, что позволяет пользователю изменять владельца и другие метаданные файла.) 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 не нужно знать, является ли субъект пользователем или группой.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 не очищает права на файл или каталог, если права не указаны.
- Изменение унаследованных прав может быть дорогостоящим. 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 применять (или не применять) унаследованные права от родительского каталога.
Например, следующий пример определяет права для каталога:
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 установит его по умолчанию как 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/