Slack - автоматизирайте конфигурацията на услугата
Архив на изданията / 2009 / Брой №2 (75) / Slack - автоматизирайте конфигурацията на услугите
Категория: Администрация / Продукти и решения |
АЛЕКСЕЙ КОРОБКИН
Slack - автоматизирайте конфигурацията на услугата
Творческата работа по настройването на сървър се превръща в скучна работа, ако има сто от тези сървъри. Със slack този процес може да се автоматизира бързо и рентабилно.
Преди няколко дни настройвах един от вторичните сървъри, който трябва да изпълнява LDAP реплика, вторичен контролер Kerberos и резервен IRC сървър. След като инсталацията на Linux приключи, изпълних следната команда:
# slack ldapslave kdcslave ircserver
Когато тази команда завърши, настройката на сървъра беше завършена. С други думи, slack [1] свърши цялата работа вместо мен, прост, но мощен инструмент за управление на настройките. Slack спестява ценно време на системния администратор, като автоматизира инсталирането и конфигурирането на услугите и им позволява да се съсредоточат върху по-креативна работа.
В повечето случаи настройката на услуга под Linux се състои от инсталиране на всички необходими пакети, ръчно настройване на инсталираните файлове и писане на конфигурационни файлове. Ако трябва да конфигурирате една и съща услуга поне два пъти, тази работа трябва да бъде автоматизирана. А slack е може би най-лесният инструмент за автоматизация.
Настройката на софтуера Slack се извършва в три стъпки:
Както можете да видите, алгоритъмът на slack е много прост. Скриптовете могат да бъдат написани на всеки език и могат да бъдат всякакви изпълними, от bash скрипт до C++ двоичен файл, slack не ви ограничава по никакъв начин. Файлове отсървърите се копират с помощта на rsync. Кой транспорт rsync ще използва също зависи от вас.
Защо отпуснатост?
Скептичният читател ще попита защо да преоткрива колелото, ако всеки мениджър на пакети работи почти по същия начин – просто създайте свой собствен пакет и го инсталирайте на сървърите.
Отговор: защото създаването на собствен пакет е твърде времеемък процес. В повечето случаи е по-удобно да инсталирате стандартен пакет и леко да го модифицирате, за да отговаря на вашите нужди, вместо да отделяте време за писане на манифест на пакета, създаване на правила за инсталиране, цифров подпис и друга "бюрокрация".
Разбира се, slack не може да се конкурира с професионални пакети като IBM Tivoli Automation, но неговата простота със сигурност ще бъде оценена от администраторите на уеб сървърни ферми и Linux клъстери, които се нуждаят от най-простата и надеждна автоматизация.
Името slack идва от "Sysadmins" Lazy Auto-Configuration Kit" и не е свързано с дистрибуцията на Slackware Linux.
Изберете сървъра, който ще съхранява конфигурационните файлове - в терминологията на slack той се нарича slack master. Удобно е да създадете slack-master псевдоним за него в DNS.
коментар = моето слабо репо
На клиентите трябва да инсталирате slack. Почти всички дистрибуции имат съответен пакет, но изграждането му от сорс не е никак трудно. Архивът с изходните кодове може да бъде изтеглен от страницата на проекта [1].
В конфигурационния файл /etc/slack.conf е достатъчно да редактирате само променливата SOURCE, която показва къде се намира slack хранилището. Попълва се според стандартния синтаксис rsync [2].
Например, ако сте конфигурирали модула slack в rsyncd.conf, както е описано по-горе, тогава правилният ред ще бъдеизглежда така:
Останалите променливи могат да бъдат оставени със стойностите им по подразбиране.
Като пример, нека създадем слаба роля, която ще инсталира IRC клиента на irssi, ще добави потребителя на ircbot и ще копира конфигурационния файл на стандартния клиент на irssi в домашната директория на този потребител. Нека наречем ролята безумно ircbot.
Стъпка 1. Изградете йерархия от файлове на сървъра. Нашият сървър се нарича slack-master и файловете са в /var/slack. В /var/slack има директория roles, която съдържа директорията на ролите на ircbot. С други думи, на сървъра всички ролеви файлове на ircbot се съхраняват в папката /var/slack/roles/ircbot (вижте фиг. 1).
Фигура 1. Файлова йерархия на slack master
Структурата на тази директория е:
- files поддиректория с файлове, които да бъдат копирани на целевата машина.
Вътре в директорията с файлове в бъдещата домашна директория на потребителя на ircbot ще направим поддиректория .irssi и в нея ще създадем конфигурационен файл.
# mkdir -p home/ircbot/.irssi
В този файл ще поставим обичайните настройки за irssi IRC клиента. Съдържанието на файла няма значение, това е само пример:
real_name = "IRC бот";
Като цяло файловете се намират във файловата директория така, както биха били разположени в целевата файлова система, като се започне от основната директория / и се вземат предвид всички поддиректории. Например за роля на уеб сървър съдържанието на директорията с файлове може да изглежда така:
- и т.н./apache2/apache2.conf;
- etc/apache2/conf.d/security;
- и т.н./init.d/apache2;
- и т.н./cron.daily/apache2;
- usr/share/doc/apache2/README.patched.
# Актуализиране на списъка с пакети
apt-get инсталирайте irssi
# Създайте своя собствена група за ircbot акаунта
# Създайте ircbot акаунт, домашна директория занея, добавете към групата ircbot
useradd -g ircbot -c "IRC бот" -m -d /home/ircbot ircbot
Този скрипт ще бъде изпълнен от slack, преди да започне да копира файлове.
Стъпка 3. Създайте скрипт след инсталиране, който ще се изпълнява, след като файловете бъдат копирани. Този скрипт изпълнява последните стъпки от инсталирането и конфигурирането на ролята на ircbot.
# Коригирайте разрешенията за директорията .irssi
chown -R ircbot:ircbot /home/ircbot/.irssi
# Отчет за завършване на инсталацията
echo "Инсталирането на IRC Bot е направено."
Моля, обърнете внимание: това са скриптовете за предварително и след инсталиране, които са основният инструмент на slack. Тъй като те се изпълняват на целевата машина, вие имате уникална възможност да прочетете нейните локални параметри, да конфигурирате инсталирания софтуер индивидуално за тази машина и тази мрежова среда.
Използвайте въображението си и напишете инсталационни скриптове, така че да не е необходимо да натискате клавиш или да въвеждате аргументи ръчно, особено след като slack може да приема само имена на роли и вградените параметри от командния ред. Пишете на скриптовия или езика за програмиране, който познавате най-добре - slack просто изпълнява предварително инсталираните и слединсталиращите файлове с извикване exec(), така че няма ограничения.
На целевата машина изпълнете:
В зависимост от транспорта, използван от rsync, slack може да поиска парола за свързване със slack master. Вижте документацията на slack за това как да настроите удостоверяване без парола за rsync и ssh с помощта на сертификати.
След като въведете паролата, slack ще копира всички ролеви файлове на ircbot от slack master във временна директория, ще изпълни скрипта за предварително инсталиране, след това ще прехвърли файловете от временната директория в техните постоянни местоположения и след това ще изпълни postinstall.Пълният алгоритъм за това как работи slack при инсталиране на роля е показан на фиг. 2.
Фигура 2. Slack алгоритъм
Това е всичко, пакетът е инсталиран, акаунтът е създаден и в домашната директория на ircbot има предварително конфигуриран конфигурационен файл с правилните права за достъп до него. Просто, нали?
Простотата на Slack е едновременно неговата сила и слабост. Slack прави само това, което пишете във вашите предварително инсталирани и слединсталиращи скриптове. Контрол на зависимости, грешки, преинсталирания, неочаквани среди - това е всичко, което трябва да внедрите сами, ако почувствате нужда от това. Във всеки случай не забравяйте да тествате старателно ролята, преди да я използвате. Когато инсталира ролята, slack запазва резервни копия на файлове, които сам презаписва, но не проверява вашите скриптове по никакъв начин и не предоставя възможност за връщане назад на самата роля.
Как точно да използва slack, всеки администратор решава сам. Ако имате много Linux работни станции във вашата мрежа или трябва да настроите един и същи тип услуги на сървъри или дори просто да възстановявате един и същ сървър през цялото време, slack може да ви спести време и усилия.
В даден момент може дори да решите да включите slack в автоматичната инсталация на операционната система, така че изобщо да не се доближавате до сървъра, след като инсталацията на ОС започне. Стартирайки без списък с роли, slack ще прочете файла conf/roles.conf, който сте подготвили в неговото хранилище, и ще определи кои роли да инсталира въз основа на името на компютъра.
Slack не е свързан с никоя платформа или дистрибуция и същата роля може първо да провери на коя дистрибуция работи и след това да инсталира rpm, deb или други пакети. Slack е написан на Perl и може успешно да се използва всмесена среда FreeBSD, Linux и Solaris.
Простотата на slack лесно печели сърцата на администраторите и помага за намаляване на усилията за документиране, като вместо това се фокусира върху автоматизацията. И освен това, как иначе ще демонстрирате на колегите администратори таланта си да пишете скриптове на любимия си език?