Specifications for Rudder Root Server

Hardware specifications

A dedicated server is strongly recommended to deploy Rudder Root Server.

Your Rudder Root Server can be either a physical or a virtual machine.

Rudder Server is running on both 32 and 64 bit versions of every supported Operating System.

Any CPU provided on commodity servers available nowadays should be fine. On a VM server, you should dedicate at least one core to the Rudder server.

The amount of RAM needed by the server depends mainly on the number of managed nodes.

The base requirement is to have a server with 2GB of RAM. On production environment, when managing more than 50 nodes, it is recommended to dedicate at least 4GB of RAM to the server.

Then, the default rule is to add 1GB of RAM by 500 nodes above 1000 nodes, so for example for 1500-2000 nodes, you need at minimum 6GB of RAM, and for 2500-3000 you need 8GB.

The RAM given to the web application must be augmented as explained in the chapter about webapplication RAM configuration so that it is the half of the RAM of the server, rounded down to the nearest GB. For example, if the server has 5GB of RAM, 2GB should be used.

The PostgresSQL database is the main storage user. The disk space necessary for the database can be estimated by counting around 150 to 400kB of storage used by Directive, by Node and by day of storage of node’s execution reports (default to 30 days):

The PostgresSQL memory configuration must be customized for large installation accordingly to the chapter Optimize PostgreSQL Server.

max_space = number of Directives * number of Nodes * archive.TTL * 400 kB

The retention duration for node’s execution reports can be configured in /opt/rudder/etc/rudder-web.properties file with the options:

rudder.batch.reportscleaner.archive.TTL=30

rudder.batch.reportscleaner.delete.TTL=90

For example, an installation managing 150 nodes, with an average of 100 Directives by node, and keeping execution reports for one week should anticipate the use of between 20Go and 60Go of disk size for PostgreSQL.

Supported Operating Systems

The following operating systems are supported as a Root server:

  • Debian GNU/Linux 5 (Lenny)
  • Debian GNU/Linux 6 (Squeeze)
  • Debian GNU/Linux 7 (Wheezy)
  • Red Hat Enterprise Linux (RHEL) / CentOS 6
  • SuSE Linux Enterprise Server (SLES) 11 SP1
  • Ubuntu server 12.04 LTS (Precise)
  • Ubuntu server 12.10 (Quantal)

Packages

Rudder components are distributed as a set of packages.

Figure 2. Rudder packages and their dependencies

packages.png


rudder-webapp
Package for the Rudder Web Application. It is the graphical interface for Rudder.
rudder-inventory-endpoint
Package for the inventory reception service. It has no graphical interface. This service is using HTTP as transport protocol. It receives an parses the files sent by FusionInventory and insert the valuable data into the LDAP database.
rudder-jetty
Application server for rudder-webapp and rudder-inventory-endpoint. Both packages are written in Scala. At compilation time, they are converted into .war files. They need to be run in an application server. Jetty is this application server. It depends on a compatible Java Runtime Environment. It can be either Oracle Java JRE or OpenJDK 7 JRE.
rudder-techniquess
Package for the Techniques. They are installed in /opt/rudder/configuration-repository/techniques. At runtime, the Techniques are copied into a git repository in /var/rudder. Therefore, the package depends on the git package.
rudder-inventory-ldap
Package for the database containing the inventory and configuration information for each pending and validated Node. This LDAP database is build upon OpenLDAP server. The OpenLDAP engine is contained in the package.
rudder-reports
Package for the database containing the logs sent by each Node and the reports computed by Rudder. This is a PostgreSQL database using the PostgreSQL engine of the distribution. The package has a dependency on the postgresl package, creates the database named rudder and installs the inialisation scripts for that database in /opt/rudder/etc/postgresql/*.sql.
rudder-cfengine-community
Package for the CFEngine server. This server delivers to the Nodes the Applied Policies converted into CFEngine promises.
rudder-server-root

Package to ease installation of all Rudder services. This package depends on all above packages. It also

  • installs the Rudder configuration script:
/opt/rudder/bin/rudder-init.sh
  • installs the initial promises for the Root Server in:
/opt/rudder/share/initial-promises/
  • installs the init scripts (and associated default file):
/etc/init.d/rudder-server-root
  • installs the logrotate configuration:
/etc/logrotate.d/rudder-server-root
rudder-agent
One single package integrates everything needed for the Rudder Agent. It contains CFEngine Commmunity, FusionInventory, and the initial promises for a Node. It also contains an init script:
/etc/init.d/rudder-agent

The rudder-agent package depends on a few common libraries and utilities:

  • OpenSSL
  • libpcre
  • libdb (4.6 on Debian)
  • uuidgen (utility from uuid-runtime package on Debian)

Software dependencies and third party components

The Rudder Web application requires the installation of Apache 2 httpd, Oracle Java 6 JRE or OpenJDK 7 JRE, and cURL; the LDAP Inventory service needs rsyslog and the report service requires PostgreSQL.

When available, packages from your distribution are used. These packages are:

Apache
The Apache Web server is used as a proxy to give HTTP access to the Web Application. It is also used to give writable WebDAV access for the inventory. The Nodes send their inventory to the WebDAV service, the inventory is stored in /var/rudder/inventories/incoming.
PostgreSQL
The PostgreSQL database is used to store logs sent by the Nodes and reports generated by Rudder.
rsyslog and rsyslog-pgsql
The rsyslog server is receiving the logs from the nodes and insert them into a PostgreSQL database. On SLES, the rsyslog-pgsql package is not part of the distribution, it can be downloaded alongside Rudder packages.
Oracle Java JRE or OpenJDK 7 JRE
The Java runtime is needed by the Jetty application server. On Debian, the package from the distribution is used. On SLES, the package must be downloaded from Oracle website.
curl
This package is used to send inventory files from /var/rudder/inventories/incoming to the Rudder Endpoint.
git
The package is not a dependency, but its installation is recommended. The running Techniques Library is maintained as a git repository in /var/rudder/configuration-repository/techniques. It can be useful to have git installed on the system for maintenance purpose.