Проект

Общее

Профиль

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

Dmitry Chernyak, 06.12.2012 16:39

1 1 Владимир Ипатов
{{toc}}
2 2 Владимир Ипатов
3 1 Владимир Ипатов
h1. Управление SCI сервисами
4 1 Владимир Ипатов
5 1 Владимир Ипатов
h2. PUPPET
6 1 Владимир Ипатов
7 4 Dmitry Chernyak
"Puppet":http://www.puppetlabs.com - это платформа для автоматизации системного администрирования большого количества компьютеров.
8 4 Dmitry Chernyak
Puppet позволяет легко автоматизировать задачи по настройке операционных систем и используется для автоматической настройки узлов и виртуальных машин в кластере.
9 3 Владимир Ипатов
Документация можно найти здесь: http://docs.puppetlabs.com/
10 1 Владимир Ипатов
11 4 Dmitry Chernyak
Управляющий сервер - "Puppet master" установлен на сервисной виртуальной машине 'sci'.
12 3 Владимир Ипатов
13 4 Dmitry Chernyak
В комплекте поставки есть следующие модули:
14 4 Dmitry Chernyak
* Общая настройка сервера (common) - установка полезных пакетов и удобных умолчаний
15 4 Dmitry Chernyak
* locale (locale)
16 4 Dmitry Chernyak
* timezone (timezone)
17 4 Dmitry Chernyak
* Approx (approx) - прокси для пакетов обновления Debian
18 4 Dmitry Chernyak
* DNS (bind9) - запуск в chroot и пред-настройка для обслуживания кластера
19 4 Dmitry Chernyak
* DHCP (dhcpd) - пред-настройка для кластера и DDNS
20 1 Владимир Ипатов
21 4 Dmitry Chernyak
Конфигурация для хостов задается в файле /etc/puppet/manifests/nodes.pp:
22 1 Владимир Ипатов
<pre>
23 1 Владимир Ипатов
node 'default' {
24 1 Владимир Ипатов
	class { sources_list_local: stage => pre0, }
25 1 Владимир Ипатов
	class { common_profile: stage => pre1, }
26 1 Владимир Ипатов
	class { timezone: zone => "Europe/Moscow", stage => main, }
27 1 Владимир Ипатов
	class { locale: def_locale => "ru_RU.UTF-8", stage => main, }
28 1 Владимир Ипатов
}
29 1 Владимир Ипатов
30 1 Владимир Ипатов
node 'sci' {
31 1 Владимир Ипатов
	class { approx_local: stage => pre0, }
32 1 Владимир Ипатов
	class { sources_list_local: stage => pre0, }
33 1 Владимир Ипатов
	class { common_profile: stage => pre1, }
34 1 Владимир Ипатов
	class { bind9_sci: stage => main, }
35 1 Владимир Ипатов
	class { timezone: zone => "Europe/Moscow", stage => main, }
36 1 Владимир Ипатов
	class { locale: def_locale => "ru_RU.UTF-8", stage => main, }
37 1 Владимир Ипатов
	class { dhcpd: enabled => no, stage => post1, }
38 1 Владимир Ипатов
}
39 3 Владимир Ипатов
</pre>
40 4 Dmitry Chernyak
Если Вы не указали хост в файле, то к нему применяются настройки default.
41 1 Владимир Ипатов
42 1 Владимир Ипатов
h2. Apt
43 1 Владимир Ипатов
44 4 Dmitry Chernyak
Apt автоматически настраивается во всем кластере средствами puppet
45 1 Владимир Ипатов
46 1 Владимир Ипатов
h3. sources.list
47 1 Владимир Ипатов
48 4 Dmitry Chernyak
Шаблон для sources.list находится в @/etc/puppet/modules/approx/templates/sources.list.erb@ и настроен для работы через approx.
49 1 Владимир Ипатов
50 1 Владимир Ипатов
h3. Approx
51 1 Владимир Ипатов
52 3 Владимир Ипатов
Шаблон конфига Approx находится @/etc/puppet/modules/approx/templates/approx.conf.erb@
53 4 Dmitry Chernyak
Для быстрого применения изменений выполните:
54 1 Владимир Ипатов
<pre>
55 1 Владимир Ипатов
/etc/init.d/puppet restart
56 1 Владимир Ипатов
</pre>
57 1 Владимир Ипатов
58 1 Владимир Ипатов
h2. DNS
59 1 Владимир Ипатов
60 4 Dmitry Chernyak
DNS автоматически устанавливается на машине 'sci'.
61 1 Владимир Ипатов
62 3 Владимир Ипатов
Шаблон прямой зоны находится в @/etc/puppet/modules/bind9/templates/sci/zone.erb@
63 3 Владимир Ипатов
В системе она будет в @/etc/bind/master/$domain@
64 3 Владимир Ипатов
Шаблон обратной зоны находится в @/etc/puppet/modules/bind9/templates/sci/in-addr.erb@
65 3 Владимир Ипатов
В системе она будет в @/etc/bind/master/in-addr@
66 3 Владимир Ипатов
При каждом ручном изменении зоны Вы должны увеличивать счетчик в начале файла:
67 1 Владимир Ипатов
<pre>
68 1 Владимир Ипатов
0000000001 ; Serial
69 1 Владимир Ипатов
</pre>
70 3 Владимир Ипатов
Рекомендуется формат YYYYMMDDNN (NN порядковый номер изменения за этот день).
71 3 Владимир Ипатов
Вы можете изменять этот файл как угодно для того, чтобы он подходил к Вашей системе.
72 1 Владимир Ипатов
73 3 Владимир Ипатов
Новые записи должны идти после:
74 1 Владимир Ипатов
<pre>
75 1 Владимир Ипатов
; here you can put any other records
76 1 Владимир Ипатов
</pre>
77 1 Владимир Ипатов
78 3 Владимир Ипатов
Чтобы применить изменения, следует:
79 1 Владимир Ипатов
<pre>
80 1 Владимир Ипатов
/etc/init.d/bind9 reload
81 1 Владимир Ипатов
</pre>
82 1 Владимир Ипатов
83 3 Владимир Ипатов
*ПРИМЕЧАНИЕ*: Если Вы используете динамические апдейты зоны(например, от dhcp сервера),
84 3 Владимир Ипатов
до ручного изменения файла следует "заморозить" зону:
85 1 Владимир Ипатов
<pre>rndc freeze your.domain</pre>
86 3 Владимир Ипатов
для прямой зоны
87 1 Владимир Ипатов
<pre>rndc freeze 168.192.in-addr.arpa</pre>
88 3 Владимир Ипатов
для обратной зоны
89 3 Владимир Ипатов
а после изменения файла следует "разморозить" зону:
90 1 Владимир Ипатов
<pre>rndc unfreeze your.domain</pre>
91 3 Владимир Ипатов
или
92 1 Владимир Ипатов
<pre>rndc unfreeze 168.192.in-addr.arpa</pre>
93 1 Владимир Ипатов
94 1 Владимир Ипатов
h2. DHCP
95 1 Владимир Ипатов
96 3 Владимир Ипатов
isc-dhcp-server настроен на машине sci, но отключен по умолчанию.
97 3 Владимир Ипатов
Если Вы хотите его включить, Вам следует сменить строчку в nodes.pp:
98 1 Владимир Ипатов
<pre>
99 3 Владимир Ипатов
	class { dhcpd: enabled => no, stage => post1, }
