Проект

Общее

Профиль

Управление SCI сервисами » История » Версия 6

« Предыдущее - Версия 6/16 (Разница(diff)) - Следующее » - Текущая версия
Владимир Ипатов, 06.12.2012 16:46


Управление SCI сервисами

PUPPET

Puppet - это платформа для автоматизации системного администрирования большого количества компьютеров.
Puppet позволяет легко автоматизировать задачи по настройке операционных систем и используется для автоматической настройки узлов и виртуальных машин в кластере.
Документация можно найти здесь: http://docs.puppetlabs.com/

Управляющий сервер - "Puppet master" установлен на сервисной виртуальной машине 'sci'.

В комплекте поставки есть следующие модули:
  • Общая настройка сервера (common) - установка полезных пакетов и удобных умолчаний
  • locale (locale)
  • timezone (timezone)
  • Approx (approx) - прокси для пакетов обновления Debian
  • DNS (bind9) - запуск в chroot и пред-настройка для обслуживания кластера
  • DHCP (dhcpd) - пред-настройка для кластера и DDNS
  • Почта (exim4) - настройка доставки локальной почты

Конфигурация для хостов задается в файле /etc/puppet/manifests/nodes.pp:

node 'default' {
    class { sources_list_local: stage => pre0, }
    class { common_profile: stage => pre1, }
    class { timezone: zone => "Europe/Moscow", stage => main, }
    class { locale: def_locale => "ru_RU.UTF-8", stage => main, }
}

node 'sci' {
    class { approx_local: stage => pre0, }
    class { sources_list_local: stage => pre0, }
    class { common_profile: stage => pre1, }
    class { bind9_sci: stage => main, }
    class { timezone: zone => "Europe/Moscow", stage => main, }
    class { locale: def_locale => "ru_RU.UTF-8", stage => main, }
    class { dhcpd: enabled => no, stage => post1, }
}

Если Вы не указали хост в файле, то к нему применяются настройки default.

Apt

Apt автоматически настраивается во всем кластере средствами puppet

sources.list

Шаблон для sources.list находится в /etc/puppet/modules/approx/templates/sources.list.erb и настроен для работы через approx.

Approx

Шаблон конфига Approx находится /etc/puppet/modules/approx/templates/approx.conf.erb
Для быстрого применения изменений выполните:

/etc/init.d/puppet restart

DNS

DNS автоматически устанавливается на машине 'sci'.

Шаблон прямой зоны находится в /etc/puppet/modules/bind9/templates/sci/zone.erb
В системе она будет в /etc/bind/master/$domain
Шаблон обратной зоны находится в /etc/puppet/modules/bind9/templates/sci/in-addr.erb
В системе она будет в /etc/bind/master/in-addr
При каждом ручном изменении зоны Вы должны увеличивать счетчик в начале файла:

0000000001 ; Serial

Рекомендуется формат YYYYMMDDNN (NN порядковый номер изменения за этот день).
Вы можете изменять этот файл как угодно для того, чтобы он подходил к Вашей системе.

Новые записи должны идти после:

; here you can put any other records

Чтобы применить изменения, следует:

/etc/init.d/bind9 reload

ПРИМЕЧАНИЕ: Если Вы используете динамические апдейты зоны(например, от dhcp сервера),
до ручного изменения файла следует "заморозить" зону:

rndc freeze your.domain

для прямой зоны
rndc freeze 168.192.in-addr.arpa

для обратной зоны
а после изменения файла следует "разморозить" зону:
rndc unfreeze your.domain

или
rndc unfreeze 168.192.in-addr.arpa

DHCP

isc-dhcp-server настроен на машине sci, но отключен по умолчанию.
Если Вы хотите его включить, Вам следует сменить строчку в nodes.pp:

    class { dhcpd: enabled => no, stage => post1, }

на:
    class { dhcpd: enabled => yes, stage => post1, }

Если у Вас есть отдельный lan сегмент, то dhcp настраивается на него, если нет - на основной сегмент.
Дефолтный конфиг выглядит наподобие этого:
ddns-update-style interim;
ddns-updates on;
allow-unknown-clients;
autoritative;
ddns-domainname "your.domain";
update-static-leases on;
allow client-updates;

key DHCP_UPDATE {
    algorithm HMAC-MD5;
    secret secret-generated-md5;
};

subnet 192.168.5.0 netmask 255.255.255.0 {
    authoritative;
    ddns-updates on;
    range 192.168.5.11 192.168.5.254;
    option routers 192.168.5.35;
    option domain-name-servers 192.168.5.35;
    option domain-name "your.domain";
    default-lease-time 604800;
    max-lease-time 2592000;
    }

zone your.domain. {
    primary 127.0.0.1;
    key DHCP_UPDATE;
}

zone 168.192.in-addr.arpa. {
    primary 127.0.0.1;
    key DHCP_UPDATE;
}

Локаль

Локаль в кластере настраивается с помощью puppet. По умолчанию она - ru_RU.UTF-8
Если Вам нужна другая локаль, назначьте ее в /etc/puppet/manifests/nodes.pp

class { locale: def_locale => "ru_RU.cp1251", stage => main, }

Также Вы должны внести нужную локаль в список генерируемых локалей /etc/puppet/modules/locale/templates/locale.gen.erb
если этой локали нет в этом списке:
en_US ISO-8859-1
en_US UTF-8
ru_RU UTF-8
ru_RU KOI8-R
ru_RU CP1251
ru_RU ISO8859-5

ПРИМЕЧАНИЕ: нужную локаль следует вносить ДО этой строки:
<%= def_locale["."] = " "; def_locale %>

Системная почта

Реализовано два подхода к доставке системной почты:
1) Вся почта поступает на одну машину (sci по умолчанию) в локальный почтовый ящик указанного пользователя
2) Все почта поступает на сторонний почтовый ящик. Это более удобный подход, но для него требуется смартхост, который может доставлять почту через интернет, поэтому по умолчанию используется первый подход.

Этот модуль конфигурируется аргументами из nodes.pp. Для первой схемы он выглядит так:

node 'default' {
...........
    class { exim4: smarthost => "default", forward_to => 'admin', stage => main, }
}

node 'sci' {
...........
    class { exim4: mailhub => yes, forward_to => 'admin', stage => main, }
}

Вся почта приходит пользователю admin (по умолчанию root) на машину sci.

А вот пример для внешнего ящика:

node 'default' {
...........
    class { exim4: smarthost => "my-smarthost.localdomain", forward_to => 'notify@other.domain', stage => main, }
}

node 'sci' {
...........
    class { exim4: smarthost => "my-smarthost.localdomain", forward_to => 'notify@other.domain', stage => main, }
}