Scala HTML CSS JavaScript Smalltalk Java Other
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.asciidoc

Rudder

Continuous configuration for effective compliance

Rudder is an easy to use, web-driven, role-based solution for IT Infrastructure Automation & Compliance.

The workflow offers different users options at their own level:

  • Non-expert users can define parameters in a central interface, and Rudder will automatically make sure that your IT services are installed, configured, running and in good health. All actions (checks, warnings, fixed errors…) are reported upon immediately in the user interface, keeping drift from nominal behaviour low.

  • Expert users can configure how to implement these parameters on different systems, or build upon the pre-defined library provided using the CLI or API.

  • Managers can consult compliance reports and access audit logs.

Rudder is an established project with several 10000s of node managed, in companies from small to biggest-in-their-field. Typical deployments manage 100s to 1000s of nodes. The biggest known deployment in 2016 is about 7000 nodes.

Rudder Dashboard

Feature overview

  • Web interface to manage nodes and define policies

  • Continuously assesses drift compared to defined policies (with or without auto-healing)

  • Optionally, continuously enforces configuration over time (configuring once is good, ensuring configuration is always valid and automatically fixing it is better)

  • Inventory of all managed nodes

  • Compliance reporting, by configuration and/or by node, with possibility to drill down in non-compliance issues to identify the root problem.

  • Automate common system administration tasks (installation, configuration)

  • Full REST API to interact with the Rudder server

Tip
Rudder is open source – we welcome ideas, comments, criticism, patches and any other contributions! So get chatting with our community on IRC!

Testing and installing Rudder

5 minute tests

Demo site

You can see a demo version of Rudder: http://demo.rudder-project.org/

Vagrant

Just want to test Rudder without worrying about a full installation, but with real virtual machines so that you can actually configure and test things, unlike the demo? We provide a Vagrant set-up. See Rudder Vagrant page for getting started with Rudder on Vagrant.

Rudder Test Framework (rtf)

Rudder test framework is a tool that allows to define full environnements and set them up for you. For example, you can define a platform with a Rudder server on Debian stable, 2 nodes on CentOS connected to it, and a Rudder Relay Server with its own 2 Debian nodes in 3 lines of configuration and commands.

See https://github.com/Normation/rudder-tests for more information.

Installing on real environments

Linux server packages

The easiest way to test and use Rudder for prototyping or production is to install it from the provided Linux packages. For the server, the main current .rpm-based (RedHat, CentOS, SLES) and .deb-based (Debian, Ubuntu) distributions are supported. See https://www.rudder-project.org/site/get-rudder/downloads/ for details about repository and available versions.

Rudder agent packages

Rudder agent is extremely versatile and packages are available for a wide range of versions of RedHat, CentOS, SLES, Debian and Ubuntu (like RHEL3 or Debian Lenny).

It works on other distributions as well, like Slackware, Raspbian and other embedded Linux on ARM/x86, Android, FreeBSD but no ready-to-use packages are provided today.

Normation offers AIX, Solaris and Windows agents.

Authors

Rudder is supported by Normation http://www.normation.com/en/rudder/

The list of contributors is available in https://github.com/Normation/rudder/graphs/contributors

License

This project is licensed under GPLv3 license, see the provided "LICENSE" file or http://www.gnu.org/licenses/gpl-3.0.txt

We added an extension to the main GPLv3 license to allows to build and use plugins on top of Rudder with any license, open source or closed/proprietary, see: https://github.com/Normation/rudder/blob/master/LICENSE_EXCEPTION

Contributing

Thank you for your interest in our project!

We welcome pull requests on any of the Rudder repositories.

The contribution process is detailed here: http://www.rudder-project.org/HowToContribute

Rudder components and projects overview

Functional Components

Rudder Functional Components

Projects

Rudder is now composed of several projects:

Component Description and GitHub Projects

Rudder documentation

We have a project for main documentation and API documentation: https://github.com/Normation/rudder-doc https://github.com/Normation/rudder-api-doc

Rudder agent

This project contains the CLI for Rudder agent https://github.com/Normation/rudder-agent

Rudder Techniques

Provided Techniques coming in the base set-up of Rudder https://github.com/Normation/rudder-techniques

ncf framework

A powerful and structured CFEngine framework used to build Rudder Techniques https://github.com/Normation/ncf

Rudder server

This is the Scala web application responsible for policy definition and generation by node, and compliance reporting. It also manages node inventories. It is composed of several Scala projects:

https://github.com/Normation/rudder-parent-pom https://github.com/Normation/rudder-commons https://github.com/Normation/scala-ldap https://github.com/Normation/cf-clerk https://github.com/Normation/rudder https://github.com/Normation/ldap-inventory

Rudder packages

This project contains all the logic to build both server and agent packages for Rudder https://github.com/Normation/rudder-packages

Rudder tools

Nice tools around Rudder https://github.com/Normation/rudder-tools

Rudder plugins

Plugin examples: https://github.com/Normation/rudder-plugin-helloworld https://github.com/Normation/rudder-plugin-external-node-information https://github.com/Normation/rudder-plugin-itop

On a more 'developer oriented' usage on this repository only (not as Rudder as a whole):

This Scala web application is managed with Maven software project management (http://maven.apache.org/). You will need a working Maven 3.x.x installation.

Clean, build and install on your local repository:

We are working on a public artefact repository for Rudder, so for now you will need to build all dependencies for the Scala web application yourself. You can create a script with the following lines:

$ echo clone-build-rudder.sh
#!/bin/sh
BASE="$PWD"
REPOS="rudder-parent-pom rudder-commons scala-ldap ldap-inventory rudder"
for i in ${REPOS}; do
    echo "\e[0;32mCloning ${i}\e[0m"
    git clone https://github.com/Normation/$i.git
    P=${BASE}/${i}
    cd ${P}
    echo "\e[0;32mBuilding ${P}\e[0m"
    mvn install
done