SlideShare uma empresa Scribd logo
1 de 203
Enterprise Hosting
    Workshop
   Einführung in Opscode Chef




               Julian Fischer
        fischer@enterprise-rails.de
      http://www.enterprise-rails.de
Chef
Chef
Installationsautomatisierung
Chef
Architektur
Chef Basics
Chef Basics
Begriffe und Konzepte
Begriffe und Konzepte
        Nodes
Nodes




        @railshoster
Nodes


‣ Auf Nodes wird der chef-client
  ausgeführt.




                  @railshoster
Nodes


‣ Auf Nodes wird der chef-client
  ausgeführt.

‣ Ein Node hat eine runlist.




                  @railshoster
Nodes


‣ Auf Nodes wird der chef-client
  ausgeführt.

‣ Ein Node hat eine runlist.
‣ Ein Node hat Attributes.




                  @railshoster
Nodes


‣ Auf Nodes wird der chef-client
  ausgeführt.

‣ Ein Node hat eine runlist.
‣ Ein Node hat Attributes.
 ‣ Verschachtelte key/value Paare.


                  @railshoster
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
Begriffe und Konzepte
      Die Runlist
Die Runlist




              @railshoster
Die Runlist


‣ Zählt auszuführende Rezepte (Recipes)
 auf.




                @railshoster
Die Runlist


‣ Zählt auszuführende Rezepte (Recipes)
 auf.

 ‣ Achtung: die Reihenfolge ist wichtig.




                  @railshoster
Die Runlist


‣ Zählt auszuführende Rezepte (Recipes)
 auf.

 ‣ Achtung: die Reihenfolge ist wichtig.
 ‣ Rezeptabhängigkeiten werden
   automatisch aufgelöst.




                  @railshoster
Die Runlist




              @railshoster
Die Runlist


‣ Eine Runlist kann Rollen (Roles)
 enthalten.




                 @railshoster
Die Runlist


‣ Eine Runlist kann Rollen (Roles)
  enthalten.

‣ Rollen werden zu einer Liste von
  Rezepten expandiert.




                  @railshoster
Begriffe und Konzepte
        Roles
Roles




        @railshoster
Roles


‣ Rollen werden verwendet, um
 gleichartige Nodes zu verwalten.




                @railshoster
Roles


‣ Rollen werden verwendet, um
 gleichartige Nodes zu verwalten.

 ‣ App Server




                @railshoster
Roles


‣ Rollen werden verwendet, um
 gleichartige Nodes zu verwalten.

 ‣ App Server
 ‣ DB Slave Server




                @railshoster
Roles


‣ Rollen werden verwendet, um
 gleichartige Nodes zu verwalten.

 ‣ App Server
 ‣ DB Slave Server
 ‣ Worker Nodes


                  @railshoster
Roles




        @railshoster
Roles


‣ Rollen haben eine Node-artige Struktur.




                  @railshoster
Roles


‣ Rollen haben eine Node-artige Struktur.
 ‣ Haben eine Runlist.




                  @railshoster
Roles


‣ Rollen haben eine Node-artige Struktur.
 ‣ Haben eine Runlist.
 ‣ Haben Attribute.




                  @railshoster
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
Node Konfiguration
Node Konfiguration
     Cookbooks
„Most of the time
    you are using Chef,
you are writing cookbooks.“



     http://wiki.opscode.com/display/chef/Chef+Basics
Cookbooks




            @railshoster
Cookbooks


‣ Ein Kochbuch kann bestehen aus:




              @railshoster
Cookbooks


‣ Ein Kochbuch kann bestehen aus:
 ‣ Recipes




              @railshoster
Cookbooks


‣ Ein Kochbuch kann bestehen aus:
 ‣ Recipes

 ‣ Resource Definitions




                     @railshoster
Cookbooks


‣ Ein Kochbuch kann bestehen aus:
 ‣ Recipes

 ‣ Resource Definitions

 ‣ Attributes




                     @railshoster
Cookbooks


‣ Ein Kochbuch kann bestehen aus:
 ‣ Recipes

 ‣ Resource Definitions

 ‣ Attributes

 ‣ Libraries



                     @railshoster
Cookbooks


‣ Ein Kochbuch kann bestehen aus:
 ‣ Recipes

 ‣ Resource Definitions

 ‣ Attributes

 ‣ Libraries

 ‣ Templates

                     @railshoster
Cookbooks


‣ Ein Kochbuch kann bestehen aus:
 ‣ Recipes

 ‣ Resource Definitions

 ‣ Attributes

 ‣ Libraries

 ‣ Templates

 ‣ Cookbook Files
                     @railshoster
Cookbooks




            @railshoster
Cookbooks


‣ Syntaktisch gesehen ist ein Cookbook
 eine Sammlung von Dateien und
 Verzeichnissen.




                 @railshoster
Cookbooks


‣ Syntaktisch gesehen ist ein Cookbook
  eine Sammlung von Dateien und
  Verzeichnissen.

‣ Für gewöhnlichen beschreibt ein
  Cookbook einen einzelnen Dienst.




                 @railshoster
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
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
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
Cookbooks sind das Werkzeug
zur Wiederverwendung Ihres
       Chef-Quellcodes.
Node Konfiguration
      Recipes
