Выбор системы управления конфигурациями
Опрос или не подтвердят, или подтвердят через очень много времени. Сделаю тему здесь
Выбираю систему управления конфигурациями для разворачивания у нас (если ещё удастся пробить её использование). Кроме определённых фич, хотелось бы получить знания/опыт работы с более популярным софтом, чтобы пригодилось в дальнейшем. Что стоить осваивать?
Выбираю между cfengine, puppet, chef. Про первый ругаются, что сложный и плохо документированный. Вторые оба тяжёлые, и требуют учить руби, а мну лениво, си с питоном немного знаю и пока большего не требуется.
У пуппета комьюнити овер9000, ruby почти не нужен — все уже придумано до нас.
Я предпочитаю хорошо разбираться в системе, которую использую.
saltstack, писан на питоне, для простых задач самое то.
Сотня с лишним серверов по стране, и штук десять в головном офисе. Разные версии убунты, в паре случаев центось. Однотипных много, но с исторически накопившемися мелкими различиями.
Требования: централизованное хранение конфигурации в удобочитаемом виде, одновременные изменения конфигурации на куче серверов(типа «вчера у нас был вот такой ipsec — а завтра будет уже сильно другой»). Если можно — python
У пуппета комьюнити овер9000, ruby почти не нужен — все уже придумано до нас.
А вот и нет. Годных модулей на forge.puppetlabs.com чуть больше чем 0 штук. Почти все приходится делать самому.
я придумал решение с конфигурацией ipsec — выкинуть его нахер, заменив openvpn, всё равно вы все по какой-то причине делаете в нём PSK и айпишники
Вторые оба тяжёлые, и требуют учить руби, а мну лениво, си с питоном немного знаю и пока большего не требуется.
Я тоже по началу много матерился, но по факту ruby оказался куда приятнее пистона.
Это абстрактный пример, не обязательно про ipsec. Ну и кстати: openvpn через TCP работает медленно, IP-телефония хреново ходит. А через UDP работает как повезёт — иногда просто летает, а иногда, если у провайдера криво настроенный шейпер, который сильно переупорядочивает длинные последовательности UDP-пакетов — просто пиздец. В логах сплошные replay window attack, включишь noreply — всё равно получается страшный джиттер.
Шеф. Осилишь за неделю.
Шеф, да, пупетчики дико радуются шефу.
Я использую dsh и простые скрипты. У меня мало одинаковых, среди сотни, серверов.
cfengine — не плохо документированный, у него вся документация на сайте производителя и очень не много сторонних текстов а-ля how-to для начинающих, обсуждений на форумах и проч. Мне пока удается найти в ней ответы на все возникающие вопросы.
Сложность — ну да, первые шаги мне довольно трудно дались, но по мере изучения мне эта система нравится все больше и больше.
Прочие здесь упомянутые (chef, puppet) практически не пробовал. Причина проста — у меня известный «зоопарк», и не везде их можно собрать. Cfengine написан на С и собирается практически везде
у меня в зоопарке винды живут, и я тоже смотрю в сторону cfengine именно поэтому
Юзал puppet на конторе с
150 однотипный юзерских PC под Debian Весьма экономит время
использовал puppet и выбросил, достало везде ruby собирать..
cfengine рулит, если разобраться..
Если разобраться, рулить может что угодно.
Chef вполне себе поддерживается и на платформе windows. Puppet вроде бы тоже. По крайней мере его Enterprise версия точно.
puppet в google используют
Chef вполне себе поддерживается и на платформе windows.
там же вроде была какая то минималистичная имплементация, которая почти ни на что не была способна. То же самое касается и puppet. enterprise на данный момент мне не интересен
Можно, только нафига выбирать из того, где питона нет совсем?
Источник
Централизованное управление конфигурациями: Puppet + Foreman. Часть І
В этой статье будет рассмотрена установка и настройка связки Puppet + Foreman для централизованного управления конфигурациями.
Для сервера, на котором будет установлена связка Puppet + Foreman, будет использоваться виртуальная машина (1 CPU, 2 Gb RAM, 20Gb HDD), в качестве клиентов будут физические ПК на которых установлена Ubuntu. Конфигурация моего виртуального сервера с указанными выше характеристиками позволяет без проблем обслуживать 500 клиентов (можно и больше).
Установка Puppet довольно простая (все последующие команды выполняются от root):
Этими командами мы скачиваем deb пакет с сайта разработчиков puppet и устанавливаем его. Данный пакет puppetlabs-release-trusty.deb при установке создает файл /etc/apt/sources.list.d/puppetlabs.list в котором прописаны репозитории puppet, а также импортируется gpg ключ которым подписан репозиторий puppet. Сам puppetmaster мы не устанавливаем, он будет установлен автоматически при установке Foreman.
На этом установка Puppet закончена, приступим к установке веб-интерфейса Foreman:
Здесь мы добавили файл /etc/apt/sources.list.d/foreman.list в который вписали репозитории от Foreman, а также добавили ключ от данного репозитория. После добавления репозитория мы обновили список пакетов и установили foreman-installer — это пакет который позволяет установить Foreman.
Далее нам нужно настроить правильное имя компьютера. Прописываем в /etc/hosts и /etc/hostname
Перезагружаем наш сервер.
Запускаем наш установщик коммандой foreman-installer -i.
Нас спрашивают — готовы ли мы к установке, отвечаем «y», далее следует меню в котором можно выбрать дополнительные конфигурации Foreman и дополнительные модули. Мы же устанавливаем стандартную конфигурацию, поэтому выбираем пункт «Save and run» и у нас начинается установка (можно было ставить командой foreman-installer без опции -i, тогда у нас поставится базовая установка, -i подразумевает интерактивный режим).
У меня установка заняла примерно 5 минут, после установки мы видим сообщение об успешно установке, в этом сообщении находятся наши параметры доступа к Foreman.
Переходим по адресу srv.co.com и заходим в веб-интерфейс используя параметры доступа которые мы получили при установке (их желательно сохранить в файлик, а после первого входа в панель управления — поменять пароль). После входа мы видим страницу с множеством текстовой информации на английском языке, можно перейти в настройки аккаунта и сменить язык на русский. Переходим в правый верхний угол, жмем Admin User, My account, вибираем нужный нам язык и сохраняем настройки.
При последующем входе в Foreman мы получим другой интерфейс:
Здесь в списке будут отображаться наши клиенты.
Вот мы и завершили установку связки Puppet + Foreman. Давайте попробуем добавить клиента puppet и посмотреть что поменяется в веб-интерфейсе.
Для установки Puppet агентов на клиентские ПК я использую следующий скрипт:
Этот скрипт устанавливает puppet agent, настраивает автозапуск агента при старте системы, указывает адрес Puppet сервера и запускает агента. Также мы закомментируем в конфиге /etc/puppet/puppet.conf строку templatedir, если не закомеентировать — сыпятся ошибки (как фиксить без комментирования я не разобрался, хотя оно меня не раздражает).
После установки агента у нас на сервере будет запрос на подпись сертификата, если мы не подпишем данный сертификат, тогда агент не будет подключен в серверу.
Для просмотра сертификатов на сервере можно использовать комманду puppet cert —list —all:
# puppet cert —list —all
«zeppelin» (SHA256) 43:64:08:BF:DB:AF:7C:17:5B:DE:3C:CE:22:8B:40:6A:13:60:B7:F4:2C:38:B6:57:E5:FA:EA:CC:63:FB:87:EB
+ «srv.co.com» (SHA256) 04:CB:EB:CF:B2:D1:09:3C:74:00:20:A9:87:24:4B:CE:40:CC:0A:73:1D:F6:E4:24:7D:34:6E:4E:6C:17:DF:61 (alt names: «DNS:puppet», «DNS:puppet.co.com», «DNS:srv.co.com»)
Здесь мы видим что у нас 2 сертификата, один не подписан с именем zeppelin и другой подписан (+) с именем srv.co.com. Не подписаный сертификат — это сертификат от нашего новоустановленого клиента.
Для подписи сертификата можно использовать комманду puppet cert —sign $client_name. Также для подписи сертификатов мы можем использовать веб-интерфейс от Foreman, для этого нам нужно перейти в меню «Инфраструктура» — «Капсули» — «Сертификаты» и здесь можно подписать или удалить сертификат.
Жмем «Подписать», в результате при просмотре списка сертификатов в консоли у нас будет 2 подписаных сертификата:
# puppet cert —list —all
+ «srv.co.com» (SHA256) 04:CB:EB:CF:B2:D1:09:3C:74:00:20:A9:87:24:4B:CE:40:CC:0A:73:1D:F6:E4:24:7D:34:6E:4E:6C:17:DF:61 (alt names: «DNS:puppet», «DNS:puppet.co.com», «DNS:srv.co.com»)
+ «zeppelin» (SHA256) 03:C6:FF:F9:4D:10:7C:7D:6C:32:A7:E8:0C:9F:DA:FB:DD:43:B6:E5:36:79:DD:E3:04:41:D3:58:9F:6A:C4:8F
Переходим в меню «Узлы» — «Все узлы» — здесь мы видим 2 сервера (новый сервер может появиться не сразу, а через некоторое время, для того чтобы он появился сразу, нужно после подписи сертификата выполнить на клиенте команду puppet agent -t).
Поумолчанию Foreman берет манифесты из папки /etc/puppet/environments далее в записимоти от окружения. Сейчас мы добавим манифест в Foreman и попробуем применить его для одного из наших клиентов. Создаем папку mkdir -p /etc/puppet/environments/production/modules/vsftpd/manifests, в эту папку закидаем файл init.pp:
Теперь для того чтобы наш модуль с манифестом появился в Foreman нужно зайти в меню «Настройки» — «Классы Puppet» и нажать «Импорт из srv.co.com».
Отметить птичкой нужное нам окружение и нажать «Обновить».
В результате мы получим список доступных классов Puppet с указанием окружений, узлов к которым они применены и т.д.
Давайте добавим наш манифест в одному из клиентов. Для этого переходим в «Узлы» — «Все узлы», жмем на имени нужного нам узла и у нас открывается страница с детальной характеристикой узла.
Жмем кнопу «Изменить», попадаем на другую страницу с настройками указанного узла, тут жмем на вторую вкладку «Классы Puppet» и видим наш класс «vsftpd».
Выбираем наш клас (значок +), он перемещается в левую сторону с «Доступных классов» в «Включенные классы», подтверждаем изменения.
Все — наш манифест добавлен для выбраного сервера, остается подождать пока он будет применен на клиенте. Если мы не хотим ждать, можно зайти на клиент и выполнить комманду puppet agent -t, сразу после ее выполнения манифест будет применен к клиенту и на нем будет установлення vsftpd (в нашем случае).
Foreman также имеет множество дополнительного функционала, хосты можно группировать, манифесты можно применять на группы, также можно настроить автоподпись клиентских сертификатов, права на клиентские машины для разных администраторов, аудит оборудования и многое другое, о чем я расскажу в следующей статье.
Источник
Puppet, система управления конфигурациями. Часть I
Puppet — это инструмент, который позволяет автоматизировать настройку и управление большим парком машин. Используя Puppet вы сможете централизованно управлять конфигурациями одной, десятков, сотен и тысяч машин.
В этой статье я расскажу об основных особенностях системы.
Puppet написана на Ruby, архитектура — клиент-серверная. На каждом управляемом узле находится клиент, который периодически обращается по https к серверу за обновлениями конфигурации.
Язык управления конфигурациями
Конфигурация описывается на специальном языке. Базовыми элементами конфигурации являются ресурсы. Каждый ресурс имеет тип, атрибуты и название. Самый простой пример ресурса, файловый:
Этот ресурс включает проверку владельца файла /etc/passwd, и если он отличен от root, Puppet устанавливает юзера root хозяином этого файла.
Ресурсы можно (и обычно нужно) группировать в классы. Например, класс для Postfix будет содержать ресурсы и для установки и для настройки почтового сервера Postfix.
Одним из главных элементов описания конфигурации является узел (node). Узел позволяет описывать функциональность определённого типа. Скажем, можно описать узел «офисный десктоп», или «веб-сервер». Соответственно, для офисного десктопа будет установлено и настроено всё необходимое для офиса ПО, а для веб-сервера какой-нибудь апач или nginx.
Вообще, язык описания конфигурации поддерживает практически все фичи нормального ООП-языка. Так что, по сути получается, что вы как бы программируете поведение машин. Действительно, в результате получается довольно наглядное описание, которое легко читать и понимать.
Сообщество юзеров делится своими наработками, в терминах Puppet они называются «рецептами».
Где и как это работает ?
Следующее, что необходимо отметить, это платформонезависимость. Ваши сценарии могут разворачиваться одинаково на Linux и FreeBSD, все особенности конкретной платформы учитываются клиентом Puppet. Вы можете ознакомиться со списком поддерживаемых платформ, чтобы убедиться, что ваша любимая ОС поддерживается Puppet. Windows в этом списке нет, но сообщается, что Puppet в ней работает через cygwin.
Что касается производительности. Она и сейчас довольно неплохая. Скажем, вы можете управлять 50-100 машинами с помощью довольно средненького сервера с 2 гигами памяти. Однако, на подходе версия 0.25, в которой одной из главных фич является переход с XML-RPC на REST, что означает существенное улучшение производительности.
Кроме того, как практически любой веб-сервис, Puppet масштабируется. Puppet можно запускать с помощью nginx и Mongrel. Так что вы можете не опасаться ситуации, когда вдруг ваша организация разрастётся до больших размеров, Puppet с этой работой справится 🙂
Резюме
Завершая эту вводную статью, хочу особенно отметить тот факт, что Puppet может быть очень полезен для вас, даже если у вас всего один сервер. Имея хорошо задокументированный конфиг, в случае краха сервера вы очень быстро сможете развернуть хозяйство на другом сервере, так как установка и настройка почти всего, что нужно, будет осуществлена в автоматическом режиме.
В следующей части я опишу установку, настройку и базовые возможности Puppet.
Если вам не терпится узнать о Puppet больше прямо сейчас, милости просим в документацию 🙂
Источник