Проект

Общее

Профиль

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

Владимир Ипатов, 06.12.2012 23:51

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