Recipes




          @railshoster
Recipes


‣ Ein Rezept beschreibt eine
 Ressource (Resource).




                @railshoster
Recipes


‣ Ein Rezept beschreibt eine
 Ressource (Resource).

 ‣ In den Rezepten befindet sich der
   Großteil des Verhaltens eines
   Cookbooks.




                 @railshoster
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
Node Konfiguration
  Cookbook Metadata
Cookbook Metadaten berschreiben
   die Abhängigkeiten eines
          Cookbooks.
Cookbook Metadata




             @railshoster
Cookbook Metadata


‣ Abhängigkeiten zu anderen Cookbooks




               @railshoster
Cookbook Metadata


‣ Abhängigkeiten zu anderen Cookbooks
‣ Maintainer




               @railshoster
Cookbook Metadata


‣ Abhängigkeiten zu anderen Cookbooks
‣ Maintainer
‣ Maintainer‘s email




                  @railshoster
Cookbook Metadata


‣ Abhängigkeiten zu anderen Cookbooks
‣ Maintainer
‣ Maintainer‘s email
‣ License



                  @railshoster
Cookbook Metadata


‣ Abhängigkeiten zu anderen Cookbooks
‣ Maintainer
‣ Maintainer‘s email
‣ License
‣ Version

                  @railshoster
Cookbook Metadata


‣ Abhängigkeiten zu anderen Cookbooks
‣ Maintainer
‣ Maintainer‘s email
‣ License
‣ Version
‣ ...
                  @railshoster
Node Konfiguration
     Resources
Resources




            @railshoster
Resources


‣ Repräsentier die zu konfigurierende
  Entität.




                  @railshoster
Resources


‣ Repräsentier die zu konfigurierende
  Entität.

‣ Abstrahiert vom eingesetzten
  Betriebsystem.




                   @railshoster
Resources


‣ Repräsentier die zu konfigurierende
  Entität.

‣ Abstrahiert vom eingesetzten
  Betriebsystem.

‣ Werden in Recipes und Definitions
  deklariert.



                   @railshoster
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
Resources




            @railshoster
Resources


‣ Bespiele




             @railshoster
Resources


‣ Bespiele
 ‣ Resource „Package“




                @railshoster
Resources


‣ Bespiele
 ‣ Resource „Package“
   ‣ Ubuntu: apt-get




                 @railshoster
Resources


‣ Bespiele
 ‣ Resource „Package“
   ‣ Ubuntu: apt-get
   ‣ CentOS: YUM



                 @railshoster
Node Konfiguration
      Provider
Providers




            @railshoster
Providers


‣ Provider sind plattformspezifische
 Implementierungen einer
 Ressource.




                @railshoster
Providers


‣ Provider sind plattformspezifische
 Implementierungen einer
 Ressource.

 ‣ Package Resource on CentOS
   > YUM Package Provider




                @railshoster
Providers




            @railshoster
Providers


‣ Sichern die Idempotenz der Chef-
  Aktionen ab.




                 @railshoster
Providers


‣ Sichern die Idempotenz der Chef-
  Aktionen ab.

 ‣ Zweimaliges Aufrufen einer Aktion
   > Einmaliges Ausführen




                 @railshoster
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
Providers




            @railshoster
Providers


‣ Ein Node wählt einen Provider für
 eine bestimmte Ressource per Default.




                @railshoster
Providers


‣ Ein Node wählt einen Provider für
  eine bestimmte Ressource per Default.

‣ Eine Resource kann ihren Provider aber
  auch explizit festlegen.




                   @railshoster
Meistens macht man sich keine
  Gedanken über Provider.

       Sie sind einfach da.
Data Bags
„Data bags provide an
       arbitrary store of
globally available JSON data.“



      http://wiki.opscode.com/display/chef/Data+Bags
Data Bags




            @railshoster
Data Bags


‣ Sind nicht direkt mit Node oder Role
  Attributen verbunden.




                  @railshoster
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
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
Data Bags




            @railshoster
Data Bags


‣ Rezepte können auf Daten aus den Data
 Bags zugreifen.




                   @railshoster
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
Speichern Sie keine sensiblen
Daten in gewöhnlichen Data Bags!
Verwenden Sie
verschlüsselte
   Data Bags!
Encrypted Data Bags




              @railshoster
Encrypted Data Bags


‣ Gut zur Speicherung sensibler
  Informationen, wie z.B.




                  @railshoster
Encrypted Data Bags


‣ Gut zur Speicherung sensibler
  Informationen, wie z.B.

 ‣ Passwords




                  @railshoster
Encrypted Data Bags


‣ Gut zur Speicherung sensibler
  Informationen, wie z.B.

 ‣ Passwords
 ‣ Access Keys




                  @railshoster
Encrypted Data Bags


‣ Gut zur Speicherung sensibler
  Informationen, wie z.B.

 ‣ Passwords
 ‣ Access Keys
 ‣ Andere Credentials


                  @railshoster
Encrypted Data Bags




              @railshoster
Encrypted Data Bags


‣ Wenn Chef kompromitiert würde
 > Bleibt so der Schaden gering.




                 @railshoster
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
Encrypted Data Bags




              @railshoster
Encrypted Data Bags


