Spec-Zone.ru › Chef 16

Ресурс 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
Ресурс remote_directory
  • Синтаксис
  • Действия
  • Свойства
    • Рекурсивные каталоги
  • Общие возможности ресурса
    • Общие свойства
    • Уведомления
    • Защита
    • Рекурсивные каталоги
      • Пример
    • Безопасность файлов Windows
  • Примеры

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

Spec-Zone.ru

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