Skip to content

Commit

Permalink
Work in progress
Browse files Browse the repository at this point in the history
  • Loading branch information
amousset committed Feb 8, 2019
1 parent 7e7bd54 commit 1cd0798
Showing 1 changed file with 45 additions and 184 deletions.
229 changes: 45 additions & 184 deletions README.asciidoc
Original file line number Diff line number Diff line change
@@ -1,217 +1,78 @@
= Rudder: Continuous Auditing & Configuration

image::readme-resources/color_logo_horizontal_small.png[Rudder]

Continuous configuration for effective compliance
-------------------------------------------------

image:https://badges.gitter.im/normation/rudder.svg[link="https://gitter.im/normation/rudder?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge"]

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.
image:https://img.shields.io/badge/chat-with the community-brightgreen.svg?style=flat[link="https://docs.rudder.io"]
image:https://img.shields.io/badge/read-the documentation-green.svg?style=flat[link="https://docs.rudder.io"]
image:https://img.shields.io/badge/open-an issue-blue.svg?style=flat[link="https://issues.rudder.io"]
image:https://img.shields.io/badge/visit-our website-blueviolet.svg?style=flat[link="https://issues.rudder.io"]
image:https://img.shields.io/badge/donate-to support development-yellow.svg?style=flat[link="https://salt.bountysource.com/teams/rudder"]
image:https://img.shields.io/twitter/follow/rudderio.svg?style=social[link="https://twitter.com/rudderio"]

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

image::readme-resources/dashboard.png[Rudder Dashboard]

=== Feature overview

* Web interface to manage nodes and define policies
** https://www.rudder-project.org/site/documentation/screenshots/
* 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
https://www.rudder-project.org/site/support/chat-mailing-lists/[on IRC]!

=== Documentation and community

[horizontal]
Rudder site:: http://rudder-project.org
User documentation:: https://docs.rudder.io/
API documentation:: https://docs.rudder.io/api
Mailing list, IRC:: https://www.rudder-project.org/site/community/mailing-lists/
Bug report:: http://www.rudder-project.org/redmine/projects/rudder/issues
Source:: https://github.com/Normation/rudder
'''

* Rudder has several components:
=== Testing and installing Rudder
** A central server that defines the configurations to apply and collects application reports, with a focus on continuously checking configurations and centralising real-time status data. A graphical builder lowers the technical level required to define policies. Each policy can be independently set to be automatically checked or enforced on a policy or host level.

==== 5 minute tests
** Agents installed on the managed nodes. As they are very lightweight (10 to 20 MB of RAM at peak) and blazingly fast (it’s written in C and takes less than 10 seconds to verify 100 rules), they run on almost every kind of device, so you’ll be managing physical and virtual servers in the data center, cloud instances, and embedded IoT devices in the same way. Installation is self-contained, via a single package, and can auto-update to limit agent management burden.

===== Demo site
** (optional) Relay servers that allows managing nodes in different networks, or on different site through a single entry point.

You can see a demo version of Rudder: http://demo.rudder-project.org/
* Rudder is designed for critical environments where a security breach can mean more than a blip in the sales stats. Built-in features include change requests, audit logs, and strong authentication.
===== Vagrant
* The workflow offers different users options at their own level:
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 https://github.com/Normation/rudder-vagrant[Vagrant set-up].
See https://www.rudder-project.org/site/get-rudder/vagrant/[Rudder Vagrant page]
for getting started with Rudder on Vagrant.
** 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 Test Framework (rtf)
Rudder is an established project with several tens of thousands of managed nodes, in companies from small to biggest-in-their-field. Typical deployments manage 100s to 1000s of nodes. The biggest known deployments are about 10k nodes on a single Rudder server.

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.
→ Read more about Rudder features https://www.rudder.io/en/discover/what-is-rudder/[on our website].

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

==== Installing on real environments
* You can see a https://demo.rudder.io[demo version of Rudder] with fake nodes and compliance data.
* Get started with a https://docs.rudder.io/get-started/current/index.html[step-by-step guide] to setup a test environment and learn how to configure simple rules!
* *Get in touch*: if you encounter any problem while testing or have any question, https://chat.rudder.io[come chat with the community]!

===== Linux server packages
== Installation

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.
* Read about the https://docs.rudder.io/reference/current/installation/operating_systems.html[compatible operating systems] and the https://docs.rudder.io/reference/current/installation/requirements.html[requirements] before starting
* For a quick installation, we provide an https://docs.rudder.io/reference/current/installation/quick_install.html[automated installation script]
* For a complete installation, follow the https://docs.rudder.io/reference/current/installation/server/debian.html[documentation]

===== Rudder agent packages
== Links

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).
[horizontal]
Website:: https://www.rudder.io
Documentation:: https://docs.rudder.io
API documentation:: https://docs.rudder.io/api
Chat:: https://chat.rudder.io
Bug report:: https://issues.rudder.io/projects/rudder/issues
Source:: https://github.com/Normation/rudder

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.
== Contribute

Normation offers AIX, Solaris and Windows agents.
Thank you for your interest in our project! We welcome pull requests on any of the Rudder repositories.

Rudder is composed of https://www.rudder.io/en/expand/contribute/#panel-2422-6-0-0[several sub-projects]. The contribution process is detailed https://www.rudder.io/en/expand/contribute/[on our website].

=== Authors
== Authors

Rudder is supported by Normation http://www.normation.com/en/rudder/
Rudder is supported by https://www.rudder.io/en/company/about-us/[Normation].

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

== License

=== License

This project is licensed under GPLv3 license, see the provided "LICENSE" file or
http://www.gnu.org/licenses/gpl-3.0.txt
This project is licensed under GPLv3 license, see the provided https://github.com/Normation/rudder/blob/master/LICENSE[LICENSE] (or
its http://www.gnu.org/licenses/gpl-3.0.txt[source]).

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

image::readme-resources/rudder-functional-component-diagram.png[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
----
on top of Rudder with any license, open source or closed/proprietary, see the https://github.com/Normation/rudder/blob/master/LICENSE_EXCEPTION[LICENSE_EXCEPTION].

0 comments on commit 1cd0798

Please sign in to comment.