‣ Data Bag keys werden. unverschlüsselt. So
  kann nach ihnen gesucht
                          bleiben




                  @railshoster
Encrypted Data Bags


‣ Data Bag keys werden. unverschlüsselt. So
  kann nach ihnen gesucht
                          bleiben


‣ Values werden verschlüsselt und sind somit sicher.




                      @railshoster
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
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
Encrypted Data Bags




              @railshoster
Encrypted Data Bags


‣ Rezepte können also transparent auf
  verschlüsselte Data Bags zugreifen. Sie
  merken nichts von der Verschlüsselung.




                             @railshoster
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
Chef Suche
Chef Suche




             @railshoster
Chef Suche


‣ Nur in Verbindung mit Chef-Server.




                @railshoster
Chef Suche


‣ Nur in Verbindung mit Chef-Server.
 ‣ Nicht im Kontext von Chef-Solo.




                @railshoster
Chef Suche


‣ Nur in Verbindung mit Chef-Server.
 ‣ Nicht im Kontext von Chef-Solo.
‣ Liefert eine Volltextsuche.




                   @railshoster
Chef Suche


‣ Nur in Verbindung mit Chef-Server.
 ‣ Nicht im Kontext von Chef-Solo.
‣ Liefert eine Volltextsuche.
‣ Basiert auf Apache Solr.



                   @railshoster
Chef Suche




             @railshoster
Chef Suche


‣ Daten werden in einem Solr Index
  abgelegt




                 @railshoster
Chef Suche


‣ Daten werden in einem Solr Index
  abgelegt

 ‣ Data Bags




                 @railshoster
Chef Suche


‣ Daten werden in einem Solr Index
  abgelegt

 ‣ Data Bags
 ‣ API Clients




                 @railshoster
Chef Suche


‣ Daten werden in einem Solr Index
  abgelegt

 ‣ Data Bags
 ‣ API Clients
 ‣ Nodes


                 @railshoster
Chef Suche


‣ Daten werden in einem Solr Index
  abgelegt

 ‣ Data Bags
 ‣ API Clients
 ‣ Nodes
 ‣ Roles
                 @railshoster
Chef Suche


‣ Daten werden in einem Solr Index
  abgelegt

 ‣ Data Bags
 ‣ API Clients
 ‣ Nodes
 ‣ Roles
 ‣ ...           @railshoster
Chef Search




              @railshoster
Chef Search


‣ Abfragen werden durch den Chef-Server
 erzeugt.




                 @railshoster
Chef Search


‣ Abfragen werden durch den Chef-Server
  erzeugt.

‣ Erlaubt den Abruf von Informationen
  über sämtliche Knoten sowie die restliche
  Inftrastruktur.




                  @railshoster
Chef Search




              @railshoster
Chef Search


‣ Methoden zur Verwendung der Chef-
 Suche




                @railshoster
Chef Search


‣ Methoden zur Verwendung der Chef-
 Suche

 ‣ Verwendung des search Kommandos in
   Rezepten.




                @railshoster
Chef Search


‣ Methoden zur Verwendung der Chef-
 Suche

 ‣ Verwendung des search Kommandos in
   Rezepten.

 ‣ Verwendung des knive search
   Kommandos an der Kommandozeile.



                @railshoster
Chef Suche




             @railshoster
Chef Suche


‣ Sehr wichtig für die Erstellung von
  Rezepten.




                  @railshoster
Chef Suche


‣ Sehr wichtig für die Erstellung von
  Rezepten.

 ‣ App Server Rezept kann search
    Verwenden, um die zugehörige
    Datenbank zu finden.




                  @railshoster
Chef Suche




             @railshoster
Chef Suche


‣ Knive search Beispiele




                  @railshoster
Chef Suche


‣ Knive search Beispiele
 ‣ knife search role "name:production*"




                  @railshoster
Chef Suche


‣ Knive search Beispiele
 ‣ knife search role "name:production*"

 ‣ knife search node "name:app*"




                  @railshoster
Chef Suche


‣ Knive search Beispiele
 ‣ knife search role "name:production*"

 ‣ knife search node "name:app*"

 ‣ knife search client "name:c*"




                  @railshoster
Chef Suche




             @railshoster
Chef Suche


‣ Verwendung von Databagnamen zur
 Suche von Databags:




                @railshoster
Chef Suche


‣ Verwendung von Databagnamen zur
 Suche von Databags:

 ‣ knife search my_bag "key:value"




                  @railshoster
Chef Run
Chef Run
Konvergenz
Konvergenz




             @railshoster
Konvergenz


‣ Chef Run = Konvergenz




                @railshoster
Konvergenz


‣ Chef Run = Konvergenz
‣ Das System konvergiert mit jedem Lauf
  und jeder Aktion hin zum gewünschten
  Systemzustand.




                 @railshoster
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
Konvergenz




             @railshoster
Konvergenz


‣ Chef erneut zu starten, nach dem Chef-
  Lauf fehlgeshclagen ist, sollte das System
  näher zu seinem Zielzustand bringen
  > Konvergenz




                   @railshoster
Chef Run
Der Run Prozess
Der Run Prozess




              @railshoster
Der Run Prozess

1. Erstelle, registere, authentifizere den
   Node




                    @railshoster
Der Run Prozess

