Chef - Rollen
Rollen in Chef sind eine logische Methode zum Gruppieren von Knoten. Typische Fälle sind Rollen für Webserver, Datenbankserver usw. Sie können eine benutzerdefinierte Ausführungsliste für alle Knoten festlegen und den Attributwert innerhalb der Rollen überschreiben.
Erstellen Sie eine Rolle
vipin@laptop:~/chef-repo $ subl roles/web_servers.rb
name "web_servers"
description "This role contains nodes, which act as web servers"
run_list "recipe[ntp]"
default_attributes 'ntp' => {
'ntpdate' => {
'disable' => true
}
}
Sobald wir die Rolle erstellt haben, müssen wir sie auf den Chef-Server hochladen.
Rolle auf Chef Server hochladen
vipin@laptop:~/chef-repo $ knife role from file web_servers.rb
Jetzt müssen wir einem Knoten namens Server eine Rolle zuweisen.
Weisen Sie dem Knoten eine Rolle zu
vipin@laptop:~/chef-repo $ knife node edit server
"run_list": [
"role[web_servers]"
]
Saving updated run_list on node server
Führen Sie den Chef-Client aus
user@server:~$ sudo chef-client
...TRUNCATED OUTPUT...
[2013-07-25T13:28:24+00:00] INFO: Run List is [role[web_servers]]
[2013-07-25T13:28:24+00:00] INFO: Run List expands to [ntp]
...TRUNCATED OUTPUT...
Wie es funktioniert
Definieren Sie eine Rolle in einer Ruby-Datei im Rollenordner des Chef-Repositorys.
Eine Rolle besteht aus einem Namen und einem Beschreibungsattribut.
Eine Rolle besteht aus rollenspezifischen Ausführungslisten und rollenspezifischen Attributeinstellungen.
Für jeden Knoten, der eine Rolle in seiner Ausführungsliste hat, wird die Ausführungsliste der Rolle in eine eigene ausgeführt.
Alle Rezepte in der Ausführungsliste der Rolle werden auf dem Knoten ausgeführt.
Die Rolle wird mit dem Befehl Messerrolle aus Datei auf den Chef-Server hochgeladen.
Die Rolle wird der Knotenlaufliste hinzugefügt.
Wenn Sie den Chef-Client auf einem Knoten ausführen, dessen Ausführungsliste die Rolle enthält, werden alle in der Rolle aufgeführten Rezepte ausgeführt.