42

Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective
Page 2: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

© 2011 Cassini Consulting GmbH

Andreas Schmidt

Parallelisierte Administration mit

Marionette Collective

Page 3: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

3

Andreas Schmidt, 37 Jahre

Cassini Consulting

Systems Management-Themen:

IT-Security

System- und Netzwerkarchitektur

Konfigurations- und Deploymentmanagement

Page 4: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

4

E P

Infrastructure

Development

Page 5: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

What‘s on for today?

Herausforderungen beim Aufbau und Betrieb

größerer Umgebungen

Was ist Marionette Collective?

Wofür kann man es einsetzen?

Wieso ist Marionette Collective zur

Administration hilfreich?

5

Page 6: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Auswirkungen von Umgebungsgröße

und -komplexität

6

wenige viele

>100

wenige

viele

>50

Anzahl zu verwaltender Hosts

Anzahl Komponenten

„One-Off“

Komplexe

Konfigurationen

auf wenigen

Hosts

Einfache Konfigurationen,

aber auf vielen Hosts

Komplexe Umgebung

Page 7: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

7

wenige viele

>100

wenige

viele

>50

Anzahl zu verwaltender Hosts

Anzahl Komponenten

„One-Off“

Komplexe

Konfigurationen

auf wenigen

Hosts

Einfache Konfigurationen,

aber auf vielen Hosts

Komplexe Umgebung

Page 8: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

8

„ssh in a for loop is not a solution- Luke Kanies

Pro Puppet (APress): Page xvi

Page 9: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Verbindungsaufbau

9

Page 10: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Adressierung

durch

Hostnamen

10

Page 11: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Hang zu One-Linern

11

Page 12: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Give me an API or give me death

12 http://theagileadmin.com/2010/07/22/give-me-an-api-or-give-me-death/

„ “

Page 13: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Real Life

System Administration

13

Page 14: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Aktiviere ein Content-Update

auf 200 Servern

- gleichzeitig

14

Page 15: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Räume das Cache-Verzeichnis

/tmp/cx0 auf

- aber nur auf CentOS-Nodes

mit einer IP-Adresse

in der DMZ

15

Page 16: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Starte alle Tomcats durch

- auf denen die Applikation

iWTF deployed ist.

(Zuordnung dynamisch)

16

Page 17: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

17

Wie erreiche ich eine größere Anzahl Hosts

möglichst gleichzeitig?

Wie kann ich Kommandos sicher

gestalten und dokumentieren?

Wie finde ich heraus, welche Hosts für

meine Abfrage relevant sind?

Page 18: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

18

Wie erreiche ich eine größere Anzahl Hosts

möglichst gleichzeitig?

Wie kann ich Kommandos sicher

gestalten und dokumentieren?

Wie finde ich heraus, welche Hosts für

meine Abfrage relevant sind?

Page 19: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Aktiviere ein Content-Update auf 200

Servern - gleichzeitig

19

$ HOSTS=`cat ./contenthosts.txt`

$ for h in $HOSTS; do ssh $h "curl -d \"ctx_act_id=4711\"

http://127.0.0.1:7676/activate_content&& echo OK on $h"

done;

$ HOSTS=`cat ./contenthosts.txt`

$ for h in $HOSTS; do ssh $h "curl -d \"ctx_act_id=4711\"

http://127.0.0.1:7676/activate_content&& echo OK on $h"

done;

����=307 sec.

Page 20: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Aktiviere ein Content-Update auf 200

Servern - gleichzeitig

20

$ mco rpc --agent appcontent --action activate \

--arg contentid=4711 \

--discovery-timeout=5 --timeout=3 \

–T produktion

$ mco rpc --agent appcontent --action activate \

--arg contentid=4711 \

--discovery-timeout=5 --timeout=3 \

–T produktion

����=3,1 sec.

Page 21: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Marionette Collective

„Server Orchestration Framework“

„Programmatic execution of system administration

actions on clusters of servers“

Agent-basiert, ruby (1.8.5+)