1. Erstelle, registere, authentifizere den
   Node

2. Synchronisiere die Cookbooks




                    @railshoster
Der Run Prozess

1. Erstelle, registere, authentifizere den
   Node

2. Synchronisiere die Cookbooks

3. Kompiliere die Resource Collection




                    @railshoster
Der Run Prozess

1. Erstelle, registere, authentifizere den
   Node

2. Synchronisiere die Cookbooks

3. Kompiliere die Resource Collection

4. Konfigure die Nodes



                    @railshoster
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
Der Run Prozess
1/5 Build, Register,
Authenticate Node
Build the Node
Build the Node




                 @railshoster
Build the Node


‣ Zuerst erzeugt Chef einen Node




                 @railshoster
Build the Node


‣ Zuerst erzeugt Chef einen Node
 ‣ Ohai discovery der OS Details.




                      @railshoster
Build the Node


‣ Zuerst erzeugt Chef einen Node
 ‣ Ohai discovery der OS Details.
 ‣ Hole Infos über den Node vom Chef-Server (!
   Solo).




                      @railshoster
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
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
Register @ Chef-Server
Register @ Chef-Server




               @railshoster
Register @ Chef-Server


‣ Überprüfe die private key Datei in /etc/chef/
  client.pem




                     @railshoster
Register @ Chef-Server


‣ Überprüfe die private key Datei in /etc/chef/
  client.pem



‣ Gehe von einem neuen Knoten aus,
  falls nicht.




                     @railshoster
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
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
The run process
2/5 Synchronize Cookbooks
Synchronize Cookbooks




             @railshoster
Synchronize Cookbooks


‣ Chef-Client > Chef-Server > Abrufen von:




                     @railshoster
Synchronize Cookbooks


‣ Chef-Client > Chef-Server > Abrufen von:
  ‣ Libraries




                     @railshoster
Synchronize Cookbooks


‣ Chef-Client > Chef-Server > Abrufen von:
  ‣ Libraries
  ‣ Attributes




                     @railshoster
Synchronize Cookbooks


‣ Chef-Client > Chef-Server > Abrufen von:
  ‣ Libraries
  ‣ Attributes
  ‣ Definitions



                     @railshoster
Synchronize Cookbooks


‣ Chef-Client > Chef-Server > Abrufen von:
  ‣ Libraries
  ‣ Attributes
  ‣ Definitions
  ‣ Recipes in all Cookbooks

                     @railshoster
Synchronize Cookbooks


‣ Chef-Client > Chef-Server > Abrufen von:
  ‣ Libraries
  ‣ Attributes
  ‣ Definitions
  ‣ Recipes in all Cookbooks
‣ Lokales Caching!
                     @railshoster
The run process
3/5 Compile Resource Collection
Compile Res. Collection




               @railshoster
Compile Res. Collection


‣ Zusammensetzen der Ressourcen für den
 Knoten




                @railshoster
Compile Res. Collection


‣ Zusammensetzen der Ressourcen für den
 Knoten

 ‣ Load Libraries




                    @railshoster
Compile Res. Collection


‣ Zusammensetzen der Ressourcen für den
 Knoten

 ‣ Load Libraries
 ‣ Load Attributes




                    @railshoster
Compile Res. Collection


‣ Zusammensetzen der Ressourcen für den
 Knoten

 ‣ Load Libraries
 ‣ Load Attributes
 ‣ Load Definitions


                    @railshoster
Compile Res. Collection




               @railshoster
Compile Res. Collection


‣ Assemble resources for the Node




                 @railshoster
Compile Res. Collection


‣ Assemble resources for the Node
 ‣ Lade Rezepte




                  @railshoster
Compile Res. Collection


‣ Assemble resources for the Node
 ‣ Lade Rezepte
   ‣ Erzeuge eine Resource Collection




                  @railshoster
Compile Res. Collection


‣ Assemble resources for the Node
 ‣ Lade Rezepte
   ‣ Erzeuge eine Resource Collection
   ‣ Evaluiere Ruby Code (außerhalb von Resources)



                     @railshoster
Der Run Prozess
4/5 Configure Node
Configure Node




                 @railshoster
Configure Node


‣ Bereit zur Systemkonfiguration




                  @railshoster
Configure Node


‣ Bereit zur Systemkonfiguration
‣ Konvergenz Pseudo Code:
  resource_collection.map do |resource|
    find_provider(resource)
  end




                       @railshoster
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
The run process
5/5 Run Notification Handlers
Execute Exeption Handlers
Talk Resources




                 @railshoster
Talk Resources


 ‣ Article about Chef Basics
   http://wiki.opscode.com/display/chef/
   Chef+Basics




                 @railshoster
Talk Resources


 ‣ Article about Chef Basics
   http://wiki.opscode.com/display/chef/
   Chef+Basics

 ‣ Opscode Hosted Chef
   http://www.opscode.com/hosted-chef/




                 @railshoster

Mais conteúdo relacionado

Destaque

Junior Connect' 2016 : Les enfants, nouveaux partenaires de consommation ?
Junior Connect' 2016 : Les enfants, nouveaux partenaires de consommation ?Junior Connect' 2016 : Les enfants, nouveaux partenaires de consommation ?
Junior Connect' 2016 : Les enfants, nouveaux partenaires de consommation ?Ipsos France
 
