SlideShare ist ein Scribd-Unternehmen logo
(R)?ex - A framework to simplify system administration
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.
Mittlerweile
• Framework zur Administration von Linux
  Servern.
• Remote Commands werden über SSH
  ausgeführt.
• Viele Befehle werden transparent
  umgeschrieben.
• Konfigurationsmanagement
Und was ist‘s jetzt?

• Ganz grob, so was ähnliches wie Make
• Es gibt ein Rexfile
• Ein normales Perl Script
Rexfile
user “jan“;
task “uptime“, sub {
    say run “uptime“;
};
Rexfile
user “jan“;
task “uptime“, sub {
    say run “uptime“;
};

$ rex -H “server[01..02]“ uptime
Rexfile
user “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
Administratives
Paketverwaltung
task “prepare“, sub {
    install package => “apache2“;
    install package => [
                          “apache2“,
                          “vim“,
                          “libapache2-mod-php5“
                       ];
};
Paketverwaltung


task “prepare“, sub {
    remove package => “apache2“;
};
Hardwareinfos
task “memory“, sub {
    my $mem = memory();
    say “Free: “ . $mem->{“free“};
};
Hardwareinfos
task “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“};
    }
};
Prozesse
task “ps“, sub {
    for my $process ( ps() ) {
         say “cmd: “ . $process->{“command“};
         say “pid:“ . $process->{“pid“};
    }

     kill 9931;
};
Filesystem

