Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Rex Linuxtag 2012
1. (R)?ex
Vereinfachtes Deployment mit Rex
Vortrag auf dem Linuxtag 2012
Daniel Bäurer
inovex GmbH
Systems Engineer
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
2. (R)?ex
Vereinfachtes 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
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
3. (R)?ex
Vereinfachtes Deployment mit Rex
Was ist (R)?ex
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
4. Was ist (R)?ex
HW Bestellung Einbau OS-Deploy
Setup Server App-Deploy
Ziel: Neue Server sollen so schnell wie möglich einsatzbereit sein!
26.07.12
5. Was ist (R)?ex
Setup Server App-Deploy
Ziel: Neue Server sollen so schnell wie möglich einsatzbereit sein!
26.07.12
6. 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
26.07.12
7. (R)?ex
Vereinfachtes Deployment mit Rex
Wie funktioniert (R)?ex
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
8. Wie funktioniert (R)?ex
● Es gibt ein Rexfile
● Ähnlich wie ein Makefile
● Ein normales Perlscript
● Kann auch als Library in eigenen Perlscripts verwendet werden
26.07.12
9. 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
26.07.12
10. 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"; };
};
26.07.12
11. 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"; };
};
26.07.12
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"; };
};
26.07.12
13. 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"; };
};
26.07.12
14. 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"; };
};
26.07.12
15. 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"; };
};
26.07.12
16. 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"; };
};
26.07.12
17. (R)?ex
Vereinfachtes Deployment mit Rex
Welche Funktionen bietet (R)?ex
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
22. 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";
}
26.07.12
23. 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";
26.07.12
30. (R)?ex
Vereinfachtes Deployment mit Rex
Praktische Beispiele und Deployment einer Entwicklungsplatform mit (R)?ex
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
31. 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
26.07.12
32. (R)?ex
Vereinfachtes Deployment mit Rex
●
Mehr Infos unter http://rexify.org
●
Für CentOS, Fedora, Debian, Ubuntu, Gentoo, Mageia, OpenSuSE, CPAN
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
33. Vielen Dank für Ihre Aufmerksamkeit!
inovex GmbH
Pforzheim München Köln
Karlsruher Straße 71 Valentin-Linhof-Straße 2 Schanzenstraße 6-20
D-75179 Pforzheim D-81829 München D-51063 Köln
26.07.12