Развертывание Linux при помощи Cobbler::Журнал СА 4.2010
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Архив номеров
Контакты
   

  Опросы
  Статьи

Электронный документооборот  

5 способов повысить безопасность электронной подписи

Область применения технологий электронной подписи с каждым годом расширяется. Все больше задач

 Читать далее...

Рынок труда  

Системные администраторы по-прежнему востребованы и незаменимы

Системные администраторы, практически, есть везде. Порой их не видно и не слышно,

 Читать далее...

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

 Читать далее...

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

 Читать далее...

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 9937
Комментарии: 0
Потоковая обработка данных

 Читать далее...

19.03.2018г.
Просмотров: 8149
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

 Читать далее...

19.03.2018г.
Просмотров: 8254
Комментарии: 0
Конкурентное программирование на SCALA

 Читать далее...

19.03.2018г.
Просмотров: 5225
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 5909
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

Друзья сайта  

 Развертывание Linux при помощи Cobbler

Архив номеров / 2010 / Выпуск №4 (89) / Развертывание Linux при помощи Cobbler

Рубрика: Администрирование /  Автоматизация

Сергей Яремчук СЕРГЕЙ ЯРЕМЧУК, фрилансер. Автор более 800 статей и четырех книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС

Развертывание Linux при помощи Cobbler

Если часто приходится разворачивать большое количество систем, без средств автоматизации не обойтись. В Linux есть все необходимое

Официальное руководство по установке любой ОС начинается с фразы «Вставьте диск в привод…» – это привычный путь, который подходит лишь для инсталляции одной-двух систем, под конкретные условия. Если же стоит задача развернуть целый парк машин, необходимо подумать уже об оптимизации и автоматизации процесса. Ведь ставить даже десяток серверов с одного CD/DVD с заявленным набором приложений – достаточно долгая и утомительная процедура, причем при переустановке системы приходится повторять все сначала.

В различных советах по быстрому развертыванию большого количества Linux-систем предлагалось использовать два пути: клонирование при помощи решений вроде dd, partimage, Clonezilla, Systemimager или Ghost4Linux и автоматическая установка. Первый вариант не обеспечивает нужной гибкости и подходит больше при развертывании систем на однотипных компьютерах – например, виртуальных машинах. Второй вариант известен как Kickstart достаточно давно и популярен в дистрибутивах, базирующихся на RedHat, и с недавнего времени – Ubuntu и openSUSE (называется AutoYaST).

Современные компьютеры по большей части поддерживают сетевую загрузку, поэтому необходимость в использовании привода компакт-дисков отпадает. Остается настроить лишь TFPT-, DHCP- и DNS-серверы, подготовить образы и kickstart/AutoYaST-файлы. Процедура прекрасно описана в статье Андрея Маркелова [1], если разобраться – ничего сложного процесс собой не представляет и используется уже давно. Единственный минус такого способа – это неудобство управления. Практически все операции по развертыванию, настройке, подключению репозитариев, отслеживанию состояния и так далее приходится выполнять вручную. До недавнего времени для Linux не было проектов, обеспечивающих создание удобной среды установки, не говоря уже о более мощных решениях управления инфраструктурой наподобие System Center Configuration Manager, предлагаемого Microsoft. Но необходимость в подобных решениях давно назрела, и приятно отмечать, что в последнее время наметились изменения в лучшую сторону и теперь есть даже из чего выбирать. Это проект Cobbler [2], о котором заговорили еще в 2007 году, о нем пойдет речь далее в статье. Также следует отметить проект Ultimate Deployment Appliance [3], разработчики которого предлагают готовую систему (поставляет в виде образа виртуальной машины), обеспечивающую все необходимые сервисы для установки Windows 2000/XP/2003, Linux (Ubuntu, Fedora и SUSE), VMware ESX и Solaris. Для чего используются все технологии RIS, Kickstart, AutoYaST и JumpStart/Solaris. Единственный минус – то, что в списке официально поддерживаемых присутствуют только устаревшие версии дистрибутивов.

