10. Nodes
‣ Auf Nodes wird der chef-client
ausgeführt.
‣ Ein Node hat eine runlist.
@railshoster
11. Nodes
‣ Auf Nodes wird der chef-client
ausgeführt.
‣ Ein Node hat eine runlist.
‣ Ein Node hat Attributes.
@railshoster
12. Nodes
‣ Auf Nodes wird der chef-client
ausgeführt.
‣ Ein Node hat eine runlist.
‣ Ein Node hat Attributes.
‣ Verschachtelte key/value Paare.
@railshoster
13. Nodes
‣ Auf Nodes wird der chef-client
ausgeführt.
‣ Ein Node hat eine runlist.
‣ Ein Node hat Attributes.
‣ Verschachtelte key/value Paare.
‣ z.B. Versionsnummern, Pfade, ...
@railshoster
17. Die Runlist
‣ Zählt auszuführende Rezepte (Recipes)
auf.
‣ Achtung: die Reihenfolge ist wichtig.
@railshoster
18. Die Runlist
‣ Zählt auszuführende Rezepte (Recipes)
auf.
‣ Achtung: die Reihenfolge ist wichtig.
‣ Rezeptabhängigkeiten werden
automatisch aufgelöst.
@railshoster
30. Roles
‣ Rollen haben eine Node-artige Struktur.
‣ Haben eine Runlist.
@railshoster
31. Roles
‣ Rollen haben eine Node-artige Struktur.
‣ Haben eine Runlist.
‣ Haben Attribute.
@railshoster
32. Roles
‣ Rollen haben eine Node-artige Struktur.
‣ Haben eine Runlist.
‣ Haben Attribute.
‣ Jede Rolle wird in eine Liste von
auszuführenden Rezepten aufgelöst.
@railshoster
46. Cookbooks
‣ Syntaktisch gesehen ist ein Cookbook
eine Sammlung von Dateien und
Verzeichnissen.
‣ Für gewöhnlichen beschreibt ein
Cookbook einen einzelnen Dienst.
@railshoster
47. Cookbooks
‣ Syntaktisch gesehen ist ein Cookbook
eine Sammlung von Dateien und
Verzeichnissen.
‣ Für gewöhnlichen beschreibt ein
Cookbook einen einzelnen Dienst.
‣ Ruby on Rails Application
@railshoster
48. Cookbooks
‣ Syntaktisch gesehen ist ein Cookbook
eine Sammlung von Dateien und
Verzeichnissen.
‣ Für gewöhnlichen beschreibt ein
Cookbook einen einzelnen Dienst.
‣ Ruby on Rails Application
‣ MySQL Service, Redis Service
@railshoster
49. Cookbooks
‣ Syntaktisch gesehen ist ein Cookbook
eine Sammlung von Dateien und
Verzeichnissen.
‣ Für gewöhnlichen beschreibt ein
Cookbook einen einzelnen Dienst.
‣ Ruby on Rails Application
‣ MySQL Service, Redis Service
‣ ... @railshoster
54. Recipes
‣ Ein Rezept beschreibt eine
Ressource (Resource).
‣ In den Rezepten befindet sich der
Großteil des Verhaltens eines
Cookbooks.
@railshoster
55. Recipes
‣ Ein Rezept beschreibt eine
Ressource (Resource).
‣ In den Rezepten befindet sich der
Großteil des Verhaltens eines
Cookbooks.
‣ Ein Rezept kann beliebigen Ruby
Code enthalten.
@railshoster
68. Resources
‣ Repräsentier die zu konfigurierende
Entität.
‣ Abstrahiert vom eingesetzten
Betriebsystem.
@railshoster
69. Resources
‣ Repräsentier die zu konfigurierende
Entität.
‣ Abstrahiert vom eingesetzten
Betriebsystem.
‣ Werden in Recipes und Definitions
deklariert.
@railshoster
70. Resources
‣ Repräsentier die zu konfigurierende
Entität.
‣ Abstrahiert vom eingesetzten
Betriebsystem.
‣ Werden in Recipes und Definitions
deklariert.
‣ Sind die elementaren Einheiten in Chef.
@railshoster
82. Providers
‣ Sichern die Idempotenz der Chef-
Aktionen ab.
‣ Zweimaliges Aufrufen einer Aktion
> Einmaliges Ausführen
@railshoster
83. Providers
‣ Sichern die Idempotenz der Chef-
Aktionen ab.
‣ Zweimaliges Aufrufen einer Aktion
> Einmaliges Ausführen
‣ 2 x Installiere Paket „git-core“
> Das Paket wird nur 1x installiert
@railshoster
85. Providers
‣ Ein Node wählt einen Provider für
eine bestimmte Ressource per Default.
@railshoster
86. Providers
‣ Ein Node wählt einen Provider für
eine bestimmte Ressource per Default.
‣ Eine Resource kann ihren Provider aber
auch explizit festlegen.
@railshoster
87. Meistens macht man sich keine
Gedanken über Provider.
Sie sind einfach da.
91. Data Bags
‣ Sind nicht direkt mit Node oder Role
Attributen verbunden.
@railshoster
92. Data Bags
‣ Sind nicht direkt mit Node oder Role
Attributen verbunden.
‣ Data Bags werden auf dem Chef-
Server gespeichert. Bei Chef-Solo auf dem Node.
@railshoster
93. Data Bags
‣ Sind nicht direkt mit Node oder Role
Attributen verbunden.
‣ Data Bags werden auf dem Chef-
Server gespeichert. Bei Chef-Solo auf dem Node.
‣ Data Bags werden von der Chef-Suche
indiziert.
@railshoster
95. Data Bags
‣ Rezepte können auf Daten aus den Data
Bags zugreifen.
@railshoster
96. Data Bags
‣ Rezepte können auf Daten aus den Data
Bags zugreifen.
‣ Rezepte können über die Chef-Suche
Data Bags durchsuchen
->Service Discovery in der
Installationsautomatisierung.
@railshoster
105. Encrypted Data Bags
‣ Wenn Chef kompromitiert würde
> Bleibt so der Schaden gering.
@railshoster
106. Encrypted Data Bags
‣ Wenn Chef kompromitiert würde
> Bleibt so der Schaden gering.
‣ Isolieren unterschiedlicher „Groups of
Trust“ durch getrennte encr. Data Bags.
z.B. in dem unterschiedliche Dienste unterschiedlicher Teams
unterschiedliche Data Bags erhalten.
@railshoster
108. Encrypted Data Bags
‣ Data Bag keys werden. unverschlüsselt. So
kann nach ihnen gesucht
bleiben
@railshoster
109. Encrypted Data Bags
‣ Data Bag keys werden. unverschlüsselt. So
kann nach ihnen gesucht
bleiben
‣ Values werden verschlüsselt und sind somit sicher.
@railshoster
110. Encrypted Data Bags
‣ Data Bag keys werden. unverschlüsselt. So
kann nach ihnen gesucht
bleiben
‣ Values werden verschlüsselt und sind somit sicher.
‣ Shared Schlüssel. Eine Kopie liegt aufFür jedes encrypted Data Bag
gibt es einen
Key Encryption.
dem Server, eine auf dem
Rechner, der die Daten entschlüsseln möchte.
@railshoster
111. Encrypted Data Bags
‣ Data Bag keys werden. unverschlüsselt. So
kann nach ihnen gesucht
bleiben
‣ Values werden verschlüsselt und sind somit sicher.
‣ Shared Schlüssel. Eine Kopie liegt aufFür jedes encrypted Data Bag
gibt es einen
Key Encryption.
dem Server, eine auf dem
Rechner, der die Daten entschlüsseln möchte.
‣ Der shared Key wird als Datei auf die
Nodes gelegt. Die Entschlüsselung erfolgt dann transparent
durch Chef.
@railshoster
113. Encrypted Data Bags
‣ Rezepte können also transparent auf
verschlüsselte Data Bags zugreifen. Sie
merken nichts von der Verschlüsselung.
@railshoster
114. Encrypted Data Bags
‣ Rezepte können also transparent auf
verschlüsselte Data Bags zugreifen. Sie
merken nichts von der Verschlüsselung.
‣ Knife kan verschlüsselte Data Bags
verwenden, in dem die --secret und --secret-file Optionen
angegeben werden.
@railshoster
118. Chef Suche
‣ Nur in Verbindung mit Chef-Server.
‣ Nicht im Kontext von Chef-Solo.
@railshoster
119. Chef Suche
‣ Nur in Verbindung mit Chef-Server.
‣ Nicht im Kontext von Chef-Solo.
‣ Liefert eine Volltextsuche.
@railshoster
120. Chef Suche
‣ Nur in Verbindung mit Chef-Server.
‣ Nicht im Kontext von Chef-Solo.
‣ Liefert eine Volltextsuche.
‣ Basiert auf Apache Solr.
@railshoster
130. Chef Search
‣ Abfragen werden durch den Chef-Server
erzeugt.
‣ Erlaubt den Abruf von Informationen
über sämtliche Knoten sowie die restliche
Inftrastruktur.
@railshoster
133. Chef Search
‣ Methoden zur Verwendung der Chef-
Suche
‣ Verwendung des search Kommandos in
Rezepten.
@railshoster
134. Chef Search
‣ Methoden zur Verwendung der Chef-
Suche
‣ Verwendung des search Kommandos in
Rezepten.
‣ Verwendung des knive search
Kommandos an der Kommandozeile.
@railshoster
136. Chef Suche
‣ Sehr wichtig für die Erstellung von
Rezepten.
@railshoster
137. Chef Suche
‣ Sehr wichtig für die Erstellung von
Rezepten.
‣ App Server Rezept kann search
Verwenden, um die zugehörige
Datenbank zu finden.
@railshoster
150. Konvergenz
‣ Chef Run = Konvergenz
‣ Das System konvergiert mit jedem Lauf
und jeder Aktion hin zum gewünschten
Systemzustand.
@railshoster
151. Konvergenz
‣ Chef Run = Konvergenz
‣ Das System konvergiert mit jedem Lauf
und jeder Aktion hin zum gewünschten
Systemzustand.
‣ Ziel ist das ein einzelner Chef-Run das
System in seinen Zielzustand überführt!
Das ist das Designziel bei der Erstellung von Cookbooks und Runlists.
@railshoster
153. Konvergenz
‣ Chef erneut zu starten, nach dem Chef-
Lauf fehlgeshclagen ist, sollte das System
näher zu seinem Zielzustand bringen
> Konvergenz
@railshoster
156. Der Run Prozess
1. Erstelle, registere, authentifizere den
Node
@railshoster
157. Der Run Prozess
1. Erstelle, registere, authentifizere den
Node
2. Synchronisiere die Cookbooks
@railshoster
158. Der Run Prozess
1. Erstelle, registere, authentifizere den
Node
2. Synchronisiere die Cookbooks
3. Kompiliere die Resource Collection
@railshoster
159. Der Run Prozess
1. Erstelle, registere, authentifizere den
Node
2. Synchronisiere die Cookbooks
3. Kompiliere die Resource Collection
4. Konfigure die Nodes
@railshoster
160. Der Run Prozess
1. Erstelle, registere, authentifizere den
Node
2. Synchronisiere die Cookbooks
3. Kompiliere die Resource Collection
4. Konfigure die Nodes
5. Führe notification Handler aus
@railshoster
165. Build the Node
‣ Zuerst erzeugt Chef einen Node
‣ Ohai discovery der OS Details.
@railshoster
166. Build the Node
‣ Zuerst erzeugt Chef einen Node
‣ Ohai discovery der OS Details.
‣ Hole Infos über den Node vom Chef-Server (!
Solo).
@railshoster
167. Build the Node
‣ Zuerst erzeugt Chef einen Node
‣ Ohai discovery der OS Details.
‣ Hole Infos über den Node vom Chef-Server (!
Solo).
‣ Füge JSON Attributes oder Recipes
hinzu
@railshoster
168. Build the Node
‣ Zuerst erzeugt Chef einen Node
‣ Ohai discovery der OS Details.
‣ Hole Infos über den Node vom Chef-Server (!
Solo).
‣ Füge JSON Attributes oder Recipes
hinzu
‣ Füge Ohai Attributes hinzu
@railshoster
172. Register @ Chef-Server
‣ Überprüfe die private key Datei in /etc/chef/
client.pem
‣ Gehe von einem neuen Knoten aus,
falls nicht.
@railshoster
173. Register @ Chef-Server
‣ Überprüfe die private key Datei in /etc/chef/
client.pem
‣ Gehe von einem neuen Knoten aus,
falls nicht.
‣ Verwende die chef-validator-client
identity um einen neuen Knoten zu
registrieren.
> Generiert eine client.pem
@railshoster
174. Register @ Chef-Server
‣ Überprüfe die private key Datei in /etc/chef/
client.pem
‣ Gehe von einem neuen Knoten aus,
falls nicht.
‣ Verwende die chef-validator-client
identity um einen neuen Knoten zu
registrieren.
> Generiert eine client.pem
‣ Register @ Chef-Server using client.pem
@railshoster
197. Configure Node
‣ Bereit zur Systemkonfiguration
‣ Konvergenz Pseudo Code:
resource_collection.map do |resource|
find_provider(resource)
end
@railshoster
198. Configure Node
‣ Bereit zur Systemkonfiguration
‣ Konvergenz Pseudo Code:
resource_collection.map do |resource|
find_provider(resource)
end
‣ Speichere den Node state auf die Platte oder auf dem
chef-server (=> index)
@railshoster
You can search through data bags similar to node attributes.\n
You can search through data bags similar to node attributes.\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Demonstration: invoke ohoi command.\n
Demonstration: invoke ohoi command.\n
Demonstration: invoke ohoi command.\n
Demonstration: invoke ohoi command.\n
Demonstration: invoke ohoi command.\n
\n
chef-validator-client identity = special purpose idendity to register new nodes\n
chef-validator-client identity = special purpose idendity to register new nodes\n
chef-validator-client identity = special purpose idendity to register new nodes\n
chef-validator-client identity = special purpose idendity to register new nodes\n
\n
\n
\n
\n
\n
\n
\n
\n
Libraries = language extensions, ruby classes\nAttributes > Updates node attributes and Recipes\nDefinition > must be loaded before Recipes because they create pseude-resources\n
Libraries = language extensions, ruby classes\nAttributes > Updates node attributes and Recipes\nDefinition > must be loaded before Recipes because they create pseude-resources\n
Libraries = language extensions, ruby classes\nAttributes > Updates node attributes and Recipes\nDefinition > must be loaded before Recipes because they create pseude-resources\n
Libraries = language extensions, ruby classes\nAttributes > Updates node attributes and Recipes\nDefinition > must be loaded before Recipes because they create pseude-resources\n
Recipes will be evaluted. Take Resources > Resource Collection . No action execution.\nRessource Collection = Array of evaluated Resources\nRuby Block Resource = Execute Ruby Code with Resources, It‘s p\n
Recipes will be evaluted. Take Resources > Resource Collection . No action execution.\nRessource Collection = Array of evaluated Resources\nRuby Block Resource = Execute Ruby Code with Resources, It‘s p\n
Recipes will be evaluted. Take Resources > Resource Collection . No action execution.\nRessource Collection = Array of evaluated Resources\nRuby Block Resource = Execute Ruby Code with Resources, It‘s p\n
Recipes will be evaluted. Take Resources > Resource Collection . No action execution.\nRessource Collection = Array of evaluated Resources\nRuby Block Resource = Execute Ruby Code with Resources, It‘s p\n