Puppet Labs

Apache 2 License

Broadcast Paradigm

Publish-Subscribe Middleware

(z.B. ActiveMQ oder RabbitMQ)

21

Page 22: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Architektur von Marionette Collective

22

Client

Node

Node

Node

Node

Node

Node

Node

Node

Node

Node

Node

Node

Node

Node

Node

Messaging Middleware

Client

CollectiveSubcollective

Page 23: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

23

Zentrale Metadaten

Hostlisten oder LDAP

Vergessene Server

Missverständnisse & Kommunikationsfehler

Verteilte Metadaten

Der Host erhält die Identität durch das

was er ist und was er enthält.

Immer aktuell

Page 24: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

24

Ich facter, also bin ich

[…]

[…]

Page 25: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Adressierung der Zielhosts über Facts

25

Node

Node

Node

Node

Node

Node

Node

Node

Node

Node

Node

Node

Node

Node

Node

--with-fact ipaddress_eth1=~^192.168.10.[0-9]+$

--with-class mytomcat

Page 26: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Messaging MiddlewareClient

Node

Messaging Service

mcollectived server

Facts

mcollective

facter

Komponenten eines Collectives

Ich

Zielhost

Daten-

dreh-

scheibe

26

Page 27: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Messaging MiddlewareClient

Node

Messaging Service

Command

Topic

Reply Topic

mcollectived server

AgentFacts

mcollective

facter

publish

subscribe

publish

subscribe

Kommunikation zwischen Client und Node

1

23

4

5

6

27

Page 28: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Beispiel: Ping

28

$ mco ping –T test

web01a time=128.38 msapp01b time=131.07 msweb01b time=134.14 msapp02a time=147.42 msapp02b time=152.98 msweb01c time=159.73 ms[...]

---- ping statistics ----24 replies max: 549.12 min: 128.38 avg: 315.18

$ mco ping –T test

web01a time=128.38 msapp01b time=131.07 msweb01b time=134.14 msapp02a time=147.42 msapp02b time=152.98 msweb01c time=159.73 ms[...]

---- ping statistics ----24 replies max: 549.12 min: 128.38 avg: 315.18

Collective

Page 29: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Beispiel: Ping

29

$ mco ping –T test –-with-fact hostname=~web

web01a time=133.90 msweb01b time=149.21 msweb01c time=163.08 ms

---- ping statistics ----3 replies max: 163.08 min: 133.90 avg: 148.73

$ mco ping –T test –-with-fact hostname=~web

web01a time=133.90 msweb01b time=149.21 msweb01c time=163.08 ms

---- ping statistics ----3 replies max: 163.08 min: 133.90 avg: 148.73

Fact

Page 30: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Agent

=

Data Description Language (DDL)

+

Agent Code

30

Page 31: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Beispiel: NRPE-Agent // DDL

31

action "runcommand", :description => "Run a NRPE command" doinput :command,

:prompt => "Command",:description => "NRPE command to run",:type => :string,:validation => '^[a-zA-Z0-9_-]+$',:optional => false,:maxlength => 50

output :output,:description => "Output from the Nagios plugin",:display_as => "Output"

[...]

action "runcommand", :description => "Run a NRPE command" doinput :command,

:prompt => "Command",:description => "NRPE command to run",:type => :string,:validation => '^[a-zA-Z0-9_-]+$',:optional => false,:maxlength => 50

output :output,:description => "Output from the Nagios plugin",:display_as => "Output"

[...]

Validierung

selbstbeschreibend

https://github.com/puppetlabs/mcollective-plugins/blob/777597f9904e4a8e744d7735415ec517b7a5d5e7/agent/nrpe/agent/nrpe.ddl

Page 32: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Beispiel: NRPE-Agent // Agent Code

32

module MCollectivemodule Agentclass Nrpe<RPC::Agentaction "runcommand" dovalidate :command, :shellsafe

command = plugin_for_command(request[:command])

[...]reply[:exitcode] = run(command[:cmd],

:stdout => :output, :chomp => true)

