rex linuxtag 2012

33
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. (R)?ex Vereinfachtes Deployment mit Rex Vortrag auf dem Linuxtag 2012 Daniel Bäurer inovex GmbH Systems Engineer

Upload: inovex-gmbh

Post on 06-Jul-2015

1.068 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Rex Linuxtag 2012

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.

(R)?exVereinfachtes Deployment mit Rex

Vortrag auf dem Linuxtag 2012

Daniel Bäurerinovex GmbHSystems Engineer

Page 2: Rex Linuxtag 2012

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.

(R)?exVereinfachtes Deployment mit Rex

Was ist (R)?ex

Wie funktioniert (R)?ex

Welche Funktionen bietet (R)?ex

Was will (R)?ex erreichen

Praktische Beispiele und Deployment einer Entwicklungsplatform mit (R)?ex

Page 3: Rex Linuxtag 2012

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.

(R)?exVereinfachtes Deployment mit Rex

Was ist (R)?ex

Page 4: Rex Linuxtag 2012

26.07.12

Was ist (R)?ex

HW Bestellung

Setup Server App-Deploy

Einbau OS-Deploy

Ziel: Neue Server sollen so schnell wie möglich einsatzbereit sein!

Page 5: Rex Linuxtag 2012

26.07.12

Was ist (R)?ex

Setup Server App-Deploy

Ziel: Neue Server sollen so schnell wie möglich einsatzbereit sein!

Page 6: Rex Linuxtag 2012

26.07.12

Was ist (R)?ex

Mit (R)?ex können alle Server von einem zentralen Punkt aus, über den kompletten Prozess des

Konfigurationsmanagement und Applikations-Deployment, verwaltet werden.

A simple framework to simplify systemadministration

Page 7: Rex Linuxtag 2012

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.

(R)?exVereinfachtes Deployment mit Rex

Wie funktioniert (R)?ex

Page 8: Rex Linuxtag 2012

26.07.12

Wie funktioniert (R)?ex

● Es gibt ein Rexfile

● Ähnlich wie ein Makefile

● Ein normales Perlscript

● Kann auch als Library in eigenen Perlscripts verwendet werden

Page 9: Rex Linuxtag 2012

26.07.12

Wie funktioniert (R)?ex

for s in $(grep ^backend ${HOME}/server.lst); do

ssh root@${s} “useradd -u 1500 -d /var/www/app -g appuser -m appuser“

ssh root@${s} “apt-get update && apt-get install apache2“

sed 's/@keepalive@/On/' templates/apache2.conf | \

ssh root@${s} “cat > /etc/apache2/apache2.conf“

done

Page 10: Rex Linuxtag 2012

26.07.12

Wie funktioniert (R)?ex

set user => "root";set group => www => "www[01..15]";

task "prepare", group => "www", sub {

create_user "appuser",home => "/var/www/app",uid => 1500,groups => [qw/appuser/];

update_package_db;install "apache2";

file "/etc/apache2/apache2.conf",content => template("templates/apache2.conf",

keepalive => "On", ),on_change => sub { service apache2 => "restart"; };

};

Page 11: Rex Linuxtag 2012

26.07.12

Wie funktioniert (R)?ex

set user => "root";set group => www => "www[01..15]";

task "prepare", group => "www", sub {

create_user "appuser",home => "/var/www/app",uid => 1500,groups => [qw/appuser/];

update_package_db;install "apache2";

file "/etc/apache2/apache2.conf",content => template("templates/apache2.conf",

keepalive => "On", ),on_change => sub { service apache2 => "restart"; };

};

Page 12: Rex Linuxtag 2012

26.07.12

Wie funktioniert (R)?ex

set user => "root";set group => www => "www[01..15]";

task "prepare", group => "www", sub {

create_user "appuser",home => "/var/www/app",uid => 1500,groups => [qw/appuser/];

update_package_db;install "apache2";

file "/etc/apache2/apache2.conf",content => template("templates/apache2.conf",

keepalive => "On", ),on_change => sub { service apache2 => "restart"; };

};

Page 13: Rex Linuxtag 2012

26.07.12

Wie funktioniert (R)?ex

set user => "root";set group => www => "www[01..15]";

task "prepare", group => "www", sub {

create_user "appuser",home => "/var/www/app",uid => 1500,groups => [qw/appuser/];

update_package_db;install "apache2";

file "/etc/apache2/apache2.conf",content => template("templates/apache2.conf",

keepalive => "On", ),on_change => sub { service apache2 => "restart"; };

};

Page 14: Rex Linuxtag 2012

26.07.12

Wie funktioniert (R)?ex

set user => "root";set group => www => "www[01..15]";

task "prepare", group => "www", sub {

create_user "appuser",home => "/var/www/app",uid => 1500,groups => [qw/appuser/];

update_package_db;install "apache2";

file "/etc/apache2/apache2.conf",content => template("templates/apache2.conf",

keepalive => "On", ),on_change => sub { service apache2 => "restart"; };

};

Page 15: Rex Linuxtag 2012

26.07.12

Wie funktioniert (R)?ex

set user => "root";set group => www => "www[01..15]";

task "prepare", group => "www", sub {

create_user "appuser",home => "/var/www/app",uid => 1500,groups => [qw/appuser/];

update_package_db;install "apache2";

file "/etc/apache2/apache2.conf",content => template("templates/apache2.conf",

keepalive => "On", ),on_change => sub { service apache2 => "restart"; };

};