100 3 Владимир Ипатов
</pre>
101 3 Владимир Ипатов
на:
102 3 Владимир Ипатов
<pre>
103 3 Владимир Ипатов
	class { dhcpd: enabled => yes, stage => post1, }
104 3 Владимир Ипатов
</pre>
105 3 Владимир Ипатов
Если у Вас есть отдельный lan сегмент, то dhcp настраивается на него, если нет - на основной сегмент.
106 3 Владимир Ипатов
Дефолтный конфиг выглядит наподобие этого:
107 3 Владимир Ипатов
<pre>
108 1 Владимир Ипатов
ddns-update-style interim;
109 1 Владимир Ипатов
ddns-updates on;
110 1 Владимир Ипатов
allow-unknown-clients;
111 1 Владимир Ипатов
autoritative;
112 1 Владимир Ипатов
ddns-domainname "your.domain";
113 1 Владимир Ипатов
update-static-leases on;
114 1 Владимир Ипатов
allow client-updates;
115 1 Владимир Ипатов
116 1 Владимир Ипатов
key DHCP_UPDATE {
117 1 Владимир Ипатов
	algorithm HMAC-MD5;
118 1 Владимир Ипатов
	secret secret-generated-md5;
119 1 Владимир Ипатов
};
120 1 Владимир Ипатов
121 1 Владимир Ипатов
122 1 Владимир Ипатов
123 1 Владимир Ипатов
subnet 192.168.5.0 netmask 255.255.255.0 {
124 1 Владимир Ипатов
	authoritative;
125 1 Владимир Ипатов
	ddns-updates on;
126 1 Владимир Ипатов
	range 192.168.5.11 192.168.5.254;
127 1 Владимир Ипатов
	option routers 192.168.5.35;
128 1 Владимир Ипатов
	option domain-name-servers 192.168.5.35;
129 1 Владимир Ипатов
	option domain-name "your.domain";
130 1 Владимир Ипатов
	default-lease-time 604800;
131 1 Владимир Ипатов
	max-lease-time 2592000;
132 1 Владимир Ипатов
	}