Les nouvelles tendances dans l'immobilier - Etude Ipsos pour Orpi
Les nouvelles tendances dans l'immobilier - Etude Ipsos pour OrpiLes nouvelles tendances dans l'immobilier - Etude Ipsos pour Orpi
Les nouvelles tendances dans l'immobilier - Etude Ipsos pour OrpiIpsos France
 
Les collectivités territoriales et le financement des lieux-de-culte
Les collectivités territoriales et le financement des lieux-de-culteLes collectivités territoriales et le financement des lieux-de-culte
Les collectivités territoriales et le financement des lieux-de-culteKantar
 
Tendances mobiles et digitales du MWC 2015
Tendances mobiles et digitales du MWC 2015Tendances mobiles et digitales du MWC 2015
Tendances mobiles et digitales du MWC 2015Valtech
 
SMMW // Cas Marketel - Alimentation Couche-Tard
SMMW // Cas Marketel - Alimentation Couche-TardSMMW // Cas Marketel - Alimentation Couche-Tard
SMMW // Cas Marketel - Alimentation Couche-TardGuillaume Lemay
 
01 apostila de fundamentos do camdomblé
01   apostila de fundamentos do camdomblé01   apostila de fundamentos do camdomblé
01 apostila de fundamentos do camdombléElieser Bezerra
 
Guide du-routard-de-l-intelligence-economique-2012
Guide du-routard-de-l-intelligence-economique-2012Guide du-routard-de-l-intelligence-economique-2012
Guide du-routard-de-l-intelligence-economique-2012Freelance
 
Baromètre Converteo sur l’efficacité des moteurs de recherche interne - Etude...
Baromètre Converteo sur l’efficacité des moteurs de recherche interne - Etude...Baromètre Converteo sur l’efficacité des moteurs de recherche interne - Etude...
Baromètre Converteo sur l’efficacité des moteurs de recherche interne - Etude...alain Clapaud
 
Il était une fois la vie d'un Product Owner
Il était une fois la vie d'un Product OwnerIl était une fois la vie d'un Product Owner
Il était une fois la vie d'un Product OwnerRomain Couturier
 
Microsoft 2007 Basics
Microsoft 2007 BasicsMicrosoft 2007 Basics
Microsoft 2007 BasicsJulie Van Noy
 
Os cem erros mais comuns da língua portuguesa
Os cem erros mais comuns da língua portuguesaOs cem erros mais comuns da língua portuguesa
Os cem erros mais comuns da língua portuguesaDr. Conteúdo
 
French IGCSE Oral Area A : Home Life & School
French IGCSE Oral Area A : Home Life & SchoolFrench IGCSE Oral Area A : Home Life & School
French IGCSE Oral Area A : Home Life & SchoolDavid Ash
 
Dopage et sport ab 13 05 14
Dopage et sport ab 13 05 14Dopage et sport ab 13 05 14
Dopage et sport ab 13 05 14raymondteyrouz
 

Destaque (20)

Junior Connect' 2016 : Les enfants, nouveaux partenaires de consommation ?
Junior Connect' 2016 : Les enfants, nouveaux partenaires de consommation ?Junior Connect' 2016 : Les enfants, nouveaux partenaires de consommation ?
Junior Connect' 2016 : Les enfants, nouveaux partenaires de consommation ?
 
Les nouvelles tendances dans l'immobilier - Etude Ipsos pour Orpi
Les nouvelles tendances dans l'immobilier - Etude Ipsos pour OrpiLes nouvelles tendances dans l'immobilier - Etude Ipsos pour Orpi
Les nouvelles tendances dans l'immobilier - Etude Ipsos pour Orpi
 
Paludisme
PaludismePaludisme
Paludisme
 
Les collectivités territoriales et le financement des lieux-de-culte
Les collectivités territoriales et le financement des lieux-de-culteLes collectivités territoriales et le financement des lieux-de-culte
Les collectivités territoriales et le financement des lieux-de-culte
 
Tendances mobiles et digitales du MWC 2015
Tendances mobiles et digitales du MWC 2015Tendances mobiles et digitales du MWC 2015
Tendances mobiles et digitales du MWC 2015
 
Hooked: How to Build Habit-Forming Products
Hooked: How to Build Habit-Forming ProductsHooked: How to Build Habit-Forming Products
Hooked: How to Build Habit-Forming Products
 
AURH - Atlas analytique du transport de marchandises en ENO
AURH - Atlas analytique du transport de marchandises en ENOAURH - Atlas analytique du transport de marchandises en ENO
AURH - Atlas analytique du transport de marchandises en ENO
 
SMMW // Cas Marketel - Alimentation Couche-Tard
SMMW // Cas Marketel - Alimentation Couche-TardSMMW // Cas Marketel - Alimentation Couche-Tard
SMMW // Cas Marketel - Alimentation Couche-Tard
 
Les bases de Scrum
Les bases de ScrumLes bases de Scrum
Les bases de Scrum
 
01 apostila de fundamentos do camdomblé
01   apostila de fundamentos do camdomblé01   apostila de fundamentos do camdomblé
01 apostila de fundamentos do camdomblé
 
