Проект

Общее

Профиль

SCI services management » История » Версия 15

Владимир Ипатов, 05.02.2013 03:08

1 4 Владимир Ипатов
{{toc}}
2 4 Владимир Ипатов
3 1 Владимир Ипатов
h1. SCI services management
4 1 Владимир Ипатов
5 1 Владимир Ипатов
h2. PUPPET
6 1 Владимир Ипатов
7 1 Владимир Ипатов
Puppet http://www.puppetlabs.com/) is the open source platform for enterprise systems management.
8 1 Владимир Ипатов
Puppet is used to deploy the configuration to the cluster instances.
9 1 Владимир Ипатов
Documentation can be found at http://docs.puppetlabs.com/
10 1 Владимир Ипатов
11 1 Владимир Ипатов
Puppet master is installed on the instance 'sci'.
12 1 Владимир Ипатов
13 2 Владимир Ипатов
By default you have several modules in puppet:
14 2 Владимир Ипатов
* Apt config(approx)
15 2 Владимир Ипатов
* DNS config(bind9)
16 2 Владимир Ипатов
* DHCP config(dhcpd)
17 2 Владимир Ипатов
* locale config(locale)
18 2 Владимир Ипатов
* timezone config(timezone).
19 12 Владимир Ипатов
* system mail delivery (exim4)
20 1 Владимир Ипатов
21 2 Владимир Ипатов
Classes pick and providing parameters for it made by /etc/puppet/manifests/nodes.pp:
22 1 Владимир Ипатов
<pre>
23 2 Владимир Ипатов
node 'default' {
24 2 Владимир Ипатов
	class { sources_list_local: stage => pre0, }
25 2 Владимир Ипатов
	class { common_profile: stage => pre1, }
26 2 Владимир Ипатов
	class { timezone: zone => "Europe/Moscow", stage => main, }
27 2 Владимир Ипатов
	class { locale: def_locale => "ru_RU.UTF-8", stage => main, }
28 2 Владимир Ипатов
}
29 1 Владимир Ипатов
30 2 Владимир Ипатов
node 'sci' {
31 2 Владимир Ипатов
	class { approx_local: stage => pre0, }
32 2 Владимир Ипатов
	class { sources_list_local: stage => pre0, }
33 2 Владимир Ипатов
	class { common_profile: stage => pre1, }
34 2 Владимир Ипатов
	class { bind9_sci: stage => main, }
35 2 Владимир Ипатов
	class { timezone: zone => "Europe/Moscow", stage => main, }
36 2 Владимир Ипатов
	class { locale: def_locale => "ru_RU.UTF-8", stage => main, }
37 2 Владимир Ипатов
	class { dhcpd: enabled => no, stage => post1, }
38 2 Владимир Ипатов
}
39 1 Владимир Ипатов
</pre>
40 2 Владимир Ипатов
If you don't specify node, default classes will be accepted for this node.
41 1 Владимир Ипатов
42 1 Владимир Ипатов
43 1 Владимир Ипатов
h2. Apt
44 1 Владимир Ипатов
45 1 Владимир Ипатов
Apt is configured on the instance 'sci' via puppet.
46 1 Владимир Ипатов
47 1 Владимир Ипатов
h3. sources.list
48 1 Владимир Ипатов
49 1 Владимир Ипатов
Global distributed sources.list template is resided in @/etc/puppet/modules/approx/templates/sources.list.erb@
50 1 Владимир Ипатов
51 1 Владимир Ипатов
h3. Approx
52 1 Владимир Ипатов
53 1 Владимир Ипатов
Approx is configured in @/etc/puppet/modules/approx/templates/approx.conf.erb@
54 1 Владимир Ипатов
To apply your changes quickly you should issue
55 1 Владимир Ипатов
<pre>
56 1 Владимир Ипатов
/etc/init.d/puppet restart
57 1 Владимир Ипатов
</pre>
58 2 Владимир Ипатов
59 2 Владимир Ипатов
h2. DNS
60 2 Владимир Ипатов
61 2 Владимир Ипатов
DNS is configured on the instance 'sci' via puppet.
62 2 Владимир Ипатов
63 14 Владимир Ипатов
Forward zone is in file @/etc/bind/master/$domain@
64 15 Владимир Ипатов
Reverse zone for 192.168.0.0/16 is in file @/etc/bind/master/in-addr@
65 15 Владимир Ипатов
If you want to hold reverse zone for another ip range, you must edit @/etc/bind/named.conf.local@ first.
66 15 Владимир Ипатов
Then you must edit zone file to match your ip range.
67 15 Владимир Ипатов
This is example for 10.0.0.0/8 in named.conf.local:
68 15 Владимир Ипатов
<pre>
69 15 Владимир Ипатов
zone 10.in-addr.arpa in {
70 15 Владимир Ипатов
 type master;
71 15 Владимир Ипатов
 file "/etc/bind/master/in-addr";
72 15 Владимир Ипатов
 allow-query    { any; };
73 15 Владимир Ипатов
 allow-update{ key DHCP_UPDATE; };
74 15 Владимир Ипатов
};
75 15 Владимир Ипатов
</pre>
76 2 Владимир Ипатов
On each update you should set new (growing) zone serial number, initially
77 2 Владимир Ипатов
<pre>
78 2 Владимир Ипатов
0000000001 ; Serial
79 2 Владимир Ипатов
</pre>
80 2 Владимир Ипатов
to the new growing value. YYYYMMDDNN is recommended (NN - is the change number in one day).
81 2 Владимир Ипатов
Feel free to modify it to adjust your system.
82 2 Владимир Ипатов
83 2 Владимир Ипатов
New names should be placed below the string
84 2 Владимир Ипатов
<pre>
85 2 Владимир Ипатов
; here you can put any other records
86 2 Владимир Ипатов
</pre>
87 2 Владимир Ипатов
88 2 Владимир Ипатов
To apply your changes quickly you should issue
89 2 Владимир Ипатов
<pre>
90 2 Владимир Ипатов
/etc/init.d/bind9 reload
91 2 Владимир Ипатов
</pre>
92 2 Владимир Ипатов
93 2 Владимир Ипатов
Note that if you using dynamic updates(e.g. from dhcp-server) you must before editing file:
94 2 Владимир Ипатов
<pre>rndc freeze your.domain</pre>
95 2 Владимир Ипатов
for forward zone or
96 2 Владимир Ипатов
<pre>rndc freeze 168.192.in-addr.arpa</pre>
97 2 Владимир Ипатов
for reverse zone.
98 2 Владимир Ипатов
And after editing the zone you must:
99 2 Владимир Ипатов
<pre>rndc unfreeze your.domain</pre>
100 2 Владимир Ипатов
or
101 2 Владимир Ипатов
<pre>rndc unfreeze 168.192.in-addr.arpa</pre>
102 5 Владимир Ипатов
103 6 Владимир Ипатов
h2. DHCP
104 5 Владимир Ипатов
105 5 Владимир Ипатов
isc-dhcp-server is configured on instance sci via puppet, but disabled by default.
106 8 Владимир Ипатов
If you want to enable it, you must replase string in nodes.pp:
107 8 Владимир Ипатов
<pre>
108 8 Владимир Ипатов
	class { dhcpd: enabled => no, stage => post1, }