133 1 Владимир Ипатов
134 1 Владимир Ипатов
135 1 Владимир Ипатов
zone your.domain. {
136 1 Владимир Ипатов
	primary 127.0.0.1;
137 1 Владимир Ипатов
	key DHCP_UPDATE;
138 1 Владимир Ипатов
}
139 1 Владимир Ипатов
140 1 Владимир Ипатов
zone 168.192.in-addr.arpa. {
141 1 Владимир Ипатов
	primary 127.0.0.1;
142 1 Владимир Ипатов
	key DHCP_UPDATE;
143 1 Владимир Ипатов
}
144 1 Владимир Ипатов
</pre>
145 1 Владимир Ипатов
146 3 Владимир Ипатов
h2. Локаль
147 1 Владимир Ипатов
148 3 Владимир Ипатов
Локаль в кластере настраивается с помощью puppet. По умолчанию она - ru_RU.UTF-8
149 3 Владимир Ипатов
Если Вам нужна другая локаль, назначьте ее в @/etc/puppet/manifests/nodes.pp@
150 3 Владимир Ипатов
<pre>class { locale: def_locale => "ru_RU.cp1251", stage => main, }</pre>
151 3 Владимир Ипатов
Также Вы должны внести нужную локаль в список генерируемых локалей @/etc/puppet/modules/locale/templates/locale.gen.erb@
152 3 Владимир Ипатов
если этой локали нет в этом списке:
153 1 Владимир Ипатов
<pre>en_US ISO-8859-1
154 1 Владимир Ипатов
en_US UTF-8
155 1 Владимир Ипатов
ru_RU UTF-8
156 1 Владимир Ипатов
ru_RU KOI8-R
157 1 Владимир Ипатов
ru_RU CP1251
158 1 Владимир Ипатов
ru_RU ISO8859-5</pre>
159 3 Владимир Ипатов
*ПРИМЕЧАНИЕ*: нужную локаль следует вносить *ДО* этой строки:
160 1 Владимир Ипатов
<pre><%= def_locale["."] = " "; def_locale %></pre>