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