fix an edge case in object highlighting
[racktables] / README.md
CommitLineData
2797f2c7
DO
1# Welcome!
2Thank you for selecting RackTables as your datacenter management solution!
3If you are looking for documentation or wish to send feedback, please
4look for the respective links at [project's web-site](http://racktables.org).
5
6# Installing RackTables
7
8## I. Prepare the server
9
10RackTables requires a MySQL server version 5.x built with InnoDB and
11Unicode support and configured appropriately. By default RackTables is
12developed on Apache httpd with PHP 5 module and several PHP extensions.
13Below is a list of known-good distributions with respective setup notes.
14
15### Fedora 8-16
16* MySQL: `yum install mysql-server mysql`
17* Apache/PHP: `yum install httpd php php-mysql php-pdo php-gd php-snmp php-mbstring php-bcmath`
18* To enable Unicode, add `character-set-server=utf8` line to `[mysqld]`
19 section of `/etc/my.cnf` file and restart mysqld.
20
21### Debian 6
22* MySQL: `aptitude install mysql-server-5.1`
23* Apache/PHP: `aptitude install libapache2-mod-php5 php5-gd php5-mysql php5-snmp`
24* To enable Unicode, add `character-set-server=utf8` line to `[mysqld]`
25 section of `/etc/mysql/my.cnf` file and restart mysqld.
26
27### Debian 7 with nginx
28* MySQL: `aptitude install mysql-server-5.1`
29* nginx: `aptitude install nginx php5-fpm`
30* To enable Unicode, add `character-set-server=utf8` line to `[mysqld]`
31 section of `/etc/mysql/my.cnf` file and restart mysqld.
32
33Remember to adjust `server_name` in `server {}` section, otherwise your logout link
34will point to localhost (and thus fail).
35Notice, that fpm.sock is advised, keep the rest on default configuration, or
36tweak to your needs. You may need to set `fastcgi_read_timeout 600;` if you use
37some external addons like fping, which may take some time in certain situations.
38Please note that setting aggresive caching for php scripts may result in stale
39content - so maximum of 60 seconds is advised, but by default it is not enabled.
40
41### Ubuntu 14.04
42* MySQL: `apt-get install mysql-server`
43* Apache/PHP: `apt-get install apache2-bin libapache2-mod-php5 php5-gd php5-mysql php5-snmp`
44* To enable Unicode:
45```
46printf "[mysqld]\ncharacter-set-server=utf8\n" > /etc/mysql/conf.d/charset.cnf
47service mysql restart
48```
49* During install time: MySQL UNIX socket path is `/var/run/mysqld/mysqld.sock`
50 and Apache httpd runs as www-data:www-data.
51
52### ALTLinux 4.0
53* MySQL: `apt-get install MySQL-server`
54* Apache/PHP: `apt-get install apache2-httpd-prefork php5-gd2 php5-pdo_mysql php5-pdo apache2-mod_php5 php5-mbstring`
55* To enable Unicode, add `CHSET=utf8` line to `/etc/sysconfig/mysqld` file
56 and restart mysqld.
57
58### openSUSE 11.0
59* MySQL: YaST -> Software -> software management -> Web and LAMP server -> mysql
60* Apache/PHP: use YaST to install apache2-mod_php5, php5-gd, php5-mbstring,
61 php5-mysql, php5-bcmath, php5-snmp and php5-ldap
62* To enable Unicode, add `default-character-set=utf8` line to `[mysql]`
63 section of `/etc/my.cnf` file and restart mysqld.
64
65### Scientific Linux 6
66* MySQL: `yum install mysql-server mysql`
67* Apache/PHP: `yum install httpd php php-mysql php-pdo php-gd php-mbstring php-bcmath`
68* To enable Unicode, add `character-set-server=utf8` line to `[mysqld]`
69 section of `/etc/my.cnf` file and restart mysqld.
70
71### CentOS 5
72* MySQL: `yum install mysql-server mysql`
73* Apache/PHP: `yum install httpd php53 php53-mysql php53-pdo php53-gd php53-mbstring php53-bcmath`
74* To enable Unicode, add `character-set-server=utf8` line to `[mysqld]`
75 section of `/etc/my.cnf` file and restart mysqld.
76
77### FreeBSD 8
78* Apache/PHP:
79```
80# make -C /usr/ports/www/apache13-modssl install
81# make -C /usr/ports/www/php5-session install
82[X] CLI Build CLI version
83[X] APACHE Build Apache module
84[X] MULTIBYTE Enable zend multibyte support
85# make -C /usr/ports/graphics/php5-gd install
86# make -C /usr/ports/databases/php5-pdo_mysql install
87# make -C /usr/ports/devel/pcre install
88!!! Enable UTF-8 support ............ : yes
89!!! Unicode properties .............. : yes
90# make -C /usr/ports/devel/php5-pcre install
91# make -C /usr/ports/converters/php5-mbstring install
92[X] REGEX Enable multibyte regex support
93
94# make -C /usr/ports/net-mgmt/php5-snmp install
95# make -C /usr/ports/net/php5-ldap install
96```
97
98## II. Copy the files
99Unpack the tar.gz/zip archive to a directory of your choice and configure Apache
100httpd to use `wwwroot` subdirectory as a new DocumentRoot. Alternatively,
101symlinks to `wwwroot` or even to `index.php` from an existing DocumentRoot are
102also possible and often adisable (see `README.Fedora`).
103
104## III. Run the installer
105Open the configured RackTables URL and you will be prompted to configure
106and initialize the application.
107
108# Upgrading RackTables
109
1100. **Backup your database** and check the release notes below before actually
111 starting the upgrade.
1121. Remove all existing files except configuration (the `inc/secret.php` file)
113 and local plugins (in the `plugins/` directory).
1142. Put the contents of the new tar.gz/zip archive into the place.
1153. Open the RackTables page in a browser. The software will detect version
116 mismatch and display a message telling to log in as admin to finish
117 the upgrade.
1184. Do that and report any errors to the bug tracker or the mailing list.
119
120## Release notes
121
c5c39ee5
AA
122### Upgrading to 0.20.11
123
124New IPV4_TREE_SHOW_UNALLOCATED configuration option introduced to disable
125dsplaying unallocated networks in IPv4 space tree. Setting it also disables
126KNIGHT feature.
127
2797f2c7
DO
128### Upgrading to 0.20.7
129
130From now on the minimum (oldest) release of PHP that can run RackTables is
1315.2.10. In particular, to continue running RackTables on CentOS 5 it is
132necessary to replace its php* RPM packages with respective php53* packages
133before the upgrade (except the JSON package, which PHP 5.3 provides internally).
134
135Database triggers are used for some data consistency measures. The database
136user account must have the 'TRIGGER' privilege, which was introduced in
137MySQL 5.1.7.
138
139The `IPV4OBJ_LISTSRC` configuration option is reset to an expression which enables
140the IP addressing feature for all object types except those listed.
141
142Tags could now be assigned on the Edit/Properties tab using a text input with
143auto-completion. Type a star '*' to view full tag tree in auto-complete menu.
144It is worth to add the following line to the permissions script if the
145old-fashioned 'Tags' tab is not needed any more:
146```
147 deny {$tab_tags} # this hides 'Tags' tab
148```
149
150This release converts collation of all DB fields to the `utf8_unicode_ci`. This
151procedure may take some time, and could fail if there are rows that differ only
152by letter case. If this happen, you'll see the failed SQL query in upgrade report
153with the "Duplicate entry" error message. Feel free to continue using your
154installation. If desired so, you could eliminate the case-duplicating rows
155and re-apply the failed query.
156
157### Upgrading to 0.20.6
158
159New `MGMT_PROTOS` configuration option replaces the `TELNET_OBJS_LISTSRC`,
160`SSH_OBJS_LISTSRC` and `RDP_OBJS_LISTSRC` options (converting existing settings as
161necessary). `MGMT_PROTOS` allows to specify any management protocol for a
162particular device list using a RackCode filter. The default value
163(`ssh: {$typeid_4}, telnet: {$typeid_8}`) produces `ssh://server.fqdn` for
164servers and `telnet://switch.fqdn` for network switches.
165
166### Upgrading to 0.20.5
167
168This release introduces the VS groups feature. VS groups is a new way to store
169and display virtual services configuration. There is a new "ipvs" (VS group)
170realm. All previously existing VS configuration remains functional and user
171is free to convert it to the new format, which displays it in a more natural way
172and allows to generate virtual_server_group keepalived configs. To convert a
173virtual service to the new format, it is necessary to manually create a VS group
174object and assign IP addresses to it. The VS group will display a "Migrate" tab
175to convert the old-style VS objects, which can be removed after a successful
176conversion.
177
178The old-style VS configuration becomes **deprecated**. Its support will be removed
179in a future major release. So it is strongly recommended to convert it to the
180new format.
181
182### Upgrading to 0.20.4
183
184Please note that some dictionary items of Cisco Catalyst 2960 series switches
185were renamed to meet official Cisco classification:
186
187old name | new name
188------------|---------
1892960-48TT | 2960-48TT-L
1902960-24TC | 2960-24TC-L
1912960-24TT | 2960-24TT-L
1922960-8TC | 2960-8TC-L
1932960G-48TC | 2960G-48TC-L
1942960G-24TC | 2960G-24TC-L
1952960G-8TC | 2960G-8TC-L
196C2960-24 | C2960-24-S
197C2960G-24PC | C2960-24PC-L
198
199The `DATETIME_FORMAT` configuration option used in setting date and time output
200format now uses a [different](http://php.net/manual/en/function.strftime.php)
201syntax. During upgrade the option is reset to
202the default value, which is now %Y-%m-%d (YYYY-MM-DD) per ISO 8601.
203
204This release intoduces two new configuration options:
205`REVERSED_RACKS_LISTSRC` and `NEAREST_RACKS_CHECKBOX`.
206
207### Upgrading to 0.20.1
208
209The 0.20.0 release includes bug which breaks IP networks' capacity displaying on
21032-bit architecture machines. To fix this, this release makes use of PHP's BC
211Math module. It is a new reqiurement. Most PHP distributions have this module
212already enabled, but if yours does not - you need yo recompile PHP.
213
214Security context of 'ipaddress' page now includes tags from the network
215containing an IP address. This means that you should audit your permission rules
216to check there is no unintended allows of changing IPs based on network's
217tagset. Example:
218```
219 allow {client network} and {New York}
220```
221This rule now not only allows any operation on NY client networks, but also any
222operation with IP addresses included in those networks. To fix this, you should
223change the rule this way:
224```
225 allow {client network} and {New York} and not {$page_ipaddress}
226```
227
228### Upgrading to 0.20.0
229
230WARNING: This release have too many internal changes, some of them were waiting
231more than a year to be released. So this release is considered "BETA" and is
232recommended only to curiuos users, who agree to sacrifice the stability to the
233progress.
234
235Racks and Rows are now stored in the database as Objects. The RackObject table
236was renamed to Object. SQL views were created to ease the migration of custom
237reports and scripts.
238
239New plugins engine instead of `local.php` file. To make your own code stored in
240`local.php` work, you must move the `local.php` file into the `plugins/` directory.
241The name of this file does not matter any more. You also can store multiple
242files in that dir, separate your plugins by features, share them and try the
243plugins from other people just placing them into `plugins/` dir, no more merging.
244
245* `$path_to_local_php` variable has no special meaning any more.
246* `$racktables_confdir` variable is now used only to search for `secret.php` file.
247* `$racktables_plugins_dir` is a new overridable special variable pointing to `plugins/` directory.
248
249Beginning with this version it is possible to delete IP prefixes, VLANs, Virtual
250services and RS pools from within theirs properties tab. So please inspect your
251permissions rules to assure there are no undesired allows for deletion of these
252objects. To ensure this, you could try this code in the beginning of permissions
253script:
254```
255allow {userid_1} and {$op_del}
256deny {$op_del} and ({$tab_edit} or {$tab_properties})
257```
258
259Hardware gateways engine was rewritten in this version of RackTables. This means
260that the file `gateways/deviceconfig/switch.secrets.php` is not used any more. To
261get information about configuring connection properties and credentials in a new
262way please read [this](http://wiki.racktables.org/index.php/Gateways).
263
264This also means that recently added features based on old API (D-Link switches
265and Linux gateway support contributed by Ilya Evseev) are not working any more
266and waiting to be forward-ported to new gateways API. Sorry for that.
267
268Two new config variables appeared in this version:
269 - `SEARCH_DOMAINS`. Comma-separated list of DNS domains which are considered
270 "base" for your network. If RackTables search engine finds multiple objects
271 based on your search input, but there is only one which FQDN consists of
272 your input and one of these search domains, you will be redirected to this
273 object and other results will be discarded. Such behavior was unconditional
274 since 0.19.3, which caused many objections from users. So welcome this
275 config var.
276 - `QUICK_LINK_PAGES`. Comma-separated list of RackTables pages to display links
277 to them on top. Each user could have his own list.
278
279Also some of config variables have changed their default values in this version.
280This means that upgrade script will change their values if you have them in
281previous default state. This could be inconvenient, but it is the most effective
282way to encourage users to use new features. If this behavior is not what you
283want, simply revert these variables' values:
284
285variable | old | new | comment
286------------------------|-------------|-------|--------
287`SHOW_LAST_TAB` | no | yes
288`IPV4_TREE_SHOW_USAGE` | yes | no | Networks' usage is still available by click.
289`IPV4LB_LISTSRC` | {$typeid_4} | false
290`FILTER_DEFAULT_ANDOR` | or | and | This implicitly enables the feature of dynamic tree shrinking.
291`FILTER_SUGGEST_EXTRA` | no | yes | Yes, we have extra logical filters!
292`IPV4_TREE_RTR_AS_CELL` | yes | no | Display routers as simple text, not cell.
293
294Also please note that variable `IPV4_TREE_RTR_AS_CELL` now has third special value
295besides 'yes' and 'no': 'none'. Use 'none' value if you are experiencing low
296performance on IP tree page. It will completely disable IP ranges scan for
297used/spare IPs and the speed of IP tree will increase radically. The price is
298you will not see the routers in IP tree at all.
299
300### Upgrading to 0.19.13
301A new "date" attribute type has been added. Existing date based fields ("HW
302warranty expiration", "support contract expiration" and "SW warranty
303expiration") will be converted to this new type but must be in the format
304"mm/dd/yyyy" otherwise the conversion will fail.
305
306### Upgrading to 0.19.2
307
308This release is different in filesystem layout. The "gateways" directory has
309been moved from `wwwroot` directory. This improves security a bit. You can also
310separate your local settings and add-ons from the core RackTables code. To do
311that, put a single `index.php` file into the DocumentRoot of your http server:
312
313```php
314<?php
315$racktables_confdir='/directory/with/secret.php/and/local.php/';
316require '/directory_where_you_extracted_racktables_distro/wwwroot/index.php';
317?>
318```
319
320No more files are needed to be available directly over the HTTP. Full list of
321filesystem paths which could be specified in custom `index.php` or `secret.php`:
322* `$racktables_gwdir`: path to the gateways directory;
323* `$racktables_staticdir`: path to the directory containing `pix`, `js`, `css` directories;
324* `$racktables_confdir`: path where secret.php and local.php are located. It is not recommended to define it in `secret.php`, cause only the path to `local.php` will be affected;
325* `$path_to_secret_php`: Ignore `$racktables_confdir` when locating `secret.php` and use the specified path;
326* `$path_to_local_php`: idem for `local.php`.
327
328### Upgrading to 0.19.0
329
330The files, which are intended for the httpd (web-server) directory, are now in
331the `wwwroot` directory of the tar.gz archive. Files outside of that directory
332are not directly intended for httpd environment and should not be copied to the
333server.
334
335This release incorporates ObjectLog functionality, which used to be available as
336a separate plugin. For the best results it is advised to disable (through
337`local.php`) external ObjectLog plugin permanently before the new version is
338installed. All previously accumulated ObjectLog records will be available
339through the updated standard interface.
340
341RackTables is now using PHP JSON extension which is included in the PHP core
342since 5.2.0.
343
344The barcode attribute was removed. The upgrade script attempts to preserve the
345data by moving it to either the 'OEM S/N 1' attribute or to a Log entry. You
346should backup your database beforehand anyway.
347
348### Upgrading to 0.18.x
349
350RackTables from its version 0.18.0 and later is not compatible with RHEL/CentOS
351(at least with versions up to 5.5) Linux distributions in their default
352installation. There are yet options to work around that:
353
3541. Install RackTables on a server with a different distribution/OS.
3552. Request Linux distribution vendor to fix the bug with PCRE.
3563. Repair your RHEL/CentOS installation yourself by fixing its PCRE
357 RPM as explained [here](http://bugs.centos.org/view.php?id=3252)