22
Infrastruktur als Code

German Perl Workshop 2015 - Infrastruktur als Code

Embed Size (px)

Citation preview

Page 1: German Perl Workshop 2015 - Infrastruktur als Code

Infrastruktur als Code

Page 2: German Perl Workshop 2015 - Infrastruktur als Code

Wer bin ich? (Und wenn ja, wieviele?)

● Jan (1x)

● inovex / Systems Engineer (1x)

Page 3: German Perl Workshop 2015 - Infrastruktur als Code

Und wenn sie nicht gestorben sind...

Page 4: German Perl Workshop 2015 - Infrastruktur als Code
Page 5: German Perl Workshop 2015 - Infrastruktur als Code
Page 6: German Perl Workshop 2015 - Infrastruktur als Code
Page 7: German Perl Workshop 2015 - Infrastruktur als Code
Page 8: German Perl Workshop 2015 - Infrastruktur als Code
Page 9: German Perl Workshop 2015 - Infrastruktur als Code

Von Hardware zu Software

Page 10: German Perl Workshop 2015 - Infrastruktur als Code

Das muss schneller gehn!

Page 11: German Perl Workshop 2015 - Infrastruktur als Code

Infrastruktur als Code

Page 12: German Perl Workshop 2015 - Infrastruktur als Code
Page 13: German Perl Workshop 2015 - Infrastruktur als Code

Rex - Remote Execution

● Community Projekt● Agentenlos (ssh, push)● Einfach zu bedienen● Perl als Konfigurationssprache● Alles beginnt in einem Rexfile● Ein Rexfile enthält Authentifizierung,

Servergruppen, Tasks, ...

Page 14: German Perl Workshop 2015 - Infrastruktur als Code

Rex - Remote Execution

● Viele Module/Funktionen○ Dateimanipulation○ Pakete○ Services○ Prozesse○ Inventarisierung○ Partitionierung, LVM○ Virtualisierung, Cloud○ ...

Page 15: German Perl Workshop 2015 - Infrastruktur als Code

use Rex -feature => ["1.0"];

user "root";private_key "keys/root.key";public_key "keys/root.key.pub";

Page 16: German Perl Workshop 2015 - Infrastruktur als Code

use Rex -feature => ["1.0"];

user "admin";private_key "keys/admin.key";public_key "keys/admin.key.pub";

sudo_password "f00b4r";sudo TRUE;

Page 17: German Perl Workshop 2015 - Infrastruktur als Code

use Rex -feature => ["1.0"];

user "root";private_key "keys/root.key";public_key "keys/root.key.pub";

group frontends => "fe-[01..10].int.lan", "fe-preview.int.lan";

group backends => "be-[01..10].int.lan";

Page 18: German Perl Workshop 2015 - Infrastruktur als Code

task "setup", group => ["frontends", "backends"], sub { pkg ["httpd", "perl-Mojolicious"], ensure => "present";

file "/etc/httpd/httpd.conf", content => template("httpd.conf.tpl"), owner => "root", group => "root", mode => 644, on_change => sub { service httpd => "restart"; };

service "httpd", ensure => "started"; };

Page 19: German Perl Workshop 2015 - Infrastruktur als Code

$ rex setup

Page 20: German Perl Workshop 2015 - Infrastruktur als Code

task "patch", sub { do_task [ qw/disable_in_lb patch_backends enable_in_lb/ ]; };

task "patch_backends", group => ["backends"], sub { update_package_db; update_system; };

Page 21: German Perl Workshop 2015 - Infrastruktur als Code

$ rex patch

Page 22: German Perl Workshop 2015 - Infrastruktur als Code

irc: irc.freenode.net #rexWebsite: http://www.rexops.org/Github: https://github.com/RexOpsTwitter: @RexOps

Danke