109 8 Владимир Ипатов
</pre>
110 8 Владимир Ипатов
to:
111 8 Владимир Ипатов
<pre>
112 8 Владимир Ипатов
	class { dhcpd: enabled => yes, stage => post1, }
113 8 Владимир Ипатов
</pre>
114 1 Владимир Ипатов
If you have LAN segment in yous setup, it will be configured on it, else it will be configured on ganeti bridge.
115 1 Владимир Ипатов
dynamic dns updates is configured by default.
116 9 Владимир Ипатов
Default setup looks like this:
117 5 Владимир Ипатов
<pre>
118 5 Владимир Ипатов
ddns-update-style interim;
119 5 Владимир Ипатов
ddns-updates on;
120 5 Владимир Ипатов
allow-unknown-clients;
121 5 Владимир Ипатов
autoritative;
122 5 Владимир Ипатов
ddns-domainname "your.domain";
123 5 Владимир Ипатов
update-static-leases on;
124 5 Владимир Ипатов
allow client-updates;
125 5 Владимир Ипатов
126 5 Владимир Ипатов
key DHCP_UPDATE {
127 5 Владимир Ипатов
	algorithm HMAC-MD5;
128 5 Владимир Ипатов
	secret secret-generated-md5;
129 5 Владимир Ипатов
};
130 5 Владимир Ипатов
131 5 Владимир Ипатов
132 5 Владимир Ипатов
133 5 Владимир Ипатов
subnet 192.168.5.0 netmask 255.255.255.0 {
134 5 Владимир Ипатов
	authoritative;
135 5 Владимир Ипатов
	ddns-updates on;
136 5 Владимир Ипатов
	range 192.168.5.11 192.168.5.254;
137 5 Владимир Ипатов
	option routers 192.168.5.35;
138 5 Владимир Ипатов
	option domain-name-servers 192.168.5.35;
139 5 Владимир Ипатов
	option domain-name "your.domain";
140 5 Владимир Ипатов
	default-lease-time 604800;
141 5 Владимир Ипатов
	max-lease-time 2592000;
142 5 Владимир Ипатов
	}