Далее Quattor [4] – набор инструментов, обеспечивающий весь этап от установки до обслуживания ОС. Далее FAI (Fully Automatic Installation) [5] – весьма удобная разработка, обеспечивающая процесс автоматической неинтерактивной установки Linux-систем (Debian, Ubuntu, openSUSE/SLES, RHEL, CentOS, Mandriva, Solaris) как в физическую, так и в виртуальную среду с большими возможностями. В качестве базовой системы используется Debian/Ubuntu, процесс установки управляется агентом, загружаемым посредством PXE, CD- или USB-носителя.

Проект Сobbler

Сobbler – сервер сетевой установки для Linux, обеспечивающий быстрое построение как необходимой среды развертывания и управления процессом инсталляции ОС на новые компьютеры или виртуальные машины (Xen, qemu, KVM или VMware Server), так и последующей переустановки систем. Причем от администратора скрыты особенности работы виртуальных машин. Написан Сobbler на Python и является связкой для некоторых стандартных для таких случаев компонентов PXE, TFTP, DHCP и других. Он упрощает администратору подготовку среды бездисковой загрузки, загрузку образов и поддержание нескольких конфигураций. Управление осуществляется при помощи консольной утилиты cobbler или удобного веб-интерфейса. При переустановке системы может быть использована PXE-загрузка, кроме этого GRUB перенастраивается на запуск среды установки. Предусмотрено создание подготовленного ISO-образа для локальной установки и переустановки системы. При этом Сobbler берет на себя всю нагрузку по настройке TFTP, DHCP, DNS, зеркалированию репозитариев.

Для переустановки и поддержки виртуализации задействуется консольная утилита koan (kickstart-over-a-network).

Следует заметить, что Cobbler интегрирован в среду управления Spacewalk [6] и Symbolic [7], которые совместно с приложением автоматизации управления конфигурацией Puppet [8] обеспечивают полный цикл управления ИТ-инфраструктурой, построенной с применением Open Source-компонентов. Своего рода аналоги SCCM от Microsoft, который используется в Windows-среде. Распространяется Cobbler по лицензии GNU GPL.

Установка Cobbler

Изначально Cobbler рассчитан на установку и развертывание дистрибутивов, производных от RedHat. Поэтому его в первую очередь и следует рекомендовать для установки RHEL, CentOS, Fedora и других решений, базирующихся на YUM. Возможность развертывания Debian, Ubuntu, openSUSE и их производных также предусмотрена. Хотя это потребует на порядок больше усилий, которые, к сожалению, не всегда приводят к желаемому результату. Дистрибутивы Slackware и Gentoo в списках поддержки не значатся. Забегая вперед, скажу, что малый список ОС – это и плюс, и минус. Минусы понятны – негде развернуться, а вот плюс вытекает из минуса. Учитывая возможность/необходимость создания локального репозитария, поддержка одновременно большого количества дистрибутивов может стать накладной по ресурсам. Ведь придется хранить несколько версий ОС и зеркала репозитариев.

