(R)?ex - A framework to simplify system administration
Geschichte• (R)?ex - Remote Execution• Entstanden um Deployments  unterschiedlicher Projekte zu vereinfachen  und zu verei...
Mittlerweile• Framework zur Administration von Linux  Servern.• Remote Commands werden über SSH  ausgeführt.• Viele Befehl...
Und was ist‘s jetzt?• Ganz grob, so was ähnliches wie Make• Es gibt ein Rexfile• Ein normales Perl Script
Rexfileuser “jan“;task “uptime“, sub {    say run “uptime“;};
Rexfileuser “jan“;task “uptime“, sub {    say run “uptime“;};$ rex -H “server[01..02]“ uptime
Rexfileuser “jan“;task “uptime“, sub {    say run “uptime“;};$ rex -H “server[01..02]“ uptime[2011-06-24 18:27:28] - INFO -...
Administratives
Paketverwaltungtask “prepare“, sub {    install package => “apache2“;    install package => [                          “ap...
Paketverwaltungtask “prepare“, sub {    remove package => “apache2“;};
Hardwareinfostask “memory“, sub {    my $mem = memory();    say “Free: “ . $mem->{“free“};};
Hardwareinfostask “memory“, sub {    my $mem = memory();    say “Free: “ . $mem->{“free“};};task “network“, sub {    my $n...
Prozessetask “ps“, sub {    for my $process ( ps() ) {         say “cmd: “ . $process->{“command“};         say “pid:“ . $...
Filesystemtask “prepare“, sub {   unless( is_dir(“/srv/httpd/htdocs“) ) {       mkdir(“/srv/httpd/htdocs“);       cp(“/mnt...
Dateien und Aktionentask “prepare“, sub {   install file => “/etc/apache2/httpd.conf“, {          source => “files/apache/ht...
Deployments
Apache Deploymentsuse Rex::Apache::Deploy Symlink;my $VERSION = “1.0“;deploy_to “/var/www/deploy“;document_root “/var/www/...
Tomcat Deploymentsuse Rex::Apache::Deploy Tomcat;context_path “/myapp“;desc “Deploy Application“;task “deploy“, “server[01...
Danke für die Aufmerksamkeit.      http://rexify.org/
Upcoming SlideShare
Loading in …5
×

Automatisierte Linux Administration mit (R)?ex

891 views

Published on

Diese Präsentation gibt einen kleinen Überblick über die Funktionen von Rex.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
891
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Automatisierte Linux Administration mit (R)?ex

    1. 1. (R)?ex - A framework to simplify system administration
    2. 2. Geschichte• (R)?ex - Remote Execution• Entstanden um Deployments unterschiedlicher Projekte zu vereinfachen und zu vereinheitlichen.• Deployments auf unterschiedliche Umgebungen (Live, Prelive, Testing)• Einfaches/Automatisiertes Deployment auf mehreren Servern.
    3. 3. Mittlerweile• Framework zur Administration von Linux Servern.• Remote Commands werden über SSH ausgeführt.• Viele Befehle werden transparent umgeschrieben.• Konfigurationsmanagement
    4. 4. Und was ist‘s jetzt?• Ganz grob, so was ähnliches wie Make• Es gibt ein Rexfile• Ein normales Perl Script
    5. 5. Rexfileuser “jan“;task “uptime“, sub { say run “uptime“;};
    6. 6. Rexfileuser “jan“;task “uptime“, sub { say run “uptime“;};$ rex -H “server[01..02]“ uptime
    7. 7. Rexfileuser “jan“;task “uptime“, sub { say run “uptime“;};$ rex -H “server[01..02]“ uptime[2011-06-24 18:27:28] - INFO - Running task: uptime[2011-06-24 18:27:28] - INFO - Connecting to server01 (jan) 21:18:19 up 2:18, 1 user, load average: 0.00, 0.01, 0.03[2011-06-24 18:27:28] - INFO - Connecting to server02 (jan) 18:27:18 up 1 min, 1 user, load average: 2.12, 0.80, 0.28
    8. 8. Administratives
    9. 9. Paketverwaltungtask “prepare“, sub { install package => “apache2“; install package => [ “apache2“, “vim“, “libapache2-mod-php5“ ];};
    10. 10. Paketverwaltungtask “prepare“, sub { remove package => “apache2“;};
    11. 11. Hardwareinfostask “memory“, sub { my $mem = memory(); say “Free: “ . $mem->{“free“};};
    12. 12. Hardwareinfostask “memory“, sub { my $mem = memory(); say “Free: “ . $mem->{“free“};};task “network“, sub { my $net_info = network_interfaces(); for my $dev ( keys %{ $net_info } ) { say “$dev hat die ip: “ . $net_info->{$dev}->{“ip“}; }};
    13. 13. Prozessetask “ps“, sub { for my $process ( ps() ) { say “cmd: “ . $process->{“command“}; say “pid:“ . $process->{“pid“}; } kill 9931;};
    14. 14. Filesystemtask “prepare“, sub { unless( is_dir(“/srv/httpd/htdocs“) ) { mkdir(“/srv/httpd/htdocs“); cp(“/mnt/templates/htdocs/*“, “/srv/httpd/htdocs“); }};
    15. 15. Dateien und Aktionentask “prepare“, sub { install file => “/etc/apache2/httpd.conf“, { source => “files/apache/httpd.conf“, owner => “root“, group => “root“, mode => 644, on_change => service(apache2 => “restart“) };};
    16. 16. Deployments
    17. 17. Apache Deploymentsuse Rex::Apache::Deploy Symlink;my $VERSION = “1.0“;deploy_to “/var/www/deploy“;document_root “/var/www/html“;generate_deploy_directory sub { return $VERSION;};desc “Deploy Application“;task “deploy“, “server[01..04]“, sub { deploy “myapp-$VERSION.tar.gz“;};
    18. 18. Tomcat Deploymentsuse Rex::Apache::Deploy Tomcat;context_path “/myapp“;desc “Deploy Application“;task “deploy“, “server[01..04]“, sub { deploy “myapp-1.0.war“, { username => “manager-user“, password => “manager-password“, port => 8080 };};
    19. 19. Danke für die Aufmerksamkeit. http://rexify.org/

    ×