case reply[:exitcode]when 0reply.statusmsg = "OK"

[...]when 2reply.fail "CRITICAL"

[...]elsereply.fail "UNKNOWN"

end[...]

module MCollectivemodule Agentclass Nrpe<RPC::Agentaction "runcommand" dovalidate :command, :shellsafe

command = plugin_for_command(request[:command])

[...]reply[:exitcode] = run(command[:cmd],

:stdout => :output, :chomp => true)

case reply[:exitcode]when 0reply.statusmsg = "OK"

[...]when 2reply.fail "CRITICAL"

[...]elsereply.fail "UNKNOWN"

end[...]

https://github.com/puppetlabs/mcollective-plugins/blob/777597f9904e4a8e744d7735415ec517b7a5d5e7/agent/nrpe/agent/nrpe.rb

Page 33: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Räume das Cache-Verzeichnis /tmp/cx0 auf -

aber nur auf CentOS- Nodes mit einer IP-Adresse

in der DMZ

33

action “cleanup", :description => “clean up cache" do

input :cachepart,:prompt => “Cache Part",:description => “What part of cache to clean",:type => :string,:validation => '^[a-zA-Z\-_\d]+$',:optional => false,:maxlength => 30

[...]

$ mco rpc --agent cachemgr --action cleanup \--arg cachepart=cx0 \–T produktion \--with-fact operatingsystem=CentOS \--with-fact ipaddress=~192.168.10

action “cleanup", :description => “clean up cache" do

input :cachepart,:prompt => “Cache Part",:description => “What part of cache to clean",:type => :string,:validation => '^[a-zA-Z\-_\d]+$',:optional => false,:maxlength => 30

[...]

$ mco rpc --agent cachemgr --action cleanup \--arg cachepart=cx0 \–T produktion \--with-fact operatingsystem=CentOS \--with-fact ipaddress=~192.168.10

Page 34: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Ablauf Request / Response

34

Sende Request

an Collective

Prüfen Kriterien

(Facts, Classes, ..)

Suche Agent,

prüfen DDL

Agent

ausführen

Sende Fehler

an Client

Kriterien passen

Kriterien passen

nicht

Sende Ergebnis

an Client

Client Node

Agent/Action nicht

gefunden, DDL-Fehler

ok

Page 35: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Starte alle Tomcats durch

- auf denen die Applikation iWTF deployed ist.

35

Facter.add(„tomcat_app_iwtf") dosetcode doFile.exists? „/usr/libexec/tomcat/webapps/iwtf.war“

endend

$ mco rpc --agent service --action restart \--arg service=tomcat \–T produktion –v \--with-fact tomcat_app_iwtf=true

Facter.add(„tomcat_app_iwtf") dosetcode doFile.exists? „/usr/libexec/tomcat/webapps/iwtf.war“

endend

$ mco rpc --agent service --action restart \--arg service=tomcat \–T produktion –v \--with-fact tomcat_app_iwtf=true

Custom Fact

Page 36: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Wobei hilft mir

MCollective?

36

Page 37: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Ein API ist

der Kommandozeile

überlegen

37

Page 38: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Dashboards und GUIs

38

Page 39: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Dokumentation

Qualität

Wiederverwendbarkeit

Vereinfachung

39

Page 40: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Abstraktion

Rechte- und Rollentrennung

(z.B. 2nd / 3rd level)

40

Page 41: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Parallelität

Geschwindigkeit

Skalierbarkeit

41

Page 42: Parallelisierte Administration mit Marionette Collective€¦ · Parallelisierte Administration mit Marionette Collective. 3 Andreas Schmidt, 37 Jahre ... Wieso ist Marionette Collective

Cassini Consulting GmbH

Technology Guidance

Andreas Schmidt

twitter @aschmidt75

[email protected]

Halskestraße 46 T +49 (0)21 02 94 34 737

40880 Ratingen F +49 (0)21 02 94 34 738

Deutschland visit www.cassini.de

Q&A