diff --git a/presentation/presentation.md b/presentation/presentation.md
index 86a36e7..047d674 100644
--- a/presentation/presentation.md
+++ b/presentation/presentation.md
@@ -9,15 +9,17 @@ von Jörg Thalheim, (Gruppe 4, Matrikel 3749175)
Dresden, 22 Januar #TODO aktualisieren
+
## Inhaltsübersicht
- Was ist Konfigurationsmanagement
- Was ist Chef/Puppet
- Einführung in Chef
-- Testing
+- Tests
- Demo
+
## Was ist Konfigurationsmanagement?
- Konfigurationsmanagement
@@ -44,6 +46,7 @@ Note:
eingehen.
+
## Was ist Chef/Puppet?
@@ -113,9 +116,11 @@ Note:
Support anbieten und Hosting anbieten
+
## Einführung in Chef
+
### Chef-Einführung: Grundbegriffe
- Node, z.B.: node100.tu-dresden.de
- Role, z.B.: headnode, ldap
@@ -146,6 +151,7 @@ Note:
- der Dienst slurmctld, welcher gestartet werden soll.
+
### Chef-Einführung: Aufbau eines Cookbook
```bash
@@ -197,6 +203,7 @@ Note:
vergleichbar mit erzeugen von Webseiten, gleich ein Beispiel dazu
+
### Chef-Einführung: Code-Beispiel
```ruby
@@ -251,15 +258,18 @@ Note:
- Verzweigungen und Schleifen möglich
-## Testing
-```
+## Tests: Chef Spec
+```ruby
+# spec/cookbooks/ntp_spec.rb
require_relative '../spec_helper'
describe 'ntp::default' do
let(:chef_run) do
ChefSpec::Runner.new do |node|
- node.set["ntp"]["subnets"] = ["::1", "127.0.0.1", "172.28.128.0 mask 255.255.255.0 nomodify notrap nopeer"]
+ subnets = ["::1", "127.0.0.1",
+ "172.28.128.0 mask 255.255.255.0 nomodify notrap nopeer"]
+ node.set["ntp"]["subnets"] = subnets
end.converge(described_recipe)
end
@@ -274,5 +284,54 @@ Note:
- Infrastruktur: schwierig zu testen, viele externe Abhängigkeiten, langsam
- Ruby: dynamische Programmiersprache -> Tippfehler, keine Compilerwarnung beim
Refactoring
+- Chef: 2 Phasen der Ausführung: Converging und eigentliche Ausführungsphase
+- Converging: Einlesen aller Resourcen -> Abhängigkeitsbaum
+- Chefspec: Nur Convergingphase
+ -> Vorteil: sehr schnell (1s), keine Abhängigkeiten beim Testen außer Chef
+ -> Nachteil: es wird nichts ausgeführt
+ - gut für schnelle Validierung, Testen vom Zusammenspiel verschiedener
+ Module, einfache Logik testen, Tippfehler
+- chef\_run: Attribute des Nodes
+- it-block: Eigentliche Assertions
+
+
+
+## Tests: Minitest Chef Handler
+
+```ruby
+# ntp/files/default/test/default_test.rb
+require 'minitest/spec'
+
+describe_recipe 'ntp::default' do
+ it "starts the ntp daemon" do
+ assert_sh("service ntp status")
+ end
+ it "should sync the time" do
+ assert_sh("ntpq -p")
+ end
+end
+```
+
+Note:
+- Minitest: werden nach jedem Deployment gestartet
+-> Integrationstests
+- Ähnliche Healtschecks wie bei Monitoringsystemen oder unserem Test während des Praktikum
+-> Benachrichtung via Chefhandler möglich z.B. per Email, Jabber, ...
+
+
## Demo
+
+Note:
+- Abschlussaufgabe: Einrichten von 2 beliebigen Netzwerksdiensten wie im Praktikum
+- In meinen Fall: NTP, Dns mit Bind, DHCP
+- Vagrant: Starten einer Headnode: mehre Computenodes bekommen über das interne
+ Netzwerk per DHCP eine IP, nutzen das DNS und NTP des Headnode, Headnode als
+ Router
+Ablauf:
+- Headnode: Schon provisioniert
+- 1. Computenode: provisioniert
+- 2. Computenode: neu provisionieren
+- Headnode verkonfigurieren -> erneutes Provisioning
+
+- Fragen?