Page 16: Rex Linuxtag 2012

26.07.12

Wie funktioniert (R)?ex

set user => "root";set group => www => "www[01..15]";

task "prepare", group => "www", sub {

create_user "appuser",home => "/var/www/app",uid => 1500,groups => [qw/appuser/];

update_package_db;install "apache2";

file "/etc/apache2/apache2.conf",content => template("templates/apache2.conf",

keepalive => "On", ),on_change => sub { service apache2 => "restart"; };

};

Page 17: Rex Linuxtag 2012

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.

(R)?exVereinfachtes Deployment mit Rex

Welche Funktionen bietet (R)?ex

Page 18: Rex Linuxtag 2012

26.07.12

Welche Funktionen bietet (R)?ex

Filesystem Operationen

if( is_file("/etc/motd") ) {rm "/etc/motd";

}

chown "root", "/etc"recursive => 1;

chgrp "root", "/etc",recursive => 1;

chmod 644, "/etc/passwd";

if( !is_dir("/var/www/app") ) {mkdir "/var/www/app",owner => "appuser",mode => 755;

}

Page 19: Rex Linuxtag 2012

26.07.12

Welche Funktionen bietet (R)?ex

Datei Operationen

file "/path/on/the/remote/machine",source => "/path/on/local/machine",owner => "root",group => "root",mode => 400,on_change => sub { say "File was changed."; };

delete_lines_matching "/var/log/auth.log", matching => qr{Failed};

Page 20: Rex Linuxtag 2012

26.07.12

Welche Funktionen bietet (R)?ex

User/Gruppen-Management

create_group „appuser“, {gid => 1500,system => 1,

};

create_user "appuser",uid => 1500,

home => '/var/www/app', comment => 'App-User', expire => '2012-05-23', groups => ['appuser', 'www', '[…]' ], password => 'foobar', system => 1, ssh_key => "ssh-rsa AAAAB3NzaC1yc2EAADABAAABAQCh.."; };

Page 21: Rex Linuxtag 2012

26.07.12

Welche Funktionen bietet (R)?ex

Paket-Management

update_package_db;

install package => ["perl","apache2","tomcat6","vim“,"sudo“,"openjdk-7-jre“

];

remove package => "vim-tiny";

Page 22: Rex Linuxtag 2012

26.07.12

Welche Funktionen bietet (R)?ex

Process/Service-Management

killall "apache2";

service apache2 => "ensure", "started";

service apache2 => "restart";

if( service apache2 => "status" ) {say "Apache2 is running";

}else {

say "Apache2 is not running";}

Page 23: Rex Linuxtag 2012

26.07.12

Welche Funktionen bietet (R)?ex

Inject

template_file "inject.conf";template_search_for "*.properties";

inject "myapp.tar.gz",pre_pack_hook => sub {

run "BUNDLE_PATH=vendor/bundle bundle install";},post_pack_hook => {

say "Post Pack Hook";};

inject "myapp.war";

Page 24: Rex Linuxtag 2012

26.07.12

Welche Funktionen bietet (R)?ex

Deploy

deploy_to "/var/deploy";document_root "/var/www";

deploy "myapp.tar.gz"

context_path "/myapp";

deploy "myapp.war",username => "admin",password => "admin-password",port => 8080,manager_url => "/manager";

Page 25: Rex Linuxtag 2012

26.07.12

Welche Funktionen bietet (R)?ex

Templating – bereits integrierete Variablen

<%= hostname %><%= domain %><%= eth0_ip %><%= eth0_mac %><%= … %>

Templating – eigene Variablen

<%= myvariable1 %>

template("templates/apache2.conf",myvariable1 => "defined",)

Page 26: Rex Linuxtag 2012

26.07.12

Welche Funktionen bietet (R)?ex

● Cron

● Iptables

● Sysctl

● Partitionierung (Parted)

● LVM

● Virtualisierung

● und vieles mehr!

Page 27: Rex Linuxtag 2012

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.

(R)?exVereinfachtes Deployment mit Rex

Was will (R)?ex erreichen

Page 28: Rex Linuxtag 2012

26.07.12

Was will (R)?ex erreichen?

OPS DEV

Page 29: Rex Linuxtag 2012

26.07.12

Was will (R)?ex erreichen?

OPS DEV

Page 30: Rex Linuxtag 2012

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.

(R)?exVereinfachtes Deployment mit Rex

Praktische Beispiele und Deployment einer Entwicklungsplatform mit (R)?ex

Page 31: Rex Linuxtag 2012

26.07.12

Praktische Beispiele und Deployment einer Entwicklungsumgebung mit (R)?ex

● Beispiele aus dem Admin-Alltag

● Beispiel eines Server-Setup

● Bereitstellen einer Entwicklungsumgebung

● App-Deployment mit (R)?ex

Page 32: Rex Linuxtag 2012

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.

(R)?exVereinfachtes Deployment mit Rex

● Mehr Infos unter http://rexify.org

● Für CentOS, Fedora, Debian, Ubuntu, Gentoo, Mageia, OpenSuSE, CPAN

Page 33: Rex Linuxtag 2012

26.07.12

Vielen Dank für Ihre Aufmerksamkeit!

inovex GmbH

PforzheimKarlsruher Straße 71D-75179 Pforzheim

MünchenValentin-Linhof-Straße 2D-81829 München

KölnSchanzenstraße 6-20D-51063 Köln