Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Materialien zum Buch
13
Einleitung
15
1 Cloud Computing
19
1.1 Welcome to the Cloud
20
1.1.1 Virtualisierung
20
1.1.2 Hypervisoren
21
1.1.3 Rechenzentrum
23
1.1.4 Die »Wolke«
23
1.1.5 Die NIST-»Cloud Computing Definition«
24
1.1.6 Private Cloud
24
1.1.7 Weitere Cloud-Varianten
26
1.1.8 Services
27
1.1.9 Infrastructure-as-a-Service
29
1.2 Public Cloud Computing
31
1.2.1 Digitalisierung
32
1.2.2 Kostenersparnis
32
1.2.3 Kostenkalkulation
33
1.2.4 Elastizität
33
1.2.5 Datenhoheit
36
1.2.6 Bedrohung durch Hacker: Die Cloud-Sicherheit
37
1.2.7 Eigenverantwortung
38
1.2.8 Legaler Zugriff von Dritten
39
1.2.9 Unfreiheit
40
1.2.10 Administration
41
1.3 DevOps
42
1.3.1 Philosophie
43
1.3.2 Automation
44
1.3.3 DevOps im Unternehmen einführen
45
1.3.4 Continous Delivery
46
1.3.5 Commit-Stage
48
1.3.6 Artefakte
50
1.3.7 Maschinenabbilder
51
1.3.8 Akzeptanztests
53
1.3.9 Rollout
53
1.4 Container
54
1.4.1 Softwarecontainer
54
1.4.2 Schattenseiten
57
1.4.3 Modularisierung
58
1.4.4 Orchestrierung
60
1.4.5 Cluster-Manager
61
2 Grundlegende Fertigkeiten und Werkzeuge für Cloud-Engineers
65
2.1 Python
66
2.1.1 Interpreter und ein erstes Programm
68
2.1.2 Mathematik
71
2.1.3 Variablen
72
2.1.4 String
74
2.1.5 Liste
76
2.1.6 Tupel
78
2.1.7 Indizierte Datentypen
79
2.1.8 Dictionary
80
2.1.9 Boolesche Ausdrücke
82
2.1.10 If-Abfrage
84
2.1.11 For-Schleife
85
2.1.12 Funktionen
88
2.1.13 Bibliotheken
90
2.1.14 Stdlib
93
2.1.15 Exceptions
94
2.1.16 open()
96
2.2 Google Go
98
2.2.1 Compiler
100
2.2.2 $GOPATH und $GOBIN
100
2.2.3 Mathematik
103
2.2.4 Variablen
105
2.2.5 String
106
2.2.6 Slice
110
2.2.7 Map
112
2.2.8 If-Abfrage
114
2.2.9 For-Schleife
117
2.2.10 Funktionen
119
2.2.11 Pointer
121
2.2.12 Struct
123
2.2.13 Methoden
125
2.2.14 Interface
126
2.2.15 Pakete
127
2.2.16 os.Open()
130
2.3 Docker
131
2.3.1 Installation
133
2.3.2 Docker Server
136
2.3.3 Container-Images
140
2.3.4 MariaDB-Container
144
2.3.5 Docker Compose
151
2.3.6 Docker Machine
156
2.3.7 Volumes
161
2.4 Kubernetes
166
2.4.1 kubectl
167
2.4.2 Kubernetes auf der GKE
171
2.4.3 Objekte
175
2.4.4 Rollout
180
2.4.5 WordPress auf Kubernetes
184
3 IaaS-Anbieter verwenden
193
3.1 Amazon Elastic Compute Cloud
194
3.1.1 Anmeldung und Usereinrichtung
195
3.1.2 aws-cli
201
3.1.3 Instanzen
210
3.1.4 Elastic Block Store
221
3.1.5 Amazon CloudWatch
232
3.1.6 Autoscaling
240
3.2 Microsoft Azure
247
3.2.1 Anmeldung
248
3.2.2 azure-cli
251
3.2.3 VMs erzeugen
258
3.2.4 VMs verändern
267
3.2.5 Image anpassen
272
3.2.6 Blockspeicher
279
3.3 Google Compute Engine
288
3.3.1 gcloud
290
3.3.2 Initialisieren
291
3.3.3 Instanz bereitstellen
293
3.3.4 SSH-Zugriff
294
3.3.5 Firewall
295
3.3.6 Load-Balancer
296
3.4 DigitalOcean
298
3.4.1 Anmeldung und API-Token
300
3.4.2 doctl
303
3.4.3 Ein Droplet bereitstellen
305
3.5 Hetzner Cloud
308
3.5.1 Anmeldung und API-Token
310
3.5.2 hcloud
312
3.5.3 Server bereitstellen
314
3.6 Multi-Cloud- und Hybrid-Cloud-Computing
317
3.6.1 Multi-Cloud Computing
317
3.6.2 Hybrid Cloud Computing
320
4 Cloud-Infrastruktur automatisiert ausrollen
323
4.1 AWS CloudFormation
324
4.1.1 Ressourcen
328
4.1.2 Template anwenden
335
4.1.3 Ein- und Ausgabe
343
4.2 Azure Resource Manager
350
4.2.1 ARM-Templates
351
4.2.2 Beispielprojekt
358
4.2.3 Anwendung
358
4.3 Terraform
364
4.3.1 Installieren
366
4.3.2 Templates
366
4.3.3 Beispielprojekt
368
4.3.4 Anwendung
378
5 Cloud-Instanzen konfektionieren
381
5.1 Hashicorp Packer
382
5.1.1 Packer installieren
385
5.1.2 Beispielprojekt
386
5.1.3 Template
388
5.1.4 provisioner.bash
391
5.1.5 Anwendung
396
5.2 Cloud-Init
399
5.2.1 Beispielprojekt
400
5.2.2 Anwendung
403
5.2.3 Introspektion
405
5.2.4 Troubleshooting
407
6 Cloud-Instanzen mit Ansible konfigurieren
411
6.1 Ansible installieren
415
6.1.1 Ansible-PPA
415
6.1.2 Nach der Installation
416
6.1.3 Laufzeitumgebung
417
6.2 ansible
418
6.2.1 ping
419
6.2.2 command
421
6.2.3 setup
422
6.3 Konfiguration
423
6.4 Statisches Inventar
425
6.4.1 Gruppen
427
6.4.2 Variablen
427
6.4.3 Gruppen von Gruppen
428
6.5 Module
429
6.5.1 Recherche nach Modulen
429
6.5.2 Module einsetzen
431
6.5.3 copy
435
6.5.4 get_url
437
6.5.5 template
439
6.5.6 lineinfile
442
6.6 Playbook
445
6.6.1 Plays
445
6.6.2 Tasks
446
6.6.3 ansible-playbook
447
6.6.4 Overhead vermeiden
450
6.6.5 gather_facts
451
6.6.6 register
452
6.6.7 with_items
454
6.6.8 creates
456
6.6.9 when
458
6.7 Rollen
461
6.7.1 ansible-galaxy
461
6.7.2 roles/
462
6.7.3 Rollenstruktur
462
6.7.4 Masterplaybook
464
6.7.5 Anwendungsbeispiel
465
6.8 Dynamisches Inventar
472
6.8.1 ansible-inventory
472
6.8.2 hcloud-python
474
6.8.3 inventory.py
476
6.8.4 Inventar anwenden
479
6.9 Cloud-Module
482
6.9.1 Anwendungsbeispiel
483
6.9.2 Cloud-Module als Ansible-Rolle
488
6.10 Kubernetes-Cluster deployen
489
6.10.1 k8s-preconfig
491
6.10.2 k8-master
493
6.10.3 k8s-worker
495
6.10.4 Anwendung
496
7 Cloud-Instanzen testen
499
7.1 Testinfra
501
7.1.1 Installieren
501
7.1.2 Beispielprojekt
502
7.1.3 Tests aufsetzen
505
7.1.4 Anwendung
507
7.1.5 pytest in vollem Umfang nutzen
510
7.2 Terratest
513
7.2.1 Beispielprojekt
514
7.2.2 Anwendung
520
8 Cloud-Monitoring mit Prometheus
523
8.1 Prometheus-Server
526
8.1.1 Einspielen
527
8.1.2 Starten
527
8.1.3 API-Endpunkte
528
8.1.4 Metriken
529
8.2 node_exporter
532
8.2.1 Datenaufkommen
534
8.2.2 Querying
534
8.2.3 Zeitstempel
537
8.3 Service Discovery
538
8.3.1 Konfiguration
539
8.3.2 Anwendung
540
8.3.3 Abweichungen bei Metriknamen
542
8.4 PromQL
544
8.4.1 Qualifizierte Abfrage
544
8.4.2 sum()
547
8.4.3 max()
547
8.4.4 rate()
548
8.4.5 avg()
549
8.4.6 Arithmetik
549
8.5 Alarme
550
8.5.1 up()
552
8.5.2 Einrichtung
552
8.5.3 Aktiver Alarm
554
8.5.4 Prozentualer Ausfall
555
8.5.5 Binäre Gauges
555
9 Cloud-Ressourcen mit Boto3 programmieren
557
9.1 Installation
558
9.2 Klassentypen
559
9.3 Beispielprojekt
560
9.4 Das Skript anwenden
567
Index
569