Является ли Puppet (или аналогичная) подходящей технологией для обеспечения базовых, но критических изменений массы?
Да, это можно использовать таким образом. Я использую это для поддержки систем внешних клиентов.
Я не хочу, чтобы какой-либо сервер мог видеть любую конфигурацию, которую он не должен
Если вы используете кукольный, вы не должны включать автоподпись тогда. Автоподпись позволяет хостам автоматически запрашивать сертификат. Ваша конфигурация и разрешения почти наверняка будут связаны непосредственно с CN в сертификате. Вы не хотите, чтобы случайный компьютер подключался к сети и мог утверждать, что он на самом деле является системой со всеми секретными секретными средствами.
Если вы действительно параноик, вы можете настроить параметры файлового сервера кукол для создания общих ресурсов, к которым имеют доступ только некоторые системы. Доступ к файловому серверу основан на сертификатах.
Я не хочу, чтобы Puppet вносил какие-либо изменения, которые он не должен делать, или отменял любые ручные изменения, сделанные на сервере.
Существует несколько разных подходов к разрешению локальных изменений.
Один метод, который я часто использую, приведен ниже. В основном, если вы передаете список a source
, то кукольный пробует каждый элемент в списке. Поэтому я добавляю первый элемент в списке, чтобы он указывал на локальный файл.
file { '/etc/ssh/sshd_config':
ensure => present,
source => ["/etc/ssh/sshd_config_local",
"puppet:///modules/ssh/$ssh_config_file"],
...
}
Другой вариант - использовать символические ссылки. Если кто-то хочет использовать марионеточную версию, он ссылается на марионеточную версию файла. Если они хотят поддерживать свои настройки локально, они не создают символическую ссылку.
file { '/etc/ssh/sshd_config_puppet':
ensure => present,
source => "puppet:///modules/ssh/$ssh_config_file",
...
}
Другая возможность - использовать augeas для внесения изменений на уровне строк вместо изменения целых файлов. Будьте очень консервативны в том, что вы меняете.