Guide du-routard-de-l-intelligence-economique-2012
Guide du-routard-de-l-intelligence-economique-2012Guide du-routard-de-l-intelligence-economique-2012
Guide du-routard-de-l-intelligence-economique-2012
 
Baromètre Converteo sur l’efficacité des moteurs de recherche interne - Etude...
Baromètre Converteo sur l’efficacité des moteurs de recherche interne - Etude...Baromètre Converteo sur l’efficacité des moteurs de recherche interne - Etude...
Baromètre Converteo sur l’efficacité des moteurs de recherche interne - Etude...
 
IQWiG_Gesundheitsinformation_Gutachten_der_WHO.pdf
IQWiG_Gesundheitsinformation_Gutachten_der_WHO.pdfIQWiG_Gesundheitsinformation_Gutachten_der_WHO.pdf
IQWiG_Gesundheitsinformation_Gutachten_der_WHO.pdf
 
Reseaux de capteurs sans fils - WSN
Reseaux de capteurs sans fils - WSNReseaux de capteurs sans fils - WSN
Reseaux de capteurs sans fils - WSN
 
Il était une fois la vie d'un Product Owner
Il était une fois la vie d'un Product OwnerIl était une fois la vie d'un Product Owner
Il était une fois la vie d'un Product Owner
 
Microsoft 2007 Basics
Microsoft 2007 BasicsMicrosoft 2007 Basics
Microsoft 2007 Basics
 
Os cem erros mais comuns da língua portuguesa
Os cem erros mais comuns da língua portuguesaOs cem erros mais comuns da língua portuguesa
Os cem erros mais comuns da língua portuguesa
 
Mughal empire
Mughal empireMughal empire
Mughal empire
 
French IGCSE Oral Area A : Home Life & School
French IGCSE Oral Area A : Home Life & SchoolFrench IGCSE Oral Area A : Home Life & School
French IGCSE Oral Area A : Home Life & School
 
Dopage et sport ab 13 05 14
Dopage et sport ab 13 05 14Dopage et sport ab 13 05 14
Dopage et sport ab 13 05 14
 

Semelhante a Opscode Chef - Grundlagen

Ruby On Rails Einführung
Ruby On Rails EinführungRuby On Rails Einführung
Ruby On Rails EinführungReinhold Weber
 
Lehmanns Rails Erweitern
Lehmanns Rails ErweiternLehmanns Rails Erweitern
Lehmanns Rails Erweiternjan_mindmatters
 
Julian Fischer Ruby On Rails
Julian Fischer   Ruby On RailsJulian Fischer   Ruby On Rails
Julian Fischer Ruby On RailsAvarteq
 
Ruby on Rails in a metro session
Ruby on Rails in a metro sessionRuby on Rails in a metro session
Ruby on Rails in a metro sessionVirttoo org
 
Mehrserver Lösungen
Mehrserver LösungenMehrserver Lösungen
Mehrserver LösungenAvarteq
 
Oracle no sql-doag-datenbank_konferenz_juni_2014
Oracle no sql-doag-datenbank_konferenz_juni_2014Oracle no sql-doag-datenbank_konferenz_juni_2014
Oracle no sql-doag-datenbank_konferenz_juni_2014Gunther Pippèrr
 
Schweine latein-vortrag
Schweine latein-vortragSchweine latein-vortrag
Schweine latein-vortragRamon Wartala
 
Liquid - Templating on Rails
Liquid - Templating on RailsLiquid - Templating on Rails
Liquid - Templating on Railsgearwheeldotnet
 
Einführung in Opscode Chef - Voraussetzungen
Einführung in Opscode Chef - VoraussetzungenEinführung in Opscode Chef - Voraussetzungen
Einführung in Opscode Chef - VoraussetzungenAvarteq
 
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatengeKarin Patenge
 
Gemeinsame Literaturverwaltung am Beispiel von refbase
Gemeinsame Literaturverwaltung am Beispiel von refbaseGemeinsame Literaturverwaltung am Beispiel von refbase
Gemeinsame Literaturverwaltung am Beispiel von refbasemsteffens
 
Sitzung 7
Sitzung 7Sitzung 7
Sitzung 7scuy
 
Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"schellsoft
 
Ruby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerRuby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerNETUserGroupBern
 
An Introduction to Ruby On Rails
An Introduction to Ruby On RailsAn Introduction to Ruby On Rails
An Introduction to Ruby On RailsJonathan Weiss
 
Effiziente datenpersistierung mit JPA 2.1 und Hibernate
Effiziente datenpersistierung mit JPA 2.1 und HibernateEffiziente datenpersistierung mit JPA 2.1 und Hibernate
Effiziente datenpersistierung mit JPA 2.1 und HibernateThorben Janssen
 
Microservices Architecture: Architektur und Patterns
Microservices Architecture: Architektur und PatternsMicroservices Architecture: Architektur und Patterns
Microservices Architecture: Architektur und PatternsOPEN KNOWLEDGE GmbH
 

Semelhante a Opscode Chef - Grundlagen (20)

Ruby On Rails Einführung
Ruby On Rails EinführungRuby On Rails Einführung
Ruby On Rails Einführung
 
JRuby
JRubyJRuby
JRuby
 
