Инструкция по установке
Установка на родительский сервер
Установка
# USE="cron parent" emerge trueoffice/trueupdate [ebuild N ] trueoffice/trueupdate-0.0.2 USE="ssmtp parent cron" 0 kB [1] [1] /usr/local/layman/trueportage ... * * Please add: "0 3 * * 7 root /usr/bin/truesync" to /etc/crontab *
Настройка
# emerge --config trueupdate * Master E-mail address: [support@trueoffice.ru]> support@trueoffice.ru * Address of smtp-server: [mail.trueoffice.ru]> mail.trueoffice.ru * Authentication username: > support@trueoffice.ru * Authentication password: > * Retype authentication password: > * /etc/ssmtp.conf copy to /etc/ssmtp.conf.backup * File /etc/ssmtp/ssmtp.conf configured!
После чего в файл /etc/trueupdate/vpslist следует прописать имена дочерних серверов (VServers VPS).
Установка на дочерний сервер
Установка
# emerge trueoffice/trueupdate [ebuild N ] trueoffice/trueupdate-0.0.2 USE="ssmtp -parent -cron" 0 kB [1] [1] /usr/local/layman/trueportage ...
Настройка
# emerge --config trueupdate * Master E-mail address: [support@trueoffice.ru]> support@trueoffice.ru * Address of smtp-server: [mail.trueoffice.ru]> mail.trueoffice.ru * Authentication username: > support@trueoffice.ru * Authentication password: > * Retype authentication password: > * /etc/ssmtp.conf copy to /etc/ssmtp.conf.backup * File /etc/ssmtp/ssmtp.conf configured!
Технические детали
Сценарий обновления
- Каждую ночь родительский сервер синхронизирует дерево портежей с http://download.trueoffice.org/gentoo-portage;
- После чего запускает скрипт обновления на себе и на всех дочерних VPS;
- Если скрипт обнаруживает метку то происходит обновление:
- В случае успеха выполняет скрипты "после обновления". Делает echo '-1' | etc-update. Отправляет отчет на E-mail;
- В случае неудачи, не выполняет скрипты и шлет отчет об ошибке.
Метка
Для того, чтобы сервера обновились следует занести метку в виде даты в файл trueportage/profiles/.update.mark. Или в любой другой профиль.
.update.mark
20090325 20090327 20090330 20090415 20090425
Обновление
Скрипт сверяет этот файл с тем, который есть у него. И если находится дата которой нет то происходит обновление.
$ diff local/update.mark remote/update.mark | grep '>' | gawk {'print $2'}
20090425
Обновление конфигурационных файлов
Обновление конфигурационных файлов осуществляется путем вызова "echo '-1' | /usr/sbin/etc-update". Таким образом осуществляются только незначительные изменения, которые никак не повлияют на работу сервера.
Отчет выглядит следующим образом:
etc-update log: Scanning Configuration files... The following is the list of files which need updating, each configuration file is followed by a list of possible replacement files. 1) /etc/profile.d/bash-completion.sh (1) 2) /etc/slsh.rc (1) Please select a file to edit by entering the corresponding number. NOTE: 2 updates remaining
Выполнение скриптов
В случае успешного обновления выполняются находящиеся в папке portage/profiles/.afterupscripts/ скрипты по маске: <date>-*-*.bash. Так же поддерживается наследование.
Так же существует поддержка скриптов которые выполняются всегда после обновления. Они имеют вид: always-*-*.bash.
Отчет выглядит следующим образом:
Executing: /usr/portage/local/layman/trueportage/profiles/.afterupscripts/20090518-1-test.bash Script done Executing: /usr/portage/local/layman/trueportage/profiles/.afterupscripts/always-1-test.bash Always script done
Отправка отчетов
/etc/ssmtp/ssmtp.conf
root=alexandr.ivanchenko@trueoffice.ru mailhub=<smtp-server> hostname=<smtp-server> FromLineOverride=YES # нужно для того, что бы поле From: задавал mutt
/etc/trueupdate/MTrueUpdate
... set sendmail="/usr/sbin/ssmtp -v" set use_from=yes set realname="Система автоматического обновления" set from="report@trueoffice.ru" set envelope_from=yes set nouse_domain set send_charset="utf-8" set charset="utf-8" ...