Так как Fedora находится на острие разработки RedHat, в его репозитариях, как правило, находится более поздняя версия Cobbler и Koan. При необходимости установить самый свежий релиз всегда можно использовать GIT-репозитарий проекта (http://git.fedorahosted.org/git/cobbler/) или архив с исходными текстами (http://people.fedoraproject.org/~shenson/cobbler) и собрать все необходимое вручную.

В RHEL и CentOS необходимые пакеты находятся в Extras Packages, который необходимо вначале подключить:

# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

Теперь устанавливаем:

# yum install cobbler koan

В процессе будут установлены некоторые пакеты для удовлетворения зависимостей – в частности, TFTP-сервер, необходимый для раздачи образов, и версия Cobbler 1.6.6 (на момент написания статьи в архивах уже 2.0.3, но сути это не меняет, поэтому не будем останавливаться).

Кроме этого, нам понадобится веб и DHCP-сервер, набор утилит yum-utils, менеджер кластера cman и xinetd:

# yum install yum-utils httpd xinetd cman

Все установлено, теперь можно переходить к настройкам. В принципе, веб-сервер – необязательный компонент и необходим только в том случае, если планируется использовать веб-интерфейс. Иначе все настройки можно производить в командной строке. Просмотреть все параметры утилиты cobbler можно в man-странице или запустив ее с параметром help.

Настройки Cobbler

Настройки Сobbler находятся в каталоге /etc/cobbler. Основным является файл /etc/cobbler/settings, в котором прописываются установки сервисов, используемые Cobbler в своей работе, настройки LDAP, виртуальных интерфейсов, расположение рабочих файлов и многое другое. Назначение некоторых параметров станет понятно из описания. Чтобы проверить готовность компонентов сервера развертывания и провести семантический анализ файла /etc/cobbler/settings (файл в формате YAML, YAML Ain"t Markup Language), необходимо запустить cobbler с параметром check:

# cobbler check

Рисунок 1. Запущенный cobbler check позволяет определить проблемы

Рисунок 1. Запущенный cobbler check позволяет определить проблемы

В ответ получим список, озаглавленный как «The following potential problems were detected» – в нем содержатся проблемы, мешающие Cobbler, и главное – подсказки для ее решения. При «чистой» установке в минимальной CentOS у меня получилось 10 пунктов. В других ситуациях их количество, вероятно, будет иным. Кроме этого, после изменения параметров внутри файла /etc/cobbler/settings проверку необходимо запустить повторно. Причины две: могут потребоваться дополнительные системные установки исходя из новой конфигурации (например, запустить DHCP-сервер) или появиться семантические ошибки – кстати, как говорят, на ровном месте:

/etc/cobbler/settings is not a valid YAML file

Теперь параметры. Как говорилось, в большинстве они понятны и хорошо комментированы. В частности, параметр server и next_server указывают на локальную систему, следует здесь прописать IP-адрес или имя, которое будет доступно в сети, иначе не будет возможна сетевая PXE-загрузка:

server: 192.168.17.209
next_server: 192.168.17.209

Кроме этого Cobbler может управлять настройками служб DNS, DHCP и TFTPD, в каталоге /etc/cobbler расположены специальные шаблоны (файлы с расширением template) для управления dnsmasq, named, tftpd или dhcpd, в зависимости от того, какие из них будут использованы в работе (dnsmasq может заменить все указанные сервисы – DNS, DHCP и TFTP). По умолчанию функции управления для DNS и DHCP отключены. Поэтому настройки необходимо производить самостоятельно, используя конфигурационные файлы соответствующих сервисов. Учитывая, что Cobbler часто устанавливается на рабочем месте администратора, а DNS- и DHCP-сервисы обеспечиваются другими системами, такие настройки обычно подходят для большинства ситуаций. Если же все необходимое будет развернуто на одной станции (например, на ноутбуке аутсорсера), то удобнее для их настройки задействовать Cobbler. Тем более что это дает несколько плюсов, которые будут понятны по ходу статьи. Соответственно, и сами сервера, обеспечивающие необходимые сервисы, должны быть установлены в системе:

# yum install dhcp bind

или:

# yum install dnsmasq

Далее активируем их в файле /etc/cobbler/settings, установив в «1» два параметра:

manage_dhcp: 1
manage_dns: 1

По умолчанию в качестве DNS- и DHCP-сервера используются BIND и DHCP, переопределить их на dnsmasq можно в файле /etc/cobbler/modules.conf, заменив два параметра:

# cat /etc/cobbler/modules.conf

[dns]
# module = manage_bind
module = manage_dnsmasq

[dhcp]
# module = manage_isc
module = manage_dnsmasq

Необходимо открыть в правилах iptables доступ ко всем используемым портам 69, 80 и 25151 (XMLRPC-порт можно изменить в настройках файла settings). Если используется SELinux, необходимо также разрешить сетевой доступ к веб-серверу Apache и установить необходимый контекст:

# setsebool -P httpd_can_network_connect true
# /usr/sbin/semanage fcontext -a -t public_content_t "/var/lib/tftpboot/.*" && /usr/sbin/semanage fcontext -a -t public_content_t "/var/www/cobbler/images/.*"

Хотя в некоторых случаях проще отключить SELinux. Например:

# nano /etc/selinux/config

SELINUX=disabled

И перезагрузить систему.

Разрешаем запуск tftp в конфигурационном файле xinetd, для чего в /etc/xinetd.d/tftp устанавливаем параметр disable в no:

# nano /etc/xinetd.d/tftp

service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

Возможна аутентификация через веб-интерфейс несколькими способами: пароль, созданный утилитой htdigest (сохраняется в файле /etc/cobbler/users.digest), Kerberos, LDAP, Spacewalk/Satellite и тестовый (используется для отладки, всегда testing/testing). Но в настройках по умолчанию аутентификация через веб-интерфейс блокирована. Разрешим ее, для примера будем использовать digest-файл. Для чего в файле /etc/cobbler/modules.conf меняем значение параметра module в секции authentication:

[authentication]
# module = authn_denyall # блокировка аутентификации
module = authn_configfile

По умолчанию логин и пароль для регистрации – cobbler/cobbler. Его следует изменить при помощи команды:

# htdigest /etc/cobbler/users.digest "Cobbler" cobbler

Теперь – очередь шаблонов сервисов, которые находятся в каталоге /etc/cobbler в файлах с расширением .template. По своей структуре они соответствуют аналогичным файлам, в которых производятся настройки сервисов. Подробно структура некоторых из них описана в статье Андрея Маркелова [1]; кроме этого, шаблоны в файлах уже настроены (на сеть 192.168.1.0/24), и необходимо лишь уточнить текущие сетевые настройки – в частности, IP-адреса DNS-сервера, шлюза. Причем в файлах используются переменные, и в результирующих конфигурациях будут уже осуществлены подстановки из настроек текущей системы: например, /etc/cobbler/dhcp.template:

# nano /etc/cobbler/dhcp.template

subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option domain-name-servers 192.168.1.1;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.1.100 192.168.1.200;
filename "/pxelinux.0";
default-lease-time 21600;
max-lease-time 43200;
next-server $next_server;
}

Кстати, после внесения изменений в конфигурационные файлы и шаблоны нет необходимости перезапускать вручную демон Cobbler или другие сервисы, просто следует синхронизировать данные командой:

# cobbler sync

После чего будут последовательно остановлены все службы, заменены конфигурационные файлы шаблоном и произведен запуск. При работе через веб-интерфейс нажимаем ссылку SYNC.

После всех настроек запускаем сервисы:

# service xinetd restart
# service cobblerd restart
# service dhcpd restart
# service httpd restart
# service named restart

И обеспечиваем их автозапуск:

# chkconfig dhcpd on
# chkcondig httpd on
# chkconfig xinetd on
# chkconfig named on
# chkconfig cobblerd on

Теперь можно переходить по адресу http://127.0.0.1/cobbler/web, где после регистрации будет доступно меню редактирования параметров.

Рисунок 2. Просмотр настроек через веб-интерфейс

Рисунок 2. Просмотр настроек через веб-интерфейс

Подготавливаем систему к развертыванию

В веб-интерфейсе доступно 8 основных меню: DOCS, SETTING (вывод установок Cobbler), DISTROS, PROFILES (профили установки, в том числе и на виртуальные машины), SYSTEMS (системы), REPOS (репозитарии), IMAGES и KICKSTARTS. Принцип настроек при помощи графического меню достаточно прост. Для добавления выбираем нужный пункт, в нем ADD и заполняем предложенные поля. Другие подпункты позволяют вывести список и произвести поиск по заданным критериям.

Работу в консоли разберем чуть подробнее.

Для импорта образа системы вставляем CD/DVD-диск в привод или монтируем ISO в один из каталогов. Затем используем ключ import:

# mount -t auto -o loop ./CentOS-5.4-x86_64-bin.iso /media/iso
# cobbler import --mirror=/media/iso --name=Centos5.4 --arch=x86_64

Процесс импорта образа выводится в консоль, по окончании будут выполнены еще три шага: добавление дистрибутива, в процессе которого создаются профили (например, в CentOS их три – обычный, XEN и Rescue), создание ассоциации с репозитарием и kickstart-файлом. Кроме этого, существует еще рад дополнительных параметров. Все они описаны в man cobbler. Например, --breed указывает на происхождение дистрибутива; различают redhat, debian, ubuntu и suse. Кстати, понятие «дистрибутив» (distro) в Cobbler чуть отличается от общепринятого. В терминологии Cobbler distro это набор файлов для загрузки – ядро и initrd (обязательные), плюс – kickstart-файл, набор дополнительных параметров ядра и другие. Кроме импорта из образа distro можно создать отдельной командой:

cobbler distro add --name=string --kernel=path --initrd=path [--kopts=string] [--ksmeta=string] [--arch=x86|x86_64|ia64] [--breed=redhat|debian|suse]

Параметры, в общем, понятны, за исключением kopts, при помощи которого указываются параметры ядра и ksmeta, позволяющего дополнять или подменять установки в kickstart-файле специфическими для данного distro.

Рисунок 3. Меню добавления Distro

Рисунок 3. Меню добавления Distro

После добавления дистрибутива он будет показан в веб-консоли или в списке команды cobbler:

# cobbler list

distro Centos5.4-x86_64
   profile Centos5.4-x86_64
   profile rescue-Centos5.4-x86_64
distro Centos5.4-xen-x86_64
   profile Centos5.4-xen-x86_64

Если в списке дистрибутива нет, то нужно просто выполнить команду cobbler sync. Профиль представляет собой файл с описанием всех параметров, используемых при установке системы. Полный их список можно просмотреть при помощи ключа report или в веб-консоли.

# cobbler profile list
# cobbler profile report --name=Centos5.4-x86_64

Профили можно копировать, создавая другие установки на основе имеющихся:

# cobbler profile copy --name=Centos5.4-x86_64 --newname=web-server

Теперь достаточно указать отличия для нового профиля – например, свой kickstart-файл:

# cobbler profile edit --name=web-server --kickstart=/var/lib/cobbler/kickstarts/web-server.ks

Чтобы была возможность установить из kickstart-файла пакеты, которых нет в основном репозитарии, следует указать дополнительные репозитарии, которые затем используются в профилях.

Рисунок 4. Список Kickstart-шаблонов

Рисунок 4. Список Kickstart-шаблонов

Получим список известных репозитариев:

# cobbler repo list

Здесь обнаружится один неприятный момент. Даже если бы мы использовали при импорте образа DVD, все пакеты, которые на нем имеются, будут доступны лишь при установке дистрибутива. Но они не могут служить сетевым репозитарием – впрочем, не всегда это необходимо, так как в большинстве случаев используются более свежие файлы, полученные с внешнего репозитария. Добавить новый репозитарий в список Cobbler просто:

# cobbler repo add --name=Centos5-RPMFORGE --mirror= http://fr2.rpmfind.net/linux/dag/redhat/el5/en/x86_64/rpmforge/
    --priority=40 --createrepo-flags="-c cache" --arch= x86_64

Обновление большого количества систем лучше производить из локальной копии. Создадим ее:

# cobbler sync
# cobbler reposync

Подобные команды необходимо запускать перед каждой установкой или обновлением систем. Если подобные операции производятся часто, то команду cobbler reposync можно поручить cron. Учитывая размеры репозитариев, выполнение последней команды займет время, файлы будут помещены в нашем случае в /var/www/cobbler/repo_mirror/Centos5-RPMFORGE. Собственно, все связанные файлы сохраняются в подкаталоги в /var/www/cobbler, поэтому этот раздел должен иметь достаточно места. Теперь подключим файлы с DVD, создав еще один репозитарий:

cobbler repo add
    --name=centos5.4-x86_64-DVD-base
    --mirror=http://192.168.17.209/cobbler/ks_mirror/CentOS5.4- x86_64/
    --keep-updated=N  # отключаем обновление
    --mirror-locally=0
    --arch= x86_64

Список репозитариев указывается в профиле при помощи параметра:

--repos="centos5.4-x86_64-DVD-base Centos5-RPMFORGE "

Причем если в settings параметр yum_post_install_mirror установлен в «1» (по умолчанию), эти репозитарии будут доступны в системе и после ее установки.

Теперь можно запускать клиентскую машину, в процессе PXE загрузки будет выведено меню, шаблон которого находится в файле /etc/cobbler/pxe/pxedefault.template. При необходимости можно подправить файл pxedefault.template, чтобы информация больше соответствовала конкретным условиям. Пароль по умолчанию для пользователя root, устанавливаемый в kickstart-файле cobbler, изменить его можно в параметре default_password_crypted файла /etc/cobbler/settings.

Cobbler позволяет сразу добавить систему в базу Cobbler с указанием конкретного профиля, в этом случае установка производится автоматически:

# cobbler system add --name=web01 --profile=web-server --mac=00:01:02:03:04:05

Кроме прочего, при добавлении системы в каталоге /tftpboot/pxelinux.cfg/ будет создан специальный конфигурационный файл (имя соответствует МАС-адресу). Остальные системы будут «довольствоваться» файлом default.

Если DHCP-сервер управляется Cobbler, то можно указать еще и параметр --ip= и  --hostname=. После синхронизации настроек с помощью команды cobbler sync сервис DHCP будет готов выдать нужному клиенту его IP-адрес. Проверяем:

# cobbler system list
# cobbler system report

В случае, когда администратор, который управляет процессом развертывания, не может использовать PXE-загрузку, система не имеет данной функции, недоступны настройки ВРСЗ и так далее, есть возможность создания ISO-образа, который затем можно использовать для загрузки систем. Для этого используем ключ buildiso. Например, чтобы создать ISO-образ, содержащий все ядра и initrd-файлы, известные Cobbler с соответствующим меню, используем:

# cobbler buildiso

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

# cobbler buildiso --systems="web01"

Кроме этого утилита cobbler позволяет создать диск, который содержит все необходимые файлы и пакеты:

# cobbler buildiso --distro=Centos5.4-x86_64 --standalone

Рисунок 5. Загрузочное меню Cobbler

Рисунок 5. Загрузочное меню Cobbler

***

Собственно, это основное, что хотелось бы рассказать о Cobbler – достаточно простом в настройке решении, существенно упрощающем развертывание большого числа Linux-систем.

  1. Маркелов А. Создаем сервер сетевой установки Fedora/RHEL. //Системный администратор, №11, 2008 г. – C. 34-36.
  2. Сайт проекта Сobbler – https://fedorahosted.org/cobbler.
  3. Сайт проекта Ultimate Deployment Appliance – http://www.ultimatedeployment.org.
  4. Сайт проекта Quattor – http://sourceforge.net/projects/quattor.
  5. Сайт проекта FAI – http://www.informatik.uni-koeln.de/fai.
  6. Сайт проекта Spacewalk – http://www.redhat.com/spacewalk.
  7. Сайт проекта Symbolic – http://www.opensymbolic.org.
  8. Яремчук С. Централизованная настройка UNIX-систем с помощью Puppet. //Системный администратор, №7, 2007 г. – C. 58-61.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru