Назад | Перейти на главную страницу

Как сохранить файлы конфигурации на сервере?

Я регулярно устанавливаю продукт (Atlassian Confluence, Tomcat + несколько файлов) на свой сервер. При каждом обновлении после распаковки tar.gz мне нужно изменить следующие файлы:

Есть ли канонический способ выполнить эту настройку?

Спасибо

Инструменты управления конфигурацией, такие как марионетка. Chef, ansible и т. д. - инструменты, которые выбирает современный системный администратор.

Создайте Ansible playbook для установки tar и последующей настройки. Затем запустите playbook на целевом хосте.

Ansible предоставляет простые в использовании модули для изменения содержимого файлов, копирования файлов, создания новых файлов из шаблонов, управления службами и т. Д.

Лично я использовал его для модификации, например. Файлы конфигурации Tomcat.

Видеть http://docs.ansible.com/playbooks_intro.html.

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

Приведу пример. Допустим, я хочу внести изменения в Tomcat server.xml.

Одноразовая установка

Сначала копирую оригинал server.xml в мой репозиторий конфигурации Mercurial. Затем в моем сценарии оболочки я добавляю эти команды, чтобы удалить исходный server.xml и замените его символической ссылкой на файл внутри репозитория, например:

# The location of my Mercurial config repository
CONFIG=/home/admin/config

rm -f /etc/tomcat7/server.xml
ln -s $CONFIG/tomcat/server.xml /etc/tomcat7/server.xml

Затем я запускаю сценарий в первый раз, чтобы протестировать его и создать символические ссылки. Я называю сценарий setupLinks.sh и он живет в корне моего репозитория Mercurial.

sudo /home/admin/config/setupLinks.sh

После обновления

После обновления мне просто нужно заново запустить setupLinks.sh для замены любой перезаписанной символической ссылки. Вот и все.

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

Я ничего не сказал о перемещении файлов jar, но это можно легко сделать, добавив несколько строк в сценарий оболочки. Вы также можете создавать символические ссылки на файлы jar.

Используйте уловку dist

Чтобы избежать перезаписи файлов конфигурации, вы можете использовать «уловку dist»: используйте файлы * .dist (например, config.xml.dist) в качестве файлов конфигурации по умолчанию в вашем дистрибутиве. «dist» означает файл дистрибутива. Затем скопируйте этот файл .dist в файл не-dist (config.xml), который не является частью дистрибутива. И вуаля, ваш файл конфигурации никогда больше не будет перезаписан. Это работает очень хорошо, например при использовании git, ftp, scp или любых других механизмов для переноса файлов на производственную машину.

Уловка dist помогает избежать повторной настройки или восстановления вещей после развертывания файлов.