Jump to content

Процесс внесения изменений на серверах


Recommended Posts

Posted

Друзья, расскажите мне, как устроен процесс администрирования серверов (и телеком-железа)?

Давайте я разобью вопрос на подвопросы:

 

1) Документируете ли вы изменения, сделанные на сервере? Как вы это делаете? Используете ли утилиты клёвые, acct например?

2) Перед крупными изменениями на сервере, тестируете ли предполагаемые изменения на стенде? Каким образом производится развёртывание изменений на боевые сервера? Пишете для себя статьи а–ля lissyara.su?

3) Допустим, у Вас огромное количество серверов админится по подписке. Наверняка, уже есть солдатский набор решений (например, скрипт устанавливающий и настраивающий Apache+Mysql+php)? В каком виде в это держите? SH–скрипт? Makefile? Буквально сегодня столкнулся с одним из комментариев у линуксоидов, смысл был такой "я изменения в системные конфиги делаю через деб пакет, чтобы можно было легко накатить после апдейта". Как это делают действительно крутые админы?

Posted
Сервера с IPMI на отдельном порту, конфиги в svn или cvs... документирование осуществляется внесением комента при коммите.
залип в гугле на аббревиатуру IPMI

 

крутая штука, судя по всему.

 

 

Posted

Выкладываю статью из нашей базы знаний о том, как мы развернули бэкап конфигов через svn.

Концепция:

На централизованном сервере имеем репозиторий с бэкапами конфигов.

С локального сервера бэкапятся папки /etc и /usr/local/etc

Конфиги всех программ должны храниться в одной из этих папок. Если это не так, то переносим конфиги в /usr/local/etc и делаем symlink в оригинальном месте.

 

Установка сервера:

 

[/usr/ports/devel/subversion]# make WITH_ASVN="YES" WITHOUT_BDB="YES"

[/usr/ports/devel/subversion]# make install

 

[/usr/ports/devel/subversion]# cat /etc/rc.conf

svnserve_enable="YES"

svnserve_flags="-d --listen-port=3690 --listen-host=0.0.0.0"

svnserve_data="/usr/local/repositories"

svnserve_user="svn"

svnserve_group="svn"

 

 

[/usr/local/server-repositories]# cat svnserve.conf

[general]

anon-access = none

auth-access = write

password-db = passwd

realm = york/etc

 

 

/usr/local/server-repositories/conf/> cat passwd

[users]

mickey = mickeymouse

 

Добавляем пользователя:

Username : svn

Password : <disabled>

Full Name : subversion

Uid : 1003

Class :

Groups : svn svn

Home : /home/svn

Shell : /usr/sbin/nologin

Locked : no

 

Скрипт для добавления репозиториев для клиентских машин:

#!/bin/sh

HOST=$1

svnadmin create $HOST

svnadmin create $HOST/etc

svnadmin create $HOST/local

svnadmin create $HOST/local/etc

chown -R svn:svn $HOST

find $HOST -type d -name conf -print > .tmp

cat .tmp | xargs rm -rf

cat .tmp | xargs -n 1 ln -s /usr/local/server-repositories/conf/

rm .tmp

 

Кладём этот скрипт в папку с репозиториями /usr/local/server-repositories/ и запускаем с аргументом - HOSTNAME нужного клиента

 

Настраиваем клиента

 

[root@miami /usr/ports/devel/subversion]# make WITH_ASVN="YES" WITHOUT_BDB="YES"

[root@miami /usr/ports/devel/subversion]# make install

[root@miami /usr/ports/misc/findutils]# make install

 

Закидываем на клиента скрипт http://svn.collab.net/repos/svn/trunk/cont...lient-side/asvn - это wrapper для svn, который умеет сохранять права доступа на файлы.

 

Создаём на сервере репозиторий для этого клиента (см. выше) и разворачиваем на клиенте рабочие копии:

#!/bin/sh

HOST=`hostname -s`

SERVER=svn://york.pip.ru

cd /etc

asvn co $SERVER/$HOST/etc .

asvn add *

asvn ci

 

cd /usr/local/etc

asvn ci $SERVER/$HOST/local/etc .

asvn add *

asvn ci

 

Для апдейта конфигов из репозитория - следующий скрипт:

cd /etc

asvn up

cd /usr/local/etc

asvn up

 

Посмотреть свежие изменения на сервере:

Whatsnew.sh

cd /etc

asvn diff

cd /usr/local/etc

asvn diff

 

Закинуть конфигурацию в репозиторий:

#!/bin/sh

COMMENT=$1

if [ -z $COMMENT ]

then

echo "Comment needed"

exit 1

fi

cd /etc

asvn ci -m $1

cd /usr/local/etc

asvn ci -m $1

 

Процесс работы примерно такой:

1. Заводишь заявку на обслуживание сервера

2. Заходишь на сервер, делаешь свои грязные дела

3. Выполняешь команду new, интересную информацию из её вывода копируешь в заявку.

4. Если всё ок работает, то делаешь команду "ok <№ заявки" например ok 1234

5. Команда ok закидывает всё новое в бэкап.

 

Литература:

http://www.gnuman.ru/stuff/svn.php - Краткий справочник svn

http://shifteleven.com/articles/2007/01/01...iguration-files - Using Subversion to Maintain your Configuration Files

http://www.ibm.com/developerworks/java/lib.../j-svnbins.html - Performance tuning Subversion, изучение работы SVN при хранении бинарников.

http://www.mythago.net/svn_for_backup.html - Using Subversion for Backup

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.