Способы отправки веб-файлов конфигурации на серверы и перезапуск служб - PullRequest
0 голосов
/ 28 мая 2010

Мы пишем веб-инструмент для настройки наших услуг, предоставляемых несколькими серверами. Это включает в себя настройку интерфейсов, настройки dhcp и т. Д. И т. Д.

Имея конфиги в базе данных и представления, которые генерируют правильный вывод, как отправить его / сделать его доступным для серверов?

Я думаю об отправке через scp и вызове команды reload для служб через ssh. Я также думаю об использовании Func для выполнения всей работы, так как это инструмент Python и, по-видимому, будет интегрирован с инструментом конфигурации на основе Python (django).

Есть еще предложения?

Ответы [ 4 ]

1 голос
/ 25 января 2011

Я пытался использовать Puppet для управления конфигурацией, в основном из-за всего этого шума. К сожалению, я обнаружил (слишком поздно), что хозяин марионеток ужасно масштабируется и плохо обрабатывает разнородные среды. Он работает для десятков серверов, но его собственная архитектура предотвращает масштабирование.

Итак, я переключился на Cfengine 3, который вы едва заметили, как влияет на производительность, и масштабируется намного лучше благодаря его распределенной архитектуре. Кроме того, позже я обнаружил, что Puppet - это просто попытка неэффективно переопределить Cfengine 2 в Ruby. Смотри http://verticalsysadmin.com/blog/uncategorized/relative-origins-of-cfengine-chef-and-puppet

Если ваша установка будет использоваться для чего-то полезного, а не просто для игры, используйте Cfengine 3!

0 голосов
/ 29 мая 2010

Я думаю, вы ищете Puppet и Foreman для управления куклами (создания групп серверов).

Есть много способов сделать это, в том числе Chef, Bcfg2, Capistrano и т. Д. У Puppet сейчас самое большое «преимущество». Кривая обучения определенно есть, но результаты того стоят.

Вы можете хранить файлы конфигурации своих серверов на главном марионетке (в управлении версиями). А при развертывании последних файлов конфигурации на главном сервере клиенты Puppet могут автоматически извлекать их и перезапускать службы. Кукольные «шаблоны» могут динамически генерировать файлы конфигурации для каждого сервера.

У Puppet есть «Провайдеры» для таких вещей, как Packages (apt, yum), Файлы и ОС.

0 голосов
/ 28 июня 2010

Это действительно зависит от того, что вы собираетесь делать, так как вопрос немного расплывчатый. Другие ответы охватывают доступные инструменты; выбор одного над другим сводится к цели.

Планируете ли вы управлять серверами и службами на этих серверах? Если это так, попробуйте Puppet, CFEngine или другой инструмент для управления конфигурациями сервера.

Или, более конкретно, вы ищете инструмент развертывания / развертывания, который общается с серверами? Чтобы вы могли что-то набрать в духе «mytool deploy myproject» и распространить ваш проект на все серверы? В этом случае ткань будет инструментом для использования.

Как правило, хорошая конфигурация будет состоять из обоих в любом случае ... но, несмотря на то, что она того стоит, исходя из ее звучания (управление DHCP / сетью и т.

0 голосов
/ 29 мая 2010

Вы можете взглянуть на Ткань .

В качестве примера, это адаптированная выдержка из одного из моих сценариев резервного копирования, который запускает сервер Mercurial на удаленном хосте и помещает туда локальные наборы изменений:

from fabric.api import *
env.hosts = ['login@my.host.com']

def mybckp():
    run('cd ~/somedir; hg serve -a 111.222.111.222 -d') # start mercurial server in daemon mode
    local('hg push')  # push local changesets

Чтобы выполнить его, я просто набираю:

fab mybckp

По сути, Fabric предлагает простой и удобный доступ по SSH к оболочке еще одного (удаленного) хоста из скрипта Python.

...