Lehmanns Rails Erweitern
Lehmanns Rails ErweiternLehmanns Rails Erweitern
Lehmanns Rails Erweitern
 
Julian Fischer Ruby On Rails
Julian Fischer   Ruby On RailsJulian Fischer   Ruby On Rails
Julian Fischer Ruby On Rails
 
Ruby on Rails in a metro session
Ruby on Rails in a metro sessionRuby on Rails in a metro session
Ruby on Rails in a metro session
 
Mehrserver Lösungen
Mehrserver LösungenMehrserver Lösungen
Mehrserver Lösungen
 
Oracle no sql-doag-datenbank_konferenz_juni_2014
Oracle no sql-doag-datenbank_konferenz_juni_2014Oracle no sql-doag-datenbank_konferenz_juni_2014
Oracle no sql-doag-datenbank_konferenz_juni_2014
 
Schweine latein-vortrag
Schweine latein-vortragSchweine latein-vortrag
Schweine latein-vortrag
 
Ruby on Rails SS09 06
Ruby on Rails SS09 06Ruby on Rails SS09 06
Ruby on Rails SS09 06
 
Liquid - Templating on Rails
Liquid - Templating on RailsLiquid - Templating on Rails
Liquid - Templating on Rails
 
Einführung in Opscode Chef - Voraussetzungen
Einführung in Opscode Chef - VoraussetzungenEinführung in Opscode Chef - Voraussetzungen
Einführung in Opscode Chef - Voraussetzungen
 
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
 
Gemeinsame Literaturverwaltung am Beispiel von refbase
Gemeinsame Literaturverwaltung am Beispiel von refbaseGemeinsame Literaturverwaltung am Beispiel von refbase
Gemeinsame Literaturverwaltung am Beispiel von refbase
 
Sitzung 7
Sitzung 7Sitzung 7
Sitzung 7
 
Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"Auszug Seminarunterlagen "Tomcat 6.x"
Auszug Seminarunterlagen "Tomcat 6.x"
 
Ruby on Rails SS09 04
Ruby on Rails SS09 04Ruby on Rails SS09 04
Ruby on Rails SS09 04
 
Ruby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerRuby und Rails für .NET Entwickler
Ruby und Rails für .NET Entwickler
 
An Introduction to Ruby On Rails
An Introduction to Ruby On RailsAn Introduction to Ruby On Rails
An Introduction to Ruby On Rails
 
Effiziente datenpersistierung mit JPA 2.1 und Hibernate
Effiziente datenpersistierung mit JPA 2.1 und HibernateEffiziente datenpersistierung mit JPA 2.1 und Hibernate
Effiziente datenpersistierung mit JPA 2.1 und Hibernate
 
Microservices Architecture: Architektur und Patterns
Microservices Architecture: Architektur und PatternsMicroservices Architecture: Architektur und Patterns
Microservices Architecture: Architektur und Patterns
 

Mais de Avarteq

Kanban - Classes of Service
Kanban - Classes of ServiceKanban - Classes of Service
Kanban - Classes of ServiceAvarteq
 
Kanban - Set Work in Progress Limits
Kanban - Set Work in Progress LimitsKanban - Set Work in Progress Limits
Kanban - Set Work in Progress LimitsAvarteq
 
Kanban - Set a pace for the input
Kanban - Set a pace for the inputKanban - Set a pace for the input
Kanban - Set a pace for the inputAvarteq
 
Kanban – Visualizing the value chain
Kanban – Visualizing the value chain Kanban – Visualizing the value chain
Kanban – Visualizing the value chain Avarteq
 
Kanban - Establish a Delivery Rhythm
Kanban - Establish a Delivery RhythmKanban - Establish a Delivery Rhythm
Kanban - Establish a Delivery RhythmAvarteq
 
Kanban - How to coordinate with Kanban
Kanban - How to coordinate with KanbanKanban - How to coordinate with Kanban
Kanban - How to coordinate with KanbanAvarteq
 
Kanban: Kaizen - Culture of continuous improvement
Kanban: Kaizen - Culture of continuous improvementKanban: Kaizen - Culture of continuous improvement
Kanban: Kaizen - Culture of continuous improvementAvarteq
 
Kanban - Extreme improvements in five quarters
Kanban - Extreme improvements in five quartersKanban - Extreme improvements in five quarters
Kanban - Extreme improvements in five quartersAvarteq
 
Kanban - A recipe for success
Kanban - A recipe for successKanban - A recipe for success
Kanban - A recipe for successAvarteq
 
The Kanban method
The Kanban methodThe Kanban method
The Kanban methodAvarteq
 
Kanban: The Dilemma of an Agile Manager
Kanban: The Dilemma of an Agile ManagerKanban: The Dilemma of an Agile Manager
Kanban: The Dilemma of an Agile ManagerAvarteq
 
Ruby Grundlagen
Ruby GrundlagenRuby Grundlagen
Ruby GrundlagenAvarteq
 
RabbitMQ mit (J)Ruby
RabbitMQ mit (J)RubyRabbitMQ mit (J)Ruby
RabbitMQ mit (J)RubyAvarteq
 
Enterprise rails hosting 3 ways to scale - 2011-10
Enterprise rails hosting   3 ways to scale - 2011-10 Enterprise rails hosting   3 ways to scale - 2011-10
Enterprise rails hosting 3 ways to scale - 2011-10 Avarteq
 