143 5 Владимир Ипатов
144 5 Владимир Ипатов
145 5 Владимир Ипатов
zone your.domain. {
146 5 Владимир Ипатов
	primary 127.0.0.1;
147 5 Владимир Ипатов
	key DHCP_UPDATE;
148 5 Владимир Ипатов
}
149 5 Владимир Ипатов
150 5 Владимир Ипатов
zone 168.192.in-addr.arpa. {
151 5 Владимир Ипатов
	primary 127.0.0.1;
152 5 Владимир Ипатов
	key DHCP_UPDATE;
153 5 Владимир Ипатов
}
154 5 Владимир Ипатов
</pre>
155 7 Владимир Ипатов
156 13 Владимир Ипатов
157 11 Владимир Ипатов
h2. Locale
158 1 Владимир Ипатов
159 13 Владимир Ипатов
Cluster locale configuration performed by puppet. By default it - ru_RU.UTF-8.
160 13 Владимир Ипатов
On instance sci creation value takes from sci.conf(variable LOCALE) and set in nodes.pp
161 13 Владимир Ипатов
If you need change it after sci creation, set it directly in @/etc/puppet/manifests/nodes.pp@
162 13 Владимир Ипатов
<pre>class { locale: def_locale => "ru_RU.cp1251", stage => main, }</pre>
163 13 Владимир Ипатов
164 13 Владимир Ипатов
h2. Timezone
165 13 Владимир Ипатов
166 13 Владимир Ипатов
167 13 Владимир Ипатов
Cluster timezone configuration performed by puppet. By default it - Europe/Moscow.
168 13 Владимир Ипатов
On instance sci creation value takes from sci.conf(variable TIMEZONE) and set in nodes.pp
169 13 Владимир Ипатов
If you need change it after sci creation, set it directly in @/etc/puppet/manifests/nodes.pp@
170 13 Владимир Ипатов
<pre>class { timezone: zone => "Europe/Berlin", stage => main, }</pre>
171 10 Владимир Ипатов
172 11 Владимир Ипатов
h2. System mail
173 10 Владимир Ипатов
174 10 Владимир Ипатов
There are two approaches to system mail delivery.
175 10 Владимир Ипатов
1) all system mail delivers to one host called mailhub in puppet (sci by default) and stored on it in local mailbox for given user.
176 10 Владимир Ипатов
2) all system mail delivers to external mailbox via smarthost. It is a more comfortably approach, but requires smarthost that can deliver mail via internet, so the first approach is default.
177 10 Владимир Ипатов
178 10 Владимир Ипатов
This module configures by arguments in nodes.pp. In mailhub schema it is:
179 10 Владимир Ипатов
<pre>
180 10 Владимир Ипатов
node 'default' {
181 10 Владимир Ипатов
...........
182 10 Владимир Ипатов
	class { exim4: smarthost => "default", forward_to => 'admin', stage => main, }
183 10 Владимир Ипатов
}
184 10 Владимир Ипатов
185 10 Владимир Ипатов
node 'sci' {
186 10 Владимир Ипатов
...........
187 10 Владимир Ипатов
	class { exim4: mailhub => yes, forward_to => 'admin', stage => main, }
188 10 Владимир Ипатов
}
189 10 Владимир Ипатов
</pre>
190 10 Владимир Ипатов
All mail delivers to admin(root by default) on sci.
191 10 Владимир Ипатов
And this is example for external mailbox:
192 10 Владимир Ипатов
<pre>
193 10 Владимир Ипатов
node 'default' {
194 10 Владимир Ипатов
...........
195 10 Владимир Ипатов
	class { exim4: smarthost => "my-smarthost.localdomain", forward_to => 'notify@other.domain', stage => main, }
196 10 Владимир Ипатов
}
197 10 Владимир Ипатов
198 10 Владимир Ипатов
node 'sci' {
199 10 Владимир Ипатов
...........
200 10 Владимир Ипатов
	class { exim4: smarthost => "my-smarthost.localdomain", forward_to => 'notify@other.domain', stage => main, }
201 10 Владимир Ипатов
}
202 10 Владимир Ипатов
</pre>