Я запускаю сервер Debian 7.0 (Wheezy), и у меня есть динамическая настройка DNS, в которой мои клиенты делают запросы DHCP, а DHCP-сервер обновляет файлы зон DNS любым IP-адресом для каждого клиента. Я хочу управлять этой настройкой с помощью Puppet. Однако есть только одна проблема: я не хочу, чтобы Puppet сжимал мои записи DNS каждый раз, когда я нажимаю свои манифесты. В любом случае, для файлов зон, которые будут управляться Puppet, не имеет большого значения, поскольку они, как правило, будут постоянно обновляться. Однако я хотел бы сделать, чтобы Pokpet нажал «скелетные» файлы зон в правильном месте, когда сначала была установлена служба DNS ( bind9
). Причина, по которой я хочу это, заключается в том, что я хочу инкапсулировать всю конфигурацию сервера в одном месте, так что только с несколькими манифестами я могу клонировать всю конфигурацию сервера.
Сначала я хотел, чтобы file
ресурсы для файлов зон подписывались на пакет DNS-сервера и устанавливали refreshonly
в true
. Единственная проблема заключается в том, что в file
нет refreshonly parameter
. Очевидно, такой подход является тупиком.
Есть ли «правильный» способ сделать это? Возможно, с Augeas?
Обновить
Я пытался
augtool ls /files/etc/bind
и это ничего не принесло ! Похоже, Augeas по каким-то причинам не может разобрать мои файлы зон. Кажется, Augeas – это не ответ, затем …
Решено! В ссылке типа Puppet атрибут file
ресурса, называемый replace
оказался именно тем, что мне нужно. Я цитирую приведенную выше ссылку:
замещать
Следует ли заменить файл или символическую ссылку, которая уже существует в локальной системе, но содержимое которой не соответствует атрибуту
source
илиcontent
. Установка этого значения вfalse
позволяет файловым ресурсам инициализировать файлы без перезаписывания будущих изменений. Обратите внимание, что это влияет только на контент; Кукольный до сих пор управляет правами собственности и разрешениями. Значение по умолчанию равноtrue
. Допустимые значенияtrue
(также называютсяyes
),false
(также называютсяno
).
Я просто добавил
replace => false
к моим файлам ресурсов зоны, и это сделало трюк.
редактировать
Я фактически использовал false
вместо no
как я не уверен, поддерживается ли последнее (хотя, как утверждается, это документ); другой подобный логический флаг дал мне синтаксическую ошибку, когда я попытался присвоить ей yes
. Поэтому используйте false
чтобы быть в безопасности.