Это относится к мультитенантным средам, таким как небольшая хостинговая компания.
Является ли Puppet (или аналогичная) подходящей технологией для обеспечения базовых, но критических изменений массы? Например:
- Обновление преобразователей DNS (resolv.conf)
- Настройка ключей SSH
- Обновление конфигурации NTP
- Конфигурирование snmpd
- Развертывание сценариев мониторинга, таких как расширения SNMP Perl или сценарии Nagios
Мои опасения связаны с безопасностью и инвазивностью:
- Я не хочу, чтобы какой-либо сервер мог видеть любую конфигурацию, которую он не должен
- Я обеспокоен тем, что хозяин Puppet может быть уязвим для атаки на взломанный сервер
- Я не хочу, чтобы Puppet вносил какие-либо изменения, которые он не должен делать, или отменял любые ручные изменения, сделанные на сервере.
Я должен предупредить об этом, сказав, что я никогда не использовал Puppet в производстве, только быстро пробежался по тестовой лаборатории, так что возможно я думаю об этом неправильно!
Да, это, конечно, возможно. Решать, стоит ли вам делать это или нет, решать только вам.
По поводу ваших запросов:
1) достаточно честно. Трафик основан на ssl, поэтому важно управление сертификатами. Также не доверяйте никаким «фактам», которые предоставляет клиент, относящимся к его личности, так как они могут быть изменены клиентом. Вы хотите положиться на ssl-сертификат клиента, чтобы обеспечить аутентификацию сервера. Честно говоря, если вы правильно используете такие вещи, как hiera, и избегаете огромных блоков имени, основанных на имени, в своем коде (что вам действительно нужно), то все будет в порядке.
2) Не должно быть, если вы оставите это исправленным. Правильно настроенный, есть только маленький вектор для хозяина кукол, который будет атакован клиентами. Тем не менее, последствия, если он скомпрометирован, велики, поэтому позаботьтесь о его блокировке.
3) Это действительно проблема тестирования и развертывания. Если у вас есть надежный кукольный код, он не испортит ваши файлы. Это займет немного времени, чтобы разобраться, но для основы (как вам нужно) не долго.
источник
Да, это можно использовать таким образом. Я использую это для поддержки систем внешних клиентов.
Если вы используете кукольный, вы не должны включать автоподпись тогда. Автоподпись позволяет хостам автоматически запрашивать сертификат. Ваша конфигурация и разрешения почти наверняка будут связаны непосредственно с CN в сертификате. Вы не хотите, чтобы случайный компьютер подключался к сети и мог утверждать, что он на самом деле является системой со всеми секретными секретными средствами.
Если вы действительно параноик, вы можете настроить параметры файлового сервера кукол для создания общих ресурсов, к которым имеют доступ только некоторые системы. Доступ к файловому серверу основан на сертификатах.
Существует несколько разных подходов к разрешению локальных изменений.
Один метод, который я часто использую, приведен ниже. В основном, если вы передаете список a
source
, то кукольный пробует каждый элемент в списке. Поэтому я добавляю первый элемент в списке, чтобы он указывал на локальный файл.Другой вариант - использовать символические ссылки. Если кто-то хочет использовать марионеточную версию, он ссылается на марионеточную версию файла. Если они хотят поддерживать свои настройки локально, они не создают символическую ссылку.
Другая возможность - использовать augeas для внесения изменений на уровне строк вместо изменения целых файлов. Будьте очень консервативны в том, что вы меняете.
источник
3> В Puppet и других подобных инструментах нет автоматической отмены действий. Вы должны написать явный код для отмены. Кроме того, вы можете исследовать функциональность среды Puppet, создать лабораторию тестирования, где тестируется новый код (может быть виртуальные машины), и использовать проверку кода.
источник
/var/lib/chef
по умолчанию (если ресурс не настроен так, чтобы не оставлять резервных копий, например, для конфиденциальных данных), а с помощью средстваdoc
форматирования вы видите diff на выходе терминала.Для файлов конфигурации, которые создаются с использованием типа файла Puppets, это может быть достигнуто установкой:
Я использую это для генерации некоторых конфигурационных файлов при первом развертывании приложения на сервере, но тогда любые изменения в этом конфигурационном файле не будут перезаписаны Puppet.
Однако это идет вразрез с философией Puppet - быть идемпотентным сценарием развертывания.
Возможно, было бы лучше, если бы у вас были отдельные редактируемые администратором файлы, которые не управляются puppet и включаются в файлы, управляемые puppet.
источник
Puppet лучше всего работает на многих серверах с одинаковой конфигурацией. Например, вы пишете все настройки общего веб-сервера, предоставленные вашей компанией, а затем создаете N экземпляров этого сервера. Впоследствии внесение изменений во все экземпляры одновременно (например, вы обнаружите, что необходимо изменить AllowOverride для всех виртуальных хостов apache) будет действительно легким. Вы также сможете хранить всю информацию о конфигурации в одном месте и держать ее под контролем версий. В идеальном случае вы сможете обработать аппаратный сбой, выбрасывая сломанный хост, заменяя его новым, устанавливая то же имя хоста и подписывая необходимый сертификат. Все остальное может сделать Puppet.
Но если в итоге вы почти не используете общий доступ к конфигурации между двумя хостами, использование puppet может оказаться менее продуктивным, чем настройка вручную. Также управление половиной конфигурации сервера с помощью puppet и другой половины вручную может не иметь особого смысла.
Описание : Если вы можете создать унифицированную и структурированную конфигурацию для хостов, которыми вы собираетесь управлять, Puppet станет вашим лучшим другом, но если вам придется обрабатывать каждую службу (хост, виртуальный хост, базу данных), особенно Puppet, не добавит большая ценность
источник