Инструкция по установке

Установка на родительский сервер

Установка

# 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"
...