ubuntuusers.de

Rex

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/terminal.png Rex 🇬🇧 - in Eigenschreibweise (R)?ex - ist ein Werkzeug für Administratoren zum zentralen Konfigurationsmanagement. Es ist in Perl geschrieben und auch die Syntax der Konfigurationsdateien orientiert sich stark an Perl.

Der Aufbau ist folgendermaßen: Es gibt einen (R)?ex-Master, welcher über die Konfigurationsdateien verfügt. Diese werden "auf Knopfdruck" per SSH an festgelegte Nodes verteilt. Dies können Konfigurationen, aber auch Kommandos wie z.B. apt-get update sein. Die Bedienung erfolgt ausschließlich über die Kommandozeile.

Voraussetzungen

Zur Kommunikation mit den zu verwaltenden Computern wird ein SSH-Server auf allen Client-Rechnern vorausgesetzt. Auf dem Verwaltungsrechner wird außerdem Perl benötigt - das bei Ubuntu aber bereits vorinstalliert ist.

Installation

Das Programm ist ab Ubuntu 15.10 in den offiziellen Paketquellen vorhanden [1]:

  • rex (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install rex 

Oder mit apturl installieren, Link: apt://rex

Fremdquelle

Bei älteren Ubuntu-Installationen erfolgt die Installation über eine Fremdquelle. Diese liefert im Gegensatz zu den offiziellen Paketquellen die jeweils aktuellste Version. Das Einbinden der Fremdquelle erfolgt in drei Schritten:

  1. Zuerst installiert man folgendes Paket als Abhängigkeit:

    • apt-transport-https

    Befehl zum Installieren der Pakete:

    sudo apt-get install apt-transport-https 

    Oder mit apturl installieren, Link: apt://apt-transport-https

  2. Um aus der Fremdquelle zu installieren, muss man unabhängig von der Ubuntu-Version die folgende Paketquelle freischalten:

    Hinweis!

    Zusätzliche Fremdquellen können das System gefährden.

    deb https://rex.linux-files.org/ubuntu/ xenial rex
  3. Um die Fremdquelle zu authentifizieren, muss man den Signierungsschlüssel herunterladen ⮷ und in der Paketverwaltung hinzufügen. Alternativ dazu kann man auch im Terminal den folgenden Befehl ausführen:

    wget -q -O "-" https://rex.linux-files.org/DPKG-GPG-KEY-REXIFY-REPO | sudo apt-key add - 

Nach dem Aktualisieren der Paketquellen erfolgt die Installation wie oben angegeben.

Bedienung

Das Programm kann dann sofort gestartet werden [2]. Die allgemeine Syntax lautet:

rex [OPTIONEN] 

rex -h zeigt die Hilfe an. Um (R)?ex starten zu können benötigt man ein Rexfile (siehe Beispiele) im aktuellen Verzeichnis (oder man spezifiziert dieses mit dem Parameter -f DATEINAME).

Kommandos ausführen

Die zentrale Konfigurationsdatei ist eine Datei namens Rexfile. Diese muss an einem Ort der eigenen Wahl angelegt werden und mindestens mit folgendem Inhalt befüllt werden:

use Rex -feature => [ '1.3' ];
user "root";
password "Passwort oder SSH-Key-Passphrase"
group myservers => "localhost, host1, host2, host3"
group localhost => "localhost"

Hier wird also festgelegt, dass man (R)?ex in der Version 1.3 verwenden will, Kommandos mit Root-Rechten ausführen will und es werden zwei Gruppen festgelegt, welche von (R)?ex angesprochen werden sollen: myservers mit den Hosts localhost, host1, host2 und host3 sowie eine zweite Gruppe namens localhost.

Beispiele

Als Beispiel soll auf allen Servern der Gruppe myservers der Befehl apt-get update && apt-get upgrade ausgefuehrt werden.:

use Rex -feature => [ '1.3' ];
user "root";
password "Passwort oder SSH-Key-Passphrase"
group myservers => "localhost, host1, host2, host3"

desc "Update";
task "update", group => "myservers", sub {
        my $output = run "apt-get update";
        say $output;
};
desc "Upgrade";
task "upgrade", group => "myservers", sub {
        my $output = run "apt-get upgrade";
        say $output;
};

desc ist hierbei eine Beschreibung des Tasks, task "upgrade" bezeichnet das Target, group die Server, auf die der Task angewendet werden soll. Schlussendlich wird in einer Funktion deklariert, was überhaupt geschehen soll. In diesem Fall soll der Befehl apt-get update und apt-get upgrade ausgeführt und die Ausgabe dieser Kommandos angezeigt werden.

Hat man das Konfigurationsfile erstellt, kann dieses mittels der Befehle

rex update
rex upgrade 

angewandt werden. (R)?ex verbindet sich dann nacheinander mit den festgelegten Hosts via SSH und führt die jeweiligen Befehle aus.

Dienste installieren und konfigurieren

Dies war ein einfaches Beispiel zur Ausführung von Kommandos. Man kann jedoch noch viel mehr mit (R)?ex verwirklichen, zum Beispiel Dienste installieren und konfigurieren. Im nächsten Beispiel soll der Apache-Webserver auf allen Servern der Gruppe myservers in Betrieb genommen werden. Hierzu legt man zunächst eine Library an:

mkdir -p ~/lib/Services/Apache/files/etc 

Ist dies geschehen, so muss die neue Library dem Rexfile bekannt gemacht werden:

require Service::Apache;

Dies wird einfach in das Rexfile am Anfang eingetragen. Danach legt man eine Datei ~/lib/Service/Apache/__module__.pm an, welche die Konfiguration der Library enthält:

desc "Prepare Frontend Server";
task "prepare", group => "myservers", sub {
  pkg "apache2",
    ensure => "latest";

  service "apache2",
    ensure => "started";
};
desc "Keep Configuration in sync";
task "configure", group => "myservers", sub {
  prepare();

  file "/etc/apache2/apache2.conf",
    source    => "files/etc/apache2/apache2.conf",
    on_change => sub { service apache2 => "reload"; };
};

Der Task prepare sorgt dafür, dass der Apache-Webserver installiert wird und anschließend neu gestartet wird. Mit dem Befehl pkg "paketname" und ensure => "latest" trägt man dafür Sorge, dass Apache2 in der neuesten Version installiert wird. Der Befehl pkg steht nicht für alle Distributionen zur Verfügung, hier muss dann eine Funktion verwendet werden (siehe Beispiel 1).

Die Apache-Konfiguration wird dann in einem zweiten Schritt vorgenommen, der configure heisst. In einem ersten Schritt wird zunächst der Task prepare (s.o.) aufgerufen, um nochmals sicher zu gehen, dass alle Hosts über den Apache-Server verfügen. Danach wird festgelegt, dass auf den Hosts die Datei /etc/apache2/apache2.conf vorhanden sein soll, wobei diese der Angabe files/etc/apache2/apache2.conf (~/lib/Service/Apache/files/etc/apache2/apache2.conf auf dem Server) entspricht. Außerdem wird festgelegt, was passiert, wenn sich diese Datei ändert: dann wird der Apache-Webserver neu gestartet.

Diese Revision wurde am 7. Februar 2020 10:55 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, Server, System, Fernwartung