Я оцениваю Puppet как потенциальную замену собственной системе конфигурации и распространения программного обеспечения. Мне нужен совет о том, может ли Puppet удовлетворить определенные требования для выполнения специфичных для узла, произвольных, а иногда и специальных изменений конфигурации программного обеспечения.
Наша текущая система предоставляет CMDB, которая отслеживает отдельные серверы, основные сведения о них (ОС, IP-адреса, ч / б платформа и т. Д.), А также все установленные программные компоненты. Это варьируется от программных приложений внутренней разработки до исправлений ОС, служебных программ и т. Д. Текущая система также обеспечивает возможность распространения / установки программного обеспечения на основе sftp / ssh и запускает сценарии на конечной точке для выполнения установщиков.
Ключевым требованием (которое обеспечивает наша текущая система) является возможность определять произвольные значения конфигурации программного обеспечения для любого данного компонента. С каждым отслеживаемым компонентом связаны предварительно определенные параметры конфигурации, некоторые из которых являются общими для всех серверов, некоторые из которых может быть переопределено для определенного сервера, и некоторые из них должен быть переопределенным для каждого сервера. В нашей текущей системе мы настраиваем эти параметры перед отправкой пакетов распространения программного обеспечения на конечные точки. В этих пакетах распространения есть сценарии, которые используют параметры конфигурации для создания файлов конфигурации, которые выталкиваются как часть распространения и установки.
Я прочитал много документации о Puppet за последние несколько дней, но для меня все еще не очевидно, может ли Puppet предоставить эту ключевую возможность. Лучшее, что я могу определить, это то, что для этого, безусловно, потребуется написать пользовательские факты для использования в качестве параметров конфигурации, но помимо этого я не смог определить, могу ли я настроить определенные значения для этих фактов и заставить эти значения быть настроенными на конечная точка.
Просто взглянув на раздел Inventory узла в PE Console, он похож на то, что я ищу, но мне нужна возможность организовать его иерархически (связанные параметры конфигурации или «факты», сгруппированные по категориям / компонентам / и т. Д.). , а также возможность указывать значения по умолчанию и / или переопределенные значения для любого из этих настраиваемых фактов.
На данный момент я не уверен, может ли Puppet предоставить эту возможность, и если да, то как я буду ее настраивать. Я видел ссылки на Hiera, но мало подробной информации о нем или примеров использования, поэтому я не знаю, пригодится ли это в моей ситуации.
FWIW, это решение первоначально будет использоваться для управления только серверами Windows, но в конечном итоге будет распространено и на системы Linux.
Спасибо за любой совет, который вы можете предложить.
Да, конечно. Это не обязательно должно включать пользовательские факты или инвентарь фактов каким-либо образом, хотя может, если вы этого захотите.
Если вас интересует установка исключений в объявлении узла (централизованно на главном сервере), взгляните на параметризованные классы. Это позволит вам определять настройки для класса, когда вы включаете его в узел.
В качестве альтернативы, если вы настроили пользовательские факты на узлах, вы можете просто использовать эти факты в определениях своих классов для внесения любых необходимых изменений.
Дайте мне знать, имеет ли это смысл или вам нужны более конкретные примеры - места, где доступна настройка, могут отличаться от вашего текущего рабочего процесса настройки, поэтому убедитесь, что она будет работать так, как вам нужно, прежде чем погрузиться в реализация.