Enterprise Hosting
Enterprise HostingEnterprise Hosting
Enterprise HostingAvarteq
 
Evolutionary Algorithms In Ruby
Evolutionary Algorithms In RubyEvolutionary Algorithms In Ruby
Evolutionary Algorithms In RubyAvarteq
 

Mais de Avarteq (16)

Kanban - Classes of Service
Kanban - Classes of ServiceKanban - Classes of Service
Kanban - Classes of Service
 
Kanban - Set Work in Progress Limits
Kanban - Set Work in Progress LimitsKanban - Set Work in Progress Limits
Kanban - Set Work in Progress Limits
 
Kanban - Set a pace for the input
Kanban - Set a pace for the inputKanban - Set a pace for the input
Kanban - Set a pace for the input
 
Kanban – Visualizing the value chain
Kanban – Visualizing the value chain Kanban – Visualizing the value chain
Kanban – Visualizing the value chain
 
Kanban - Establish a Delivery Rhythm
Kanban - Establish a Delivery RhythmKanban - Establish a Delivery Rhythm
Kanban - Establish a Delivery Rhythm
 
Kanban - How to coordinate with Kanban
Kanban - How to coordinate with KanbanKanban - How to coordinate with Kanban
Kanban - How to coordinate with Kanban
 
Kanban: Kaizen - Culture of continuous improvement
Kanban: Kaizen - Culture of continuous improvementKanban: Kaizen - Culture of continuous improvement
Kanban: Kaizen - Culture of continuous improvement
 
Kanban - Extreme improvements in five quarters
Kanban - Extreme improvements in five quartersKanban - Extreme improvements in five quarters
Kanban - Extreme improvements in five quarters
 
Kanban - A recipe for success
Kanban - A recipe for successKanban - A recipe for success
Kanban - A recipe for success
 
The Kanban method
The Kanban methodThe Kanban method
The Kanban method
 
Kanban: The Dilemma of an Agile Manager
Kanban: The Dilemma of an Agile ManagerKanban: The Dilemma of an Agile Manager
Kanban: The Dilemma of an Agile Manager
 
Ruby Grundlagen
Ruby GrundlagenRuby Grundlagen
Ruby Grundlagen
 
RabbitMQ mit (J)Ruby
RabbitMQ mit (J)RubyRabbitMQ mit (J)Ruby
RabbitMQ mit (J)Ruby
 
Enterprise rails hosting 3 ways to scale - 2011-10
Enterprise rails hosting   3 ways to scale - 2011-10 Enterprise rails hosting   3 ways to scale - 2011-10
Enterprise rails hosting 3 ways to scale - 2011-10
 
Enterprise Hosting
Enterprise HostingEnterprise Hosting
Enterprise Hosting
 
Evolutionary Algorithms In Ruby
Evolutionary Algorithms In RubyEvolutionary Algorithms In Ruby
Evolutionary Algorithms In Ruby
 

Opscode Chef - Grundlagen

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. Example: cookboos > database > libraries > resource_database.rb\n
  58. Example: cookboos > database > libraries > resource_database.rb\n
  59. Example: cookboos > database > libraries > resource_database.rb\n
  60. Example: cookboos > database > libraries > resource_database.rb\n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. You can search through data bags similar to node attributes.\n
  80. You can search through data bags similar to node attributes.\n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n
  128. \n
  129. \n
  130. \n
  131. \n
  132. \n
  133. Demonstration: invoke ohoi command.\n
  134. Demonstration: invoke ohoi command.\n
  135. Demonstration: invoke ohoi command.\n
  136. Demonstration: invoke ohoi command.\n
  137. Demonstration: invoke ohoi command.\n
  138. \n
  139. chef-validator-client identity = special purpose idendity to register new nodes\n
  140. chef-validator-client identity = special purpose idendity to register new nodes\n
  141. chef-validator-client identity = special purpose idendity to register new nodes\n
  142. chef-validator-client identity = special purpose idendity to register new nodes\n
  143. \n
  144. \n
  145. \n
  146. \n
  147. \n
  148. \n
  149. \n
  150. \n
  151. Libraries = language extensions, ruby classes\nAttributes > Updates node attributes and Recipes\nDefinition > must be loaded before Recipes because they create pseude-resources\n
  152. Libraries = language extensions, ruby classes\nAttributes > Updates node attributes and Recipes\nDefinition > must be loaded before Recipes because they create pseude-resources\n
  153. Libraries = language extensions, ruby classes\nAttributes > Updates node attributes and Recipes\nDefinition > must be loaded before Recipes because they create pseude-resources\n
  154. Libraries = language extensions, ruby classes\nAttributes > Updates node attributes and Recipes\nDefinition > must be loaded before Recipes because they create pseude-resources\n
  155. 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
  156. 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
  157. 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
  158. 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
  159. \n
  160. Converge: resource_collection.map { |resource| find_provider(resource) }\n
  161. Converge: resource_collection.map { |resource| find_provider(resource) }\n
  162. Converge: resource_collection.map { |resource| find_provider(resource) }\n
  163. \n
  164. Converge: resource_collection.map { |resource| find_provider(resource) }\n
  165. \n
  166. \n