Проект

Общее

Профиль

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

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


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

PUPPET

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

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

По умолчанию у нас есть несколько модулей:
  • Apt config(approx)
  • DNS config(bind9)
  • DHCP config(dhcpd)
  • locale config(locale)
  • timezone config(timezone).

Выбор классов для хостов и передача им параметров обеспечивается файлом /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 %>