Skip to content
Ferenc Erki edited this page Mar 8, 2015 · 1 revision

Overview

This is just brainstorming.

This is a page to track all the ideas what can be made different with the 2.x version.

These ideas can contain everything, for example:

  • code
  • perl modules to use
  • the syntax of the Rexfiles (which doesn't necessary mean that we will break compatibility, just to see if there are cool ideas)
  • OS support
  • Rex modules (Rex::Box, CMDB, ...)
  • documentation
  • testing
  • anything else

Some of these points here may be implemented sometime, while others may not.

The first release of 2.x is planned to happen somewhere in 2015 - no exact plans or dealines though.

This will not make the 0.x/1.x version obsolete. The 1.x version will be maintained and supported until at least 2017-03-31 (EOL date for RHEL/CentOS 5).

Perl modules

Goals

  • easy to install and use
  • easy to extend with custom modules
  • easy to read the source code, even if new to perl
  • transport mechanism should be modular, so that it is possible to use other transports than ssh (for faster runs)
  • can be used as library in own scripts
  • with default usage, no dependencies on the remote host (except for a normal perl installation, and a running sshd)
  • An offical and powerful webui (in progress, see Rex-JobControl)

Architecture

We need an architecture where we can replace each layer with new (or other) code without affecting other layers.

  • different layers encapsulating
  • DSL
  • connection handling
  • resources
  • state handling
  • reporting
  • execution

Connection handling

We need to have multiple connection methods (SSH, Rex Agent over SSH (like rsync), zeromq, ...).

State handling

We need to have a central state handling, so that we can query the resources (and build dependencies on resources) from other systems.

Resources

Resources exists of a resource function (like pkg()) and at least one provider. A provider provides the ability to execute the resource for a given "thing". For example a package provider for "apt", "yum", "zypper", "cpanm", ...

Reporting

All resources should be monitored and generate reports for the changes they have done. The reporting interface must be extendable. So that it is possible to connect the reporting to any system.

Error message

The error messages needs to be better understandable. Some modules that may help:

Logging