Puppet следует концепции клиента и сервера, где один компьютер в установке работает как серверный компьютер с запущенным на нем программным обеспечением Puppet, а остальные работают как клиент с запущенным программным обеспечением агента Puppet. Эта функция файлового сервера помогает копировать файлы на нескольких компьютерах. Эта функция функции обслуживания файлов в Puppet входит в состав центрального демона Puppet. Puppetmasterd и клиентская функция играют ключевую роль в поиске атрибутов файла как объекта файла.
class { 'java': package => 'jdk-8u25-linux-x64', java_alternative => 'jdk1.8.0_25', java_alternative_path => '/usr/java/jdk1.8.0_25/jre/bin/java' }
Как и в приведенном выше фрагменте кода, функции обслуживания файлов Puppet абстрагируют топологию локальной файловой системы, поддерживая модуль файловой службы. Мы будем указывать модуль обслуживания файлов следующим образом.
“puppet://server/modules/module_name/sudoers”
Формат файла
В структуре каталогов Puppet по умолчанию конфигурация файлового сервера находится в каталоге /etc/puppet/fileserver.config. Если пользователь желает изменить этот путь к файлу конфигурации по умолчанию, это можно сделать с помощью нового флага конфигурации для puppetmasterd . Файл конфигурации напоминает INI-файлы, но не точно такой же.
[module] path /path/to/files allow *.domain.com deny *.wireless.domain.com
Как показано в приведенном выше фрагменте кода, все три параметра представлены в файле конфигурации. Название модуля несколько в скобках. Путь является единственным обязательным параметром. Параметр безопасности по умолчанию запрещает весь доступ, поэтому, если разрешенные строки не указаны, модуль, который будет настроен, будет доступен любому.
Путь может содержать любой или все% d,% h и% H, которые динамически заменяются его доменным именем, именем хоста и полным именем хоста. Все они взяты из SSL-сертификата клиента (поэтому будьте осторожны, если есть несоответствие имени хоста и имени сертификата). Это полезно при создании модулей, в которых файлы каждого клиента хранятся совершенно отдельно. Пример для приватных ключей хоста.
[private] path /data/private/%h allow *
В приведенном выше фрагменте кода код пытается найти файл /private/file.txt с клиента client1.vipin.com . Он будет искать его в /data/private/client1/file.txt, а тот же запрос для client2.vipin.com попытается получить файл /data/private/client2/file.txt на файловом сервере.
Безопасность
Puppet поддерживает две основные концепции защиты файлов на файловом сервере Puppet. Это достигается путем предоставления доступа к определенным файлам и отказа в доступе к тем, которые не требуются. По умолчанию Puppet не разрешает доступ ни к одному из файлов. Это должно быть определено явно. Формат, который можно использовать в файлах для разрешения или запрета доступа, заключается в использовании IP-адреса, имени или глобального разрешения.
Если клиент не подключен к файловому серверу Puppet напрямую, например, с использованием обратного прокси-сервера и Mongrel, то файловый сервер будет видеть все подключения как с прокси-сервера, а не клиента Puppet. В указанных выше случаях ограничение имени хоста на основе имени хоста является наилучшей практикой.
При определении структуры файла следует отметить один ключевой момент: все операторы deny анализируются перед оператором allow. Следовательно, если какой-либо оператор deny совпадает с хостом, то этому хосту будет отказано, и если в следующих файлах не будет записан оператор allow, то хост будет отклонен. Эта функция помогает установить приоритет любого конкретного сайта.
Имя хоста
В любой конфигурации файлового сервера имя хоста файла можно указать двумя способами: либо с использованием полного имени хоста, либо путем указания полного имени домена с использованием подстановочного знака *, как показано в следующем примере.
[export] path /usr allow brcleprod001.brcl.com allow *.brcl.com deny brcleprod002.brcl.com
Айпи адрес
В любой конфигурации файлового сервера адрес файла может быть указан как аналогичный именам хостов, используя либо полный IP-адрес, либо подстановочный адрес. Можно также использовать системную нотацию CIDR.
[export] path /usr allow 127.0.0.1 allow 172.223.30.* allow 172.223.30.0/24
Глобальный Разрешить
Глобальное разрешение используется, когда пользователь хочет, чтобы каждый мог получить доступ к определенному модулю. Для этого один подстановочный знак помогает каждому получить доступ к модулю.