Доброго времени суток, уважаемое сообщество.
Решил поделиться небольшой идеей, возможно кому-то будет интересно и полезно.
Устав от утерянных и сломанных конфигураций, авторизацию на серверах под рутом, чтоб перенести новые оптимальные конфигурации, я решил создать репозитарии из папок с конфигурациями и дать к ним доступ в более доступном месте.
Немного о себе
Сам я web-программист, какое-то время сидел на ubuntu, сервера (игрушки задачи и рассказывали что я делаю не так. Но всегда было интересно, что именно они сделали сами и как происходят настройки более нагруженных проектов. Все проекты мы храним в bitbucket, используя систему управления версиями Mercurial. В один прекрасный день решили поддерживать актуальную версию проектов на серверах используя этот же инструмент и очень облегчили себе жизнь. Теперь поднять на сервере последние обновления можно в две команды:
hg pull && hg up
Почему хостеры не предлагают подобное ПО у себя на shared-хостингах остается загадкой. По-моему заливка по FTP вчерашний день. Сейчас приходят новые сотрудники и им потихоньку даем доступ до серверов, но уже под моим контролем, увидев картину с другой стороны я ужаснулся, что именно натворили на сервере найти было очень сложно. После нескольких часов вернуть в нормальное состояние сервер мне и пришла:
Идея на миллион
Получив новый сервер (
Новый сервер
Все команды производим из под 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-интерфейсом от битбакет.
Плюсы:
- Храним версии конфигураций
- Всегда можно откатить к стабильному варианту
- Можно в одну команду определить что натворили без вас
- Быстро можно узнать как настроен сервер не авторизовываясь на нем
Минусы:
- Не забывать коммитнуть последние изменения
Хотел по крону добавить автоматические коммиты, но подумал, что лучше оставить такое простое решение. Возможно есть другие уже готовые решения о чем я бы с радостью ознакомился. Кто знает, может эта небольшая статья поможет вам придумать более простое и полезное решение о котором, я надеюсь, вы тоже с нами поделитесь.
Спасибо.
Автор: Arik