Проект

Общее

Профиль

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

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

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 2 Владимир Ипатов
The forward zone file is stored as a template at @/etc/puppet/modules/bind9/templates/sci/zone.erb@
64 2 Владимир Ипатов
in system it will be at @/etc/bind/master/$domain@
65 2 Владимир Ипатов
The reverse zone file is stored as a template at @/etc/puppet/modules/bind9/templates/sci/in-addr.erb@
66 2 Владимир Ипатов
in system it will be at @/etc/bind/master/in-addr@
67 2 Владимир Ипатов
On each update you should set new (growing) zone serial number, initially
68 2 Владимир Ипатов
<pre>
69 2 Владимир Ипатов
0000000001 ; Serial
70 2 Владимир Ипатов
</pre>
71 2 Владимир Ипатов
to the new growing value. YYYYMMDDNN is recommended (NN - is the change number in one day).
72 2 Владимир Ипатов
Feel free to modify it to adjust your system.
73 2 Владимир Ипатов
74 2 Владимир Ипатов
New names should be placed below the string
75 2 Владимир Ипатов
<pre>
76 2 Владимир Ипатов
; here you can put any other records
77 2 Владимир Ипатов
</pre>
78 2 Владимир Ипатов
79 2 Владимир Ипатов
To apply your changes quickly you should issue
80 2 Владимир Ипатов
<pre>
81 2 Владимир Ипатов
/etc/init.d/bind9 reload
82 2 Владимир Ипатов
</pre>
83 2 Владимир Ипатов
84 2 Владимир Ипатов
Note that if you using dynamic updates(e.g. from dhcp-server) you must before editing file:
85 2 Владимир Ипатов
<pre>rndc freeze your.domain</pre>
86 2 Владимир Ипатов
for forward zone or
87 2 Владимир Ипатов
<pre>rndc freeze 168.192.in-addr.arpa</pre>
88 2 Владимир Ипатов
for reverse zone.
89 2 Владимир Ипатов
And after editing the zone you must:
90 2 Владимир Ипатов
<pre>rndc unfreeze your.domain</pre>
91 2 Владимир Ипатов
or
92 2 Владимир Ипатов
<pre>rndc unfreeze 168.192.in-addr.arpa</pre>
93 5 Владимир Ипатов
94 6 Владимир Ипатов
h2. DHCP
95 5 Владимир Ипатов
96 5 Владимир Ипатов
isc-dhcp-server is configured on instance sci via puppet, but disabled by default.
97 8 Владимир Ипатов
If you want to enable it, you must replase string in nodes.pp:
98 8 Владимир Ипатов
<pre>
99 8 Владимир Ипатов
	class { dhcpd: enabled => no, stage => post1, }
100 8 Владимир Ипатов
</pre>
101 8 Владимир Ипатов
to:
102 8 Владимир Ипатов
<pre>
103 8 Владимир Ипатов
	class { dhcpd: enabled => yes, stage => post1, }
104 8 Владимир Ипатов
</pre>
105 1 Владимир Ипатов
If you have LAN segment in yous setup, it will be configured on it, else it will be configured on ganeti bridge.
106 1 Владимир Ипатов
dynamic dns updates is configured by default.
107 9 Владимир Ипатов
Default setup looks like this:
108 5 Владимир Ипатов
<pre>
109 5 Владимир Ипатов
ddns-update-style interim;
110 5 Владимир Ипатов
ddns-updates on;
111 5 Владимир Ипатов
allow-unknown-clients;
112 5 Владимир Ипатов
autoritative;
113 5 Владимир Ипатов
ddns-domainname "your.domain";
114 5 Владимир Ипатов
update-static-leases on;
115 5 Владимир Ипатов
allow client-updates;
116 5 Владимир Ипатов
117 5 Владимир Ипатов
key DHCP_UPDATE {
118 5 Владимир Ипатов
	algorithm HMAC-MD5;
119 5 Владимир Ипатов
	secret secret-generated-md5;
120 5 Владимир Ипатов
};
121 5 Владимир Ипатов
122 5 Владимир Ипатов
123 5 Владимир Ипатов
124 5 Владимир Ипатов
subnet 192.168.5.0 netmask 255.255.255.0 {
125 5 Владимир Ипатов
	authoritative;
126 5 Владимир Ипатов
	ddns-updates on;
127 5 Владимир Ипатов
	range 192.168.5.11 192.168.5.254;
128 5 Владимир Ипатов
	option routers 192.168.5.35;
129 5 Владимир Ипатов
	option domain-name-servers 192.168.5.35;
130 5 Владимир Ипатов
	option domain-name "your.domain";
131 5 Владимир Ипатов
	default-lease-time 604800;
132 5 Владимир Ипатов
	max-lease-time 2592000;
133 5 Владимир Ипатов
	}
134 5 Владимир Ипатов
135 5 Владимир Ипатов
136 5 Владимир Ипатов
zone your.domain. {
137 5 Владимир Ипатов
	primary 127.0.0.1;
138 5 Владимир Ипатов
	key DHCP_UPDATE;
139 5 Владимир Ипатов
}
140 5 Владимир Ипатов
141 5 Владимир Ипатов
zone 168.192.in-addr.arpa. {
142 5 Владимир Ипатов
	primary 127.0.0.1;
143 5 Владимир Ипатов
	key DHCP_UPDATE;
144 5 Владимир Ипатов
}
145 5 Владимир Ипатов
</pre>
146 7 Владимир Ипатов
147 13 Владимир Ипатов
148 11 Владимир Ипатов
h2. Locale
149 1 Владимир Ипатов
150 13 Владимир Ипатов
Cluster locale configuration performed by puppet. By default it - ru_RU.UTF-8.
151 13 Владимир Ипатов
On instance sci creation value takes from sci.conf(variable LOCALE) and set in nodes.pp
152 13 Владимир Ипатов
If you need change it after sci creation, set it directly in @/etc/puppet/manifests/nodes.pp@
153 13 Владимир Ипатов
<pre>class { locale: def_locale => "ru_RU.cp1251", stage => main, }</pre>
154 13 Владимир Ипатов
155 13 Владимир Ипатов
h2. Timezone
156 13 Владимир Ипатов
157 13 Владимир Ипатов
158 13 Владимир Ипатов
Cluster timezone configuration performed by puppet. By default it - Europe/Moscow.
159 13 Владимир Ипатов
On instance sci creation value takes from sci.conf(variable TIMEZONE) and set in nodes.pp
160 13 Владимир Ипатов
If you need change it after sci creation, set it directly in @/etc/puppet/manifests/nodes.pp@
161 13 Владимир Ипатов
<pre>class { timezone: zone => "Europe/Berlin", stage => main, }</pre>
162 10 Владимир Ипатов
163 11 Владимир Ипатов
h2. System mail
164 10 Владимир Ипатов
165 10 Владимир Ипатов
There are two approaches to system mail delivery.
166 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.
167 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.
168 10 Владимир Ипатов
169 10 Владимир Ипатов
This module configures by arguments in nodes.pp. In mailhub schema it is:
170 10 Владимир Ипатов
<pre>
171 10 Владимир Ипатов
node 'default' {
172 10 Владимир Ипатов
...........
173 10 Владимир Ипатов
	class { exim4: smarthost => "default", forward_to => 'admin', stage => main, }
174 10 Владимир Ипатов
}
175 10 Владимир Ипатов
176 10 Владимир Ипатов
node 'sci' {
177 10 Владимир Ипатов
...........
178 10 Владимир Ипатов
	class { exim4: mailhub => yes, forward_to => 'admin', stage => main, }
179 10 Владимир Ипатов
}
180 10 Владимир Ипатов
</pre>
181 10 Владимир Ипатов
All mail delivers to admin(root by default) on sci.
182 10 Владимир Ипатов
And this is example for external mailbox:
183 10 Владимир Ипатов
<pre>
184 10 Владимир Ипатов
node 'default' {
185 10 Владимир Ипатов
...........
186 10 Владимир Ипатов
	class { exim4: smarthost => "my-smarthost.localdomain", forward_to => 'notify@other.domain', stage => main, }
187 10 Владимир Ипатов
}
188 10 Владимир Ипатов
189 10 Владимир Ипатов
node 'sci' {
190 10 Владимир Ипатов
...........
191 10 Владимир Ипатов
	class { exim4: smarthost => "my-smarthost.localdomain", forward_to => 'notify@other.domain', stage => main, }
192 10 Владимир Ипатов
}
193 10 Владимир Ипатов
</pre>