Pull to refresh

Версионность конфигураций серверов на базе debian/ubuntu

Reading time 3 min
Views 9.2K
Доброго времени суток, уважаемое сообщество.
Решил поделиться небольшой идеей, возможно кому-то будет интересно и полезно.

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

Немного о себе


Сам я web-программист, какое-то время сидел на ubuntu, сервера (VPS) практически все на debian. Большого опыта нет в администрировании серверов, в отличии от коллег и хостеров, но всегда очень привлекало знания в эту сторону. Я мог часами сидеть в консоли и решать те или иные задачи. Когда время заканчивалось, более опытные коллеги забирали игрушки задачи и рассказывали что я делаю не так. Но всегда было интересно, что именно они сделали сами и как происходят настройки более нагруженных проектов. Все проекты мы храним в bitbucket, используя систему управления версиями Mercurial. В один прекрасный день решили поддерживать актуальную версию проектов на серверах используя этот же инструмент и очень облегчили себе жизнь. Теперь поднять на сервере последние обновления можно в две команды:

hg pull && hg up

Почему хостеры не предлагают подобное ПО у себя на shared-хостингах остается загадкой. По-моему заливка по FTP вчерашний день. Сейчас приходят новые сотрудники и им потихоньку даем доступ до серверов, но уже под моим контролем, увидев картину с другой стороны я ужаснулся, что именно натворили на сервере найти было очень сложно. После нескольких часов вернуть в нормальное состояние сервер мне и пришла:

Идея на миллион


Получив новый сервер (VPS) на базе debain, я недолго думая создал репозитарий в папке с конфигурациями.

Новый сервер
Все команды производим из под root-пользователя.
Первым делом обновляем ПО на сервере:
apt-get update && apt-get upgrade

Ставим пакет Mercurial (появился в debian 6, но видел статьи установки и под debian 5):
apt-get install mercurial

Переходим в папку с конфигурациями:
cd /etc

Создаем репозитарий:
hg init

на что будет создана скрытая папка ".hg"
Немного расскажем о себе:
nano /etc/.hg/hgrc

Укажем данные:
[ui]
username = User <****@gmail.com>


Уже сейчас можно узнать о всех файлах запустив команду:
hg status

Меркуриал лишь покажет список файлов, которые для него еще новые.

Укажем что хотим добавить все новые файлы в следующий коммит:
hg add

И наконец зафиксируем первое состояние конфигураций:
hg commit -m 'first commit'

Теперь можно спокойно установить и настроить остальное ПО.

В любой момент можно проверить состояние конфигураций используя команду:
hg status

Что именно изменили в файлах можно узнать командой:
hg diff ./путь до файла

Откатить изменения можно командой:
hg revert ./путь до файла

Еще лучше будет ознакомиться со всеми командами:
hg help


Публикация

Когда поднимаем новый сервер или обновляем старый все время вспоминаешь:
  • Где твои памятки по настройке сервера
  • На каком проекте уже поднимал подобное ПО
  • Какой root-пароль от сервера (чтоб прочитать конфиги)

и список может быть большим.

Решил все залить в приватный репозитарий. Повторюсь, что мы используем bitbucket. Создаем на нем репозитарий, получаем путь, что то вроде:
https://bitbucket.org/username/etc-project-a

открываем заново конфигурацию нашего репозитария:
nano /etc/.hg/hgrc

И укажем ниже:
[paths]
default = https://bitbucket.org/username/etc-project-a

Выполним команду:
hg push

На что меркуриал спросит вас данные авторизации на сервере битбакет. Приятная новость, что можно настроить авторизацию по ssh-ключу.

Теперь наши конфигурации в сухом, прохладном месте. Вы всегда можете посмотреть как настроен тот или иной сервер и на примерах поднять новый. Для этого вам надо клонировать репозитарий на локальную машину, либо воспользоваться вполне удобным web-интерфейсом от битбакет.

Плюсы:
  • Храним версии конфигураций
  • Всегда можно откатить к стабильному варианту
  • Можно в одну команду определить что натворили без вас
  • Быстро можно узнать как настроен сервер не авторизовываясь на нем

Минусы:
  • Не забывать коммитнуть последние изменения

Хотел по крону добавить автоматические коммиты, но подумал, что лучше оставить такое простое решение. Возможно есть другие уже готовые решения о чем я бы с радостью ознакомился. Кто знает, может эта небольшая статья поможет вам придумать более простое и полезное решение о котором, я надеюсь, вы тоже с нами поделитесь.

Спасибо.
Tags:
Hubs:
+4
Comments 17
Comments Comments 17

Articles