task “prepare“, sub {
   unless( is_dir(“/srv/httpd/htdocs“) ) {
       mkdir(“/srv/httpd/htdocs“);
       cp(“/mnt/templates/htdocs/*“, “/srv/httpd/htdocs“);
   }
};
Dateien und Aktionen
task “prepare“, sub {
   install file => “/etc/apache2/httpd.conf“, {
          source => “files/apache/httpd.conf“,
          owner => “root“,
          group => “root“,
          mode => 644,
          on_change => service(apache2 => “restart“)
   };
};
Deployments
Apache Deployments
use 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“;
};
Tomcat Deployments
use 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
   };
};
Danke für die Aufmerksamkeit.
      http://rexify.org/

Weitere ähnliche Inhalte

Was ist angesagt?

Einführung in Laravel und GulpJS
Einführung in Laravel und GulpJSEinführung in Laravel und GulpJS
Einführung in Laravel und GulpJS
thespazecookie
 
Systemmanagement mit Puppet und Foreman
Systemmanagement mit Puppet und ForemanSystemmanagement mit Puppet und Foreman
Systemmanagement mit Puppet und Foreman
B1 Systems GmbH
 
Überblick über aktuelle Versionsmanagementsysteme
Überblick über aktuelle VersionsmanagementsystemeÜberblick über aktuelle Versionsmanagementsysteme
Überblick über aktuelle Versionsmanagementsysteme
Andreas Schreiber
 
Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten
Infrastructure as code: Cloud-Umgebungen mit Terraform verwaltenInfrastructure as code: Cloud-Umgebungen mit Terraform verwalten
Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten
inovex GmbH
 
TechTalkThursday 26.11.2015: Manage the minions - Docker Container mit Kubern...
TechTalkThursday 26.11.2015: Manage the minions - Docker Container mit Kubern...TechTalkThursday 26.11.2015: Manage the minions - Docker Container mit Kubern...
TechTalkThursday 26.11.2015: Manage the minions - Docker Container mit Kubern...
nine
 
Ceph Introduction @GPN15
Ceph Introduction @GPN15Ceph Introduction @GPN15
Ceph Introduction @GPN15
m1no
 
Unser Weg zum Frankenstack
Unser Weg zum FrankenstackUnser Weg zum Frankenstack
Unser Weg zum Frankenstack
Sascha Vogt
 
TechTalkThursday: Zentrales Metriken-System - ist der Flügelschlag des Schmet...
TechTalkThursday: Zentrales Metriken-System - ist der Flügelschlag des Schmet...TechTalkThursday: Zentrales Metriken-System - ist der Flügelschlag des Schmet...
TechTalkThursday: Zentrales Metriken-System - ist der Flügelschlag des Schmet...
Benjamin Kuster
 
check_sap_health
check_sap_healthcheck_sap_health
check_sap_health
Gerhard Lausser
 
Der oracle dba_und_seine_passwoerter
Der oracle dba_und_seine_passwoerterDer oracle dba_und_seine_passwoerter
Der oracle dba_und_seine_passwoerter
Gunther Pippèrr
 
Ldap sqlnet
Ldap sqlnetLdap sqlnet
Ldap sqlnet
Gunther Pippèrr
 
Introduction into Oracle Data Pump 11g/12c - Export and Import Data
Introduction into Oracle Data Pump 11g/12c - Export and Import DataIntroduction into Oracle Data Pump 11g/12c - Export and Import Data
Introduction into Oracle Data Pump 11g/12c - Export and Import Data
Gunther Pippèrr
 
Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012Florian Holzhauer
 
Nagios Conference 2007 | Vmware Monitoring by Ingo Latschner
Nagios Conference 2007 | Vmware Monitoring by Ingo LatschnerNagios Conference 2007 | Vmware Monitoring by Ingo Latschner
Nagios Conference 2007 | Vmware Monitoring by Ingo Latschner
NETWAYS
 
Von Test nach live mit Rex
Von Test nach live mit RexVon Test nach live mit Rex
Von Test nach live mit Rex
inovex GmbH
 
OSMC 2010 | Monitoring mit Shinken by Gerhard Laußer
OSMC 2010 | Monitoring mit Shinken by Gerhard LaußerOSMC 2010 | Monitoring mit Shinken by Gerhard Laußer
OSMC 2010 | Monitoring mit Shinken by Gerhard Laußer
NETWAYS
 
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package ManagerEinfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
Lenz Grimmer
 
coshsh
coshshcoshsh
OSMC 2008 | Monitoring Microsoft SQL Server by Michael Streb
OSMC 2008 | Monitoring Microsoft SQL Server by Michael StrebOSMC 2008 | Monitoring Microsoft SQL Server by Michael Streb
OSMC 2008 | Monitoring Microsoft SQL Server by Michael Streb
NETWAYS
 
Synology Workshop07 06
Synology Workshop07 06Synology Workshop07 06
Synology Workshop07 06
Jens-Christian Fischer
 

Was ist angesagt? (20)

Einführung in Laravel und GulpJS
Einführung in Laravel und GulpJSEinführung in Laravel und GulpJS
Einführung in Laravel und GulpJS
 
Systemmanagement mit Puppet und Foreman
Systemmanagement mit Puppet und ForemanSystemmanagement mit Puppet und Foreman
Systemmanagement mit Puppet und Foreman
 
Überblick über aktuelle Versionsmanagementsysteme
Überblick über aktuelle VersionsmanagementsystemeÜberblick über aktuelle Versionsmanagementsysteme
Überblick über aktuelle Versionsmanagementsysteme
 
Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten
Infrastructure as code: Cloud-Umgebungen mit Terraform verwaltenInfrastructure as code: Cloud-Umgebungen mit Terraform verwalten
Infrastructure as code: Cloud-Umgebungen mit Terraform verwalten
 
TechTalkThursday 26.11.2015: Manage the minions - Docker Container mit Kubern...
TechTalkThursday 26.11.2015: Manage the minions - Docker Container mit Kubern...TechTalkThursday 26.11.2015: Manage the minions - Docker Container mit Kubern...
TechTalkThursday 26.11.2015: Manage the minions - Docker Container mit Kubern...
 
Ceph Introduction @GPN15
Ceph Introduction @GPN15Ceph Introduction @GPN15
Ceph Introduction @GPN15
 
Unser Weg zum Frankenstack
Unser Weg zum FrankenstackUnser Weg zum Frankenstack
Unser Weg zum Frankenstack
 
TechTalkThursday: Zentrales Metriken-System - ist der Flügelschlag des Schmet...
TechTalkThursday: Zentrales Metriken-System - ist der Flügelschlag des Schmet...TechTalkThursday: Zentrales Metriken-System - ist der Flügelschlag des Schmet...
TechTalkThursday: Zentrales Metriken-System - ist der Flügelschlag des Schmet...
 
check_sap_health
check_sap_healthcheck_sap_health
check_sap_health
 
Der oracle dba_und_seine_passwoerter
Der oracle dba_und_seine_passwoerterDer oracle dba_und_seine_passwoerter
Der oracle dba_und_seine_passwoerter
 
Ldap sqlnet
Ldap sqlnetLdap sqlnet
Ldap sqlnet
 
Introduction into Oracle Data Pump 11g/12c - Export and Import Data
Introduction into Oracle Data Pump 11g/12c - Export and Import DataIntroduction into Oracle Data Pump 11g/12c - Export and Import Data
Introduction into Oracle Data Pump 11g/12c - Export and Import Data
 
Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012Varnish PHP Unconference Hamburg 2012
Varnish PHP Unconference Hamburg 2012
 
Nagios Conference 2007 | Vmware Monitoring by Ingo Latschner
Nagios Conference 2007 | Vmware Monitoring by Ingo LatschnerNagios Conference 2007 | Vmware Monitoring by Ingo Latschner
Nagios Conference 2007 | Vmware Monitoring by Ingo Latschner
 
Von Test nach live mit Rex
Von Test nach live mit RexVon Test nach live mit Rex
Von Test nach live mit Rex
 
OSMC 2010 | Monitoring mit Shinken by Gerhard Laußer
OSMC 2010 | Monitoring mit Shinken by Gerhard LaußerOSMC 2010 | Monitoring mit Shinken by Gerhard Laußer
OSMC 2010 | Monitoring mit Shinken by Gerhard Laußer
 
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package ManagerEinfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
Einfuehrung in die Erstellung von Software-Paketen mit dem RPM Package Manager
 
coshsh
coshshcoshsh
coshsh
 
OSMC 2008 | Monitoring Microsoft SQL Server by Michael Streb
OSMC 2008 | Monitoring Microsoft SQL Server by Michael StrebOSMC 2008 | Monitoring Microsoft SQL Server by Michael Streb
OSMC 2008 | Monitoring Microsoft SQL Server by Michael Streb
 
Synology Workshop07 06
Synology Workshop07 06Synology Workshop07 06
Synology Workshop07 06
 

Ähnlich wie Automatisierte Linux Administration mit (R)?ex

Rex Linuxtag 2012
Rex Linuxtag 2012Rex Linuxtag 2012
Rex Linuxtag 2012inovex GmbH
 
Microservices mit Rust
Microservices mit RustMicroservices mit Rust
Microservices mit Rust
Jens Siebert
 
Einführung in Docker
Einführung in DockerEinführung in Docker
Einführung in Docker
Christian Colbach
 
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
NETWAYS
 
Backend-Services mit Rust
Backend-Services mit RustBackend-Services mit Rust
Backend-Services mit Rust
Jens Siebert
 
Python builds mit ant
Python builds mit antPython builds mit ant
Python builds mit ant
roskakori
 
Creasoft - Windows powershell
Creasoft - Windows powershellCreasoft - Windows powershell
Creasoft - Windows powershellCreasoft AG
 
OSDC 2013 | Enterprise open source virtualization with oVirt and RHEV by René...
OSDC 2013 | Enterprise open source virtualization with oVirt and RHEV by René...OSDC 2013 | Enterprise open source virtualization with oVirt and RHEV by René...
OSDC 2013 | Enterprise open source virtualization with oVirt and RHEV by René...
NETWAYS
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrants0enke
 
Production-ready Infrastruktur in 3 Wochen
Production-ready Infrastruktur in 3 WochenProduction-ready Infrastruktur in 3 Wochen
Production-ready Infrastruktur in 3 Wochen
André Goliath
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
Josef Adersberger
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
QAware GmbH
 
JEE-Microservices mit Quarkus – eine Einführung
JEE-Microservices mit Quarkus – eine EinführungJEE-Microservices mit Quarkus – eine Einführung
JEE-Microservices mit Quarkus – eine Einführung
gedoplan
 
PowerShell Sicherheit in 6 Schritten produktiv absichern
PowerShell Sicherheit in 6 Schritten produktiv absichernPowerShell Sicherheit in 6 Schritten produktiv absichern
PowerShell Sicherheit in 6 Schritten produktiv absichern
Attila Krick
 
Node.js
Node.jsNode.js
Rack-Middleware
Rack-MiddlewareRack-Middleware
Rack-Middleware
Hussein Morsy
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17
remigius-stalder
 
Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...
Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...
Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...
OPITZ CONSULTING Deutschland
 
Testing tools
Testing toolsTesting tools
Testing tools
Sebastian Springer
 
Opensource Tools für das Data Center Management
Opensource Tools für das Data Center ManagementOpensource Tools für das Data Center Management
Opensource Tools für das Data Center Management
inovex GmbH
 

Ähnlich wie Automatisierte Linux Administration mit (R)?ex (20)

Rex Linuxtag 2012
Rex Linuxtag 2012Rex Linuxtag 2012
Rex Linuxtag 2012
 
Microservices mit Rust
Microservices mit RustMicroservices mit Rust
Microservices mit Rust
 
Einführung in Docker
Einführung in DockerEinführung in Docker
Einführung in Docker
 
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
 
Backend-Services mit Rust
Backend-Services mit RustBackend-Services mit Rust
Backend-Services mit Rust
 
Python builds mit ant
Python builds mit antPython builds mit ant
Python builds mit ant
 
Creasoft - Windows powershell
Creasoft - Windows powershellCreasoft - Windows powershell
Creasoft - Windows powershell
 
OSDC 2013 | Enterprise open source virtualization with oVirt and RHEV by René...
OSDC 2013 | Enterprise open source virtualization with oVirt and RHEV by René...OSDC 2013 | Enterprise open source virtualization with oVirt and RHEV by René...
OSDC 2013 | Enterprise open source virtualization with oVirt and RHEV by René...
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
Production-ready Infrastruktur in 3 Wochen
Production-ready Infrastruktur in 3 WochenProduction-ready Infrastruktur in 3 Wochen
Production-ready Infrastruktur in 3 Wochen
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
JEE-Microservices mit Quarkus – eine Einführung
JEE-Microservices mit Quarkus – eine EinführungJEE-Microservices mit Quarkus – eine Einführung
JEE-Microservices mit Quarkus – eine Einführung
 
PowerShell Sicherheit in 6 Schritten produktiv absichern
PowerShell Sicherheit in 6 Schritten produktiv absichernPowerShell Sicherheit in 6 Schritten produktiv absichern
PowerShell Sicherheit in 6 Schritten produktiv absichern
 
Node.js
Node.jsNode.js
Node.js
 
Rack-Middleware
Rack-MiddlewareRack-Middleware
Rack-Middleware
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17
 
Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...
Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...
Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...
 
Testing tools
Testing toolsTesting tools
Testing tools
 
Opensource Tools für das Data Center Management
Opensource Tools für das Data Center ManagementOpensource Tools für das Data Center Management
Opensource Tools für das Data Center Management
 

Automatisierte Linux Administration mit (R)?ex

  • 1. (R)?ex - A framework to simplify system administration
  • 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. Mittlerweile • Framework zur Administration von Linux Servern. • Remote Commands werden über SSH ausgeführt. • Viele Befehle werden transparent umgeschrieben. • Konfigurationsmanagement
  • 4. Und was ist‘s jetzt? • Ganz grob, so was ähnliches wie Make • Es gibt ein Rexfile • Ein normales Perl Script
  • 5. Rexfile user “jan“; task “uptime“, sub { say run “uptime“; };
  • 6. Rexfile user “jan“; task “uptime“, sub { say run “uptime“; }; $ rex -H “server[01..02]“ uptime
  • 7. Rexfile user “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
  • 9. Paketverwaltung task “prepare“, sub { install package => “apache2“; install package => [ “apache2“, “vim“, “libapache2-mod-php5“ ]; };
  • 10. Paketverwaltung task “prepare“, sub { remove package => “apache2“; };
  • 11. Hardwareinfos task “memory“, sub { my $mem = memory(); say “Free: “ . $mem->{“free“}; };
  • 12. Hardwareinfos task “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. Prozesse task “ps“, sub { for my $process ( ps() ) { say “cmd: “ . $process->{“command“}; say “pid:“ . $process->{“pid“}; } kill 9931; };
  • 14. Filesystem task “prepare“, sub { unless( is_dir(“/srv/httpd/htdocs“) ) { mkdir(“/srv/httpd/htdocs“); cp(“/mnt/templates/htdocs/*“, “/srv/httpd/htdocs“); } };
  • 15. Dateien und Aktionen task “prepare“, sub { install file => “/etc/apache2/httpd.conf“, { source => “files/apache/httpd.conf“, owner => “root“, group => “root“, mode => 644, on_change => service(apache2 => “restart“) }; };
  • 17. Apache Deployments use 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. Tomcat Deployments use 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. Danke für die Aufmerksamkeit. http://rexify.org/

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n