Benutzer-Werkzeuge

Webseiten-Werkzeuge


allgemein:howto:rex

Rex

rex manuell installieren

Net::SSH2 installieren, damit rex Installation nicht fehlschlägt

Pakete holen für libssh:

https://launchpad.net/ubuntu/natty/amd64/libssh2-1/1.2.6-1
https://launchpad.net/ubuntu/natty/amd64/libnet-ssh2-perl/0.33-1

Pakete für libssh installieren (Reihenfolge wichtig, da Abhängigkeiten sonst nicht erfüllt sind):

dpkg -i libssh2-1_1.2.6-1_amd64.deb
dpkg -i libnet-ssh2-perl_0.33-1_amd64.deb

Rex installieren (ACHTUNG viele Passwort abfragen, wenn man nicht root ist.)

curl -L get.rexify.org | perl - --sudo -n Rex

Nicht nötig, da natty nicht mehr unterstützt wird. wget konfigurieren Proxy 172.22.100.2:80 in /etc/wgetrc eintragen. ab 12.04 precise eintragen

echo 'deb http://rex.linux-files.org/ubuntu/ precise rex' >> /etc/apt/sources.list
wget -O - http://rex.linux-files.org/DPKG-GPG-KEY-REXIFY-REPO | apt-key add -
apt-get update
apt-get install rex

Beispiel Rexfile:

ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa user@server
# Test für Warnung in der Ausgabe
Rex::Logger::info("TEST-WARNUNG", "warn");

# User mit sudo-Rechten und dessen ssh-Keys
user "user";
private_key "/home/local_user/.ssh/id_rsa";
public_key "/home/local_user/.ssh/id_rsa.pub";
auth_key;

# Alles mit sudo-Rechten ausführen
sudo_password "test123";
sudo TRUE; 

group clients => "berny";
 
task "upload", group => "clients", sub {
    say "Kopiere my_testfile auf Clients";
    
# file "</remote_path/upload_file>", source => "</local_path/to/upload_file>";
    file  "/etc/my_testfile", 
        source => "my_testfile";
};

task "mkdir", group => "clients", sub {
   say "mkdir testdir";
   mkdir( "/home/user/testdir" );
};

Rexfile um quagga in einem user-Account konfigurierbar zu machen:

Rexfile
user "user";
private_key "/home/local_user/.ssh/id_rsa";
public_key "/home/local_user/.ssh/id_rsa.pub";
auth_key;
sudo_password "<PASSWORD>";
sudo TRUE; 
 
group clients => "berny";
group testclient => "berny";
 
# Ziel-User und Rechte für den quagga-Ordner
my $user = "keinpasswort";
my $dmode = "777"; # Vollzugriff auf den Ordner
my $fmode = "666"; # Volle Schreib-/Leserechte auf die Konfig-Dateien
 
 
task "mkquagga", group => "testclient", sub {
   say "quagga-Ordner anlegen!";
   mkdir( "/home/".$user."/quagga", 
	owner => $user,
	group => $user,
	mode => $dmode,
   );
 
   say "confs in /etc/quagga erzeugen!";
   run "touch /etc/quagga/zerbra.conf";
   run "touch /etc/quagga/ripd.conf";
   run "touch /etc/quagga/ospfd.conf";
 
   say "daemons aktivieren";
   sed "ospfd=no", "ospfd=yes", "/etc/quagga/daemons";
   sed "ripd=no", "ripd=yes", "/etc/quagga/daemons";
   sed "zebra=no", "zebra=yes", "/etc/quagga/daemons";
 
   say "Neue config-Pfade setzen!";
   sed "zebra_options=\"  --daemon -A 127.0.0.1\"", "zebra_options=\"  --daemon -A 127.0.0.1 -f /home/".$user."/quagga/zebra.conf\"", "/etc/quagga/debian.conf";
   sed "ripd_options=\"   --daemon -A 127.0.0.1\"", "ripd_options=\"   --daemon -A 127.0.0.1 -f /home/".$user."/quagga/ripd.conf\"", "/etc/quagga/debian.conf";
   sed "ospfd_options=\"  --daemon -A 127.0.0.1\"", "ospfd_options=\"  --daemon -A 127.0.0.1 -f /home/".$user."/quagga/ospfd.conf\"", "/etc/quagga/debian.conf";
 
   say "sample configs kopieren";
   cp ( "/usr/share/doc/quagga/examples/zebra.conf.sample", 
   	"/home/".$user."/quagga/zebra.conf" );
   cp ( "/usr/share/doc/quagga/examples/ospfd.conf.sample",
	"/home/".$user."/quagga/ospfd.conf" );
   cp ( "/usr/share/doc/quagga/examples/ripd.conf.sample",
	"/home/".$user."/quagga/ripd.conf" );
 
   say "Rechte setzen";
   chmod $fmode, "/home/".$user."/quagga/*";
   chown $user, "/home/".$user."/quagga/*";
   chgrp $user, "/home/".$user."/quagga/*";
};
 
task "rmdirquagga", group => "testclient", sub {
   say "quagga-Ordner löschen";
   rmdir( "/home/".$user."/quagga");
};
allgemein/howto/rex.txt · Zuletzt geändert: 05.07.2018 10:03 (Externe Bearbeitung)