presentation: minitest + demo
This commit is contained in:
parent
edd008af90
commit
720d2a23ff
@ -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?
|
||||
|
Loading…
Reference in New Issue
Block a user