Puppet: настройка Puppet fileserver для отдачи файлов и директорий [2010]
Что такое Puppet fileserver?
Puppet fileserver – сервис позволяющий забирать с Puppetmaster`a файлы и папки, используемые в вашей конфигурации. С помощью файлсервера, к примеру, вы можете передавать на сервера файл /etc/resolv.conf содержимое которого будет зависеть от $hostname. Лично я использую fileserver для кастомного софта, который не могу установить из репозитория или собирать пакет слишком долго.
Для настройки файлсервер нужно открыть/создать файл fileserver.conf в папке конфигурации Puppet (по умолчанию /etc/puppet/fileserver.conf) и вбить в него следующие данные:
[files1]
path /var/puppet/files1
allow *.domain.com
[files2]
path /var/puppet/files2
# needed to allow local puppetd
allow 127.0.0.1
allow 192.168.1.0/24
Мы объявили две секции «files1″ и «files2″, параметр path указывает в какой папке нужно искать нужные файлы, параметры allow и deny отвечают за настройки безопасности файл серрвера.
Безопасность
Доступ к секции, по умолчанию, запрещен со всех серверов. Для того чтобы разрешить серверу доступ к секции нужно добавить опцию allow с именем, IP или подсетью. Параметр deny всегда весомее чем параметр allow, т.е. если у вас есть сервер с IP 192.168.0.1 и именем myhost.com то такая конфигурация не позволит вам забрать файлы из файлсервера:
[files3]
path /var/puppet/files/
allow 192.168.0.0/24
deny myhost.com
Использование
Для использования file server вам нужно использовать тип file:
Так я передаю файлы лицензий для сокет-сервера Smartfox на целевые машины. Т.е. у меня объявлена секция [files], локальный путь /var/puppet/files. По этому пути я создал папку «smartfox/licenses», внутри сделал папки с именами хостов (переменная $fqdn содержит полное имя целевого сервера, к примеру smartfox.domain.com), в каждой папке лежит файл с лицензией licence.sfl. Т.е. на целевой сервер smartfox.domain.com в папку /opt/Smartfox/Server/ попадает файл licence.sfl с puppetmaster сервера из папки /var/puppet/files/smartfox/licenses/$fqdn/
Пример выше позволяет передавать только один файл, вот так можно передавать целую папку:
Главное здесь параметры recurse – говорит о том что мы передает всю папку и подпапки и sourceselect – говорит о том что мы передаем все файлы
recurse => true,
sourceselect => all,
Все, можно пользоваться, но помните – если вы используете стандартный Puppetmaster (т.е. он работает не через nginx или Apache а через написанный на Ruby веб сервер Webrick) передача папки большого размера может вызвать подъем LA на сервере.