presentation: minitest + demo

This commit is contained in:
Jörg Thalheim 2014-02-18 20:10:16 +01:00
parent edd008af90
commit 720d2a23ff
1 changed files with 63 additions and 4 deletions

View File

@ -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?
<table class="reveal">
@ -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?