Einführung
Das Programmcloud-init
, das in neueren Distributionen verfügbar ist (zum Zeitpunkt dieses Schreibens nur Ubuntu 14.04 und CentOS 7), kann Daten aus dem Felduser-data
derDigitalOcean metadata service verbrauchen und ausführen. Dieser Vorgang verhält sich je nach Format der gefundenen Informationen unterschiedlich. Eines der beliebtesten Formate für Skripte innerhalb vonuser-data
ist das Dateiformatcloud-config.
Cloud-Konfigurationsdateien sind spezielle Skripts, die vom Cloud-Init-Prozess ausgeführt werden. Diese werden in der Regel für die Erstkonfiguration beim allerersten Start eines Servers verwendet. In diesem Handbuch werden das Format und die Verwendung von Cloud-Konfigurationsdateien erläutert.
Allgemeine Informationen zu Cloud-Config
Dascloud-config
-Format implementiert eine deklarative Syntax für viele gängige Konfigurationselemente, sodass viele Aufgaben problemlos ausgeführt werden können. Außerdem können Sie beliebige Befehle für alle Elemente angeben, die außerhalb der vordefinierten Deklarationsfunktionen liegen.
Mit diesem Ansatz „Das Beste aus zwei Welten“ verhält sich die Datei wie eine Konfigurationsdatei für allgemeine Aufgaben und behält gleichzeitig die Flexibilität eines Skripts für komplexere Funktionen bei.
YAML-Formatierung
Die Datei wird im YAML-Datenserialisierungsformat geschrieben. Das YAML-Format wurde so erstellt, dass es für den Menschen leicht zu verstehen und für Programme leicht zu analysieren ist.
YAML-Dateien sind im Allgemeinen ziemlich intuitiv zu verstehen, wenn Sie sie lesen, aber es ist gut, die tatsächlichen Regeln zu kennen, die sie regeln.
Einige wichtige Regeln für YAML-Dateien sind:
-
Einrückung mit Leerzeichen gibt die Struktur und Beziehung der Elemente zueinander an. Elemente, die stärker eingerückt sind, sind Unterelemente des ersten Elements mit einer niedrigeren Einrückungsebene darüber.
-
Listenmitglieder können durch einen führenden Strich identifiziert werden.
-
Assoziative Array-Einträge werden mit einem Doppelpunkt (:) gefolgt von einem Leerzeichen und dem Wert erstellt.
-
Textblöcke werden eingerückt. Verwenden Sie das Pipe-Zeichen (|) vor dem Block, um anzugeben, dass der Block unverändert gelesen werden soll, wobei die Formatierung beibehalten wird.
Nehmen wir diese Regeln und analysieren eine Beispieldatei voncloud-config
, wobei wir nur auf die Formatierung achten:
#cloud-config
users:
- name: demo
groups: sudo
shell: /bin/bash
sudo: ['ALL=(ALL) NOPASSWD:ALL']
ssh-authorized-keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDf0q4PyG0doiBQYV7OlOxbRjle026hJPBWD+eKHWuVXIpAiQlSElEBqQn0pOqNJZ3IBCvSLnrdZTUph4czNC4885AArS9NkyM7lK27Oo8RV888jWc8hsx4CD2uNfkuHL+NI5xPB/QT3Um2Zi7GRkIwIgNPN5uqUtXvjgA+i1CS0Ku4ld8vndXvr504jV9BMQoZrXEST3YlriOb8Wf7hYqphVMpF3b+8df96Pxsj0+iZqayS9wFcL8ITPApHi0yVwS8TjxEtI3FDpCbf7Y/DmTGOv49+AWBkFhS2ZwwGTX65L61PDlTSAzL+rPFmHaQBHnsli8U9N6E4XHDEOjbSMRX [email protected]
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDcthLR0qW6y1eWtlmgUE/DveL4XCaqK6PQlWzi445v6vgh7emU4R5DmAsz+plWooJL40dDLCwBt9kEcO/vYzKY9DdHnX8dveMTJNU/OJAaoB1fV6ePvTOdQ6F3SlF2uq77xYTOqBiWjqF+KMDeB+dQ+eGyhuI/z/aROFP6pdkRyEikO9YkVMPyomHKFob+ZKPI4t7TwUi7x1rZB1GsKgRoFkkYu7gvGak3jEWazsZEeRxCgHgAV7TDm05VAWCrnX/+RzsQ/1DecwSzsP06DGFWZYjxzthhGTvH/W5+KFyMvyA+tZV4i1XM+CIv/Ma/xahwqzQkIaKUwsldPPu00jRN user@desktop
runcmd:
- touch /test.txt
Wenn wir uns diese Datei ansehen, können wir eine Reihe wichtiger Dinge lernen.
Zunächst muss jedecloud-config
-Datei in der ersten Zeile mit#cloud-config
allein beginnen. Dies signalisiert dem Cloud-Init-Programm, dass dies alscloud-config
-Datei interpretiert werden soll. Wenn dies eine reguläre Skriptdatei wäre, würde die erste Zeile den Interpreter angeben, der zum Ausführen der Datei verwendet werden soll.
Die obige Datei enthält zwei Direktiven der obersten Ebene,users
undruncmd
. Diese beiden dienen als Schlüssel. Die Werte dieser Schlüssel bestehen aus allen eingerückten Zeilen nach den Schlüsseln.
Im Fall des Schlüsselsusers
ist der Wert ein einzelnes Listenelement. Wir wissen das, weil die nächste Einrückungsstufe ein Bindestrich (-) ist, der ein Listenelement angibt, und weil es auf dieser Einrückungsstufe nur einen Bindestrich gibt. Im Fall der Direktiveusers
bedeutet dies im Übrigen, dass wir nur einen einzelnen Benutzer definieren.
Das Listenelement selbst enthält ein assoziatives Array mit mehr Schlüssel-Wert-Paaren. Dies sind Geschwisterelemente, da sie alle auf derselben Einrückungsebene vorhanden sind. Jedes der Benutzerattribute ist in dem oben beschriebenen einzelnen Listenelement enthalten.
Zu beachten ist, dass für die angezeigten Zeichenfolgen keine Anführungszeichen erforderlich sind und keine unnötigen Klammern zum Definieren von Zuordnungen vorhanden sind. Der Interpreter kann den Datentyp relativ einfach bestimmen, und der Einzug gibt die Beziehung zwischen Elementen an, sowohl für Menschen als auch für Programme.
Inzwischen sollten Sie mit dem YAML-Format vertraut sein und mit Informationen nach den oben beschriebenen Regeln arbeiten können.
Wir können jetzt damit beginnen, einige der häufigsten Direktiven fürcloud-config
zu untersuchen.
Benutzer- und Gruppenverwaltung
Um neue Benutzer im System zu definieren, können Sie die Direktiveusers
verwenden, die wir in der obigen Beispieldatei gesehen haben.
Das allgemeine Format von Benutzerdefinitionen lautet:
#cloud-config
users:
- first_user_parameter
first_user_parameter
- second_user_parameter
second_user_parameter
second_user_parameter
second_user_parameter
Jeder neue Benutzer sollte mit einem Bindestrich beginnen. Jeder Benutzer definiert Parameter in Schlüssel-Wert-Paaren. Folgende Schlüssel stehen zur Definition zur Verfügung:
-
name: Der Benutzername des Kontos.
-
primary-group: Die primäre Gruppe des Benutzers. Standardmäßig wird eine Gruppe erstellt, die dem Benutzernamen entspricht. Jede hier angegebene Gruppe muss bereits vorhanden sein oder explizit erstellt werden (wir diskutieren dies später in diesem Abschnitt).
-
groups: Alle zusätzlichen Gruppen können hier durch Kommas getrennt aufgelistet werden.
-
gecos: Ein Feld für zusätzliche Informationen zum Benutzer.
-
shell: Die Shell, die für den Benutzer festgelegt werden soll. Wenn Sie dies nicht festlegen, wird die sehr einfache
sh
-Shell verwendet. -
expiredate: Das Datum, an dem das Konto ablaufen soll, im Format JJJJ-MM-TT.
-
sudo: Die zu verwendende Sudo-Zeichenfolge, wenn Sie Sudo-Berechtigungen ohne das Feld Benutzername definieren möchten.
-
lock-passwd: Dies ist standardmäßig auf "True" gesetzt. Stellen Sie dies auf "False" (Falsch) ein, damit sich Benutzer mit einem Kennwort anmelden können.
-
passwd: Ein Hash-Passwort für das Konto.
-
ssh-authorized-keys: Eine Liste der vollständigen öffentlichen SSH-Schlüssel, die der
authorized_keys
-Datei dieses Benutzers in seinem.ssh
-Verzeichnis hinzugefügt werden sollen. -
inactive: Ein boolescher Wert, der das Konto auf inaktiv setzt.
-
system: Wenn "True", ist dieses Konto ein Systemkonto ohne Ausgangsverzeichnis.
-
homedir: Wird verwendet, um die Standardwerte von
/home/<username>
zu überschreiben, die ansonsten erstellt und festgelegt werden. -
ssh-import-id: Die aus LaunchPad zu importierende SSH-ID.
-
selinux-user: Hiermit können Sie den SELinux-Benutzer festlegen, der für die Anmeldung dieses Kontos verwendet werden soll.
-
no-create-home: Auf "True" setzen, um zu vermeiden, dass ein
/home/<username>
-Verzeichnis für den Benutzer erstellt wird. -
no-user-group: Setzen Sie diesen Wert auf "True", um zu vermeiden, dass eine Gruppe mit demselben Namen wie der Benutzer erstellt wird.
-
no-log-init: Auf "True" setzen, um die Benutzeranmeldedatenbanken nicht zu initiieren.
Abgesehen von einigen grundlegenden Informationen, wie dem Schlüsselname
, müssen Sie nur die Bereiche definieren, in denen Sie vom Standard abweichen oder die erforderlichen Daten bereitstellen.
Für Benutzer ist es wichtig zu erkennen, dass das Feldpasswd
not in Produktionssystemen verwendet werden sollte, es sei denn, Sie verfügen über einen Mechanismus zum sofortigen Ändern des angegebenen Werts. Wie bei allen als Benutzerdaten übermittelten Informationen bleibt der Hash fürany Benutzer auf dem System während der gesamten Lebensdauer des Servers zugänglich. Auf moderner Hardware können diese Hashes leicht in trivialer Zeit geknackt werden. Sogar das Offenlegen des Hashs ist ein großes Sicherheitsrisiko, das auf Maschinen, die nicht verfügbar sind, nicht in Kauf genommen werden sollte.
Für eine Beispielbenutzerdefinition können wir einen Teil des Beispielscloud-config
verwenden, das wir oben gesehen haben:
#cloud-config
users:
- name: demo
groups: sudo
shell: /bin/bash
sudo: ['ALL=(ALL) NOPASSWD:ALL']
ssh-authorized-keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDf0q4PyG0doiBQYV7OlOxbRjle026hJPBWD+eKHWuVXIpAiQlSElEBqQn0pOqNJZ3IBCvSLnrdZTUph4czNC4885AArS9NkyM7lK27Oo8RV888jWc8hsx4CD2uNfkuHL+NI5xPB/QT3Um2Zi7GRkIwIgNPN5uqUtXvjgA+i1CS0Ku4ld8vndXvr504jV9BMQoZrXEST3YlriOb8Wf7hYqphVMpF3b+8df96Pxsj0+iZqayS9wFcL8ITPApHi0yVwS8TjxEtI3FDpCbf7Y/DmTGOv49+AWBkFhS2ZwwGTX65L61PDlTSAzL+rPFmHaQBHnsli8U9N6E4XHDEOjbSMRX [email protected]
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDcthLR0qW6y1eWtlmgUE/DveL4XCaqK6PQlWzi445v6vgh7emU4R5DmAsz+plWooJL40dDLCwBt9kEcO/vYzKY9DdHnX8dveMTJNU/OJAaoB1fV6ePvTOdQ6F3SlF2uq77xYTOqBiWjqF+KMDeB+dQ+eGyhuI/z/aROFP6pdkRyEikO9YkVMPyomHKFob+ZKPI4t7TwUi7x1rZB1GsKgRoFkkYu7gvGak3jEWazsZEeRxCgHgAV7TDm05VAWCrnX/+RzsQ/1DecwSzsP06DGFWZYjxzthhGTvH/W5+KFyMvyA+tZV4i1XM+CIv/Ma/xahwqzQkIaKUwsldPPu00jRN user@desktop
Um Gruppen zu definieren, sollten Sie die Direktivegroups
verwenden. Diese Direktive ist relativ einfach, da sie nur eine Liste von Gruppen enthält, die Sie erstellen möchten.
Eine optionale Erweiterung besteht darin, eine Unterliste für eine der Gruppen zu erstellen, die Sie erstellen. Diese neue Liste definiert die Benutzer, die in diese Gruppe aufgenommen werden sollen:
#cloud-config
groups:
- group1
- group2: [user1, user2]
Ändern Sie die Passwörter für bestehende Benutzer
Für bereits vorhandene Benutzerkonten (das Konto vonroot
ist das relevanteste) kann ein Kennwort mithilfe der Direktive vonchpasswd
angegeben werden.
Note: Diese Anweisung sollteonly in Debugging-Situationen verwendet werden, da der Wert wiederum jedem Benutzer im System für die Dauer der Lebensdauer des Servers zur Verfügung steht. Dies ist in diesem Abschnitt noch relevanter, da mit dieser Richtlinie übermittelte Passwörter inplain text angegeben werden müssen.
Die grundlegende Syntax sieht folgendermaßen aus:
#cloud-config
chpasswd:
list: |
user1:password1
user2:password2
user3:password3
expire: False
Die Direktive enthält zwei assoziative Array-Schlüssel. Der Schlüssellist
enthält einen Block, in dem die Kontonamen und die zugehörigen Kennwörter aufgeführt sind, die Sie zuweisen möchten. Der Schlüsselexpire
ist ein Boolescher Wert, der bestimmt, ob das Kennwort beim ersten Start geändert werden muss oder nicht. Der Standardwert ist "True".
Beachten Sie, dass Sie ein Passwort auf "RANDOM" oder "R" setzen können, wodurch ein zufälliges Passwort generiert und in/var/log/cloud-init-output.log
geschrieben wird. Beachten Sie, dass diese Datei für jeden Benutzer im System zugänglich ist und daher nicht sicherer ist.
Dateien auf die Festplatte schreiben
Um Dateien auf die Festplatte zu schreiben, sollten Sie die Direktivewrite_files
verwenden.
Jede Datei, die geschrieben werden soll, wird durch ein Listenelement gemäß der Direktive dargestellt. Diese Listenelemente sind assoziative Arrays, die die Eigenschaften jeder Datei definieren.
Die einzigen erforderlichen Schlüssel in diesem Array sindpath
, die definieren, wo die Datei geschrieben werden soll, undcontent
, die die Daten enthalten, die die Datei enthalten soll.
Die verfügbaren Schlüssel zum Konfigurieren eineswrite_files
-Elementes sind:
-
path: Der absolute Pfad zu dem Speicherort im Dateisystem, an den die Datei geschrieben werden soll.
-
content: Der Inhalt, der in die Datei eingefügt werden soll. Bei mehrzeiliger Eingabe sollten Sie einen Block mit einem Pipe-Zeichen (|) in der Zeile „content“ beginnen, gefolgt von einem eingerückten Block, der den Inhalt enthält. Binärdateien sollten "!! binary" und ein Leerzeichen vor dem Pipe-Zeichen enthalten.
-
owner: Das Benutzerkonto und die Gruppe, denen das Eigentum an der Datei übertragen werden soll. Diese sollten im Format "Benutzername: Gruppe" angegeben werden.
-
permissions: Der Oktalberechtigungssatz, der für diese Datei angegeben werden soll.
-
encoding: Eine optionale Codierungsspezifikation für die Datei. Dies kann "b64" für Base64-Dateien, "gzip" für komprimierte Gzip-Dateien oder "gz + b64" für eine Kombination sein. Wenn Sie dies weglassen, wird der herkömmliche Standarddateityp verwendet.
Zum Beispiel könnten wir eine Datei in/test.txt
mit dem Inhalt schreiben:
Here is a line.
Another line is here.
Der Teil dercloud-config
, der dies erreichen würde, würde folgendermaßen aussehen:
#cloud-config
write_files:
- path: /test.txt
content: |
Here is a line.
Another line is here.
Aktualisieren oder installieren Sie Pakete auf dem Server
Für die Verwaltung von Paketen sind einige Einstellungen und Anweisungen zu beachten.
Um die apt-Datenbank auf Debian-basierten Distributionen zu aktualisieren, sollten Sie die Direktivepackage_update
auf "true" setzen. Dies ist gleichbedeutend mit dem Aufruf vonapt-get update
über die Befehlszeile.
Der Standardwert ist "true". Sie müssen sich also nur um diese Anweisung kümmern, wenn Sie sie deaktivieren möchten:
#cloud-config
package_update: false
Wenn Sie alle Pakete auf Ihrem Server nach dem ersten Start aktualisieren möchten, können Sie die Direktivepackage_upgrade
festlegen. Dies entspricht einemapt-get upgrade
, das manuell ausgeführt wird.
Dies ist standardmäßig auf "false" gesetzt, stellen Sie also sicher, dass Sie dies auf "true" setzen, wenn Sie die Funktionalität wünschen:
#cloud-config
package_upgrade: true
Um zusätzliche Pakete zu installieren, können Sie die Paketnamen einfach mithilfe der Direktive "packages" auflisten. Jedes Listenelement sollte ein Paket darstellen. Im Gegensatz zu den beiden oben genannten Befehlen funktioniert diese Direktive mit yum oder apt managed distros.
Diese Elemente können eine von zwei Formen annehmen. Die erste ist einfach eine Zeichenfolge mit dem Namen des Pakets. Das zweite Formular ist eine Liste mit zwei Elementen. Das erste Element dieser neuen Liste ist der Paketname, und das zweite Element ist die Versionsnummer:
#cloud-config
packages:
- package_1
- package_2
- [package_3, version_num]
Die Direktive "packages" setztapt_update
auf true und überschreibt alle vorherigen Einstellungen.
Konfigurieren Sie SSH-Schlüssel für Benutzerkonten und den SSH-Daemon
Sie können SSH-Schlüssel in der Direktiveusers
verwalten, aber Sie können sie auch in einem dedizierten Abschnittssh_authorized_keys
angeben. Diese werden zur Datei "authorized_keys" des ersten definierten Benutzers hinzugefügt.
Dies hat das gleiche allgemeine Format der Schlüsselspezifikation innerhalb derusers
-Richtlinie:
#cloud-config
ssh_authorized_keys:
- ssh_key_1
- ssh_key_2
Sie können die privaten Schlüssel des SSH-Servers auch vorab generieren und im Dateisystem ablegen. Dies kann hilfreich sein, wenn Sie Ihren Clients die Informationen zu diesem Server vorab mitteilen möchten, damit sie dem Server vertrauen können, sobald er online geht.
Dazu können wir die Direktivessh_keys
verwenden. Dies kann die Schlüsselpaare für RSA-, DSA- oder ECDSA-Schlüssel unter Verwendung derrsa_private
,rsa_public
,dsa_private
,dsa_public
,ecdsa_private
undecdsa_public
verwenden ) s Unterelemente.
Da Formatierungen und Zeilenumbrüche für private Schlüssel wichtig sind, stellen Sie sicher, dass Sie einen Block mit einem Pipe-Schlüssel verwenden, wenn Sie diese angeben. Außerdem enthalten Siemust die Anfangs- und Endschlüsselzeilen, damit Ihre Schlüssel gültig sind.
#cloud-config
ssh_keys:
rsa_private: |
-----BEGIN RSA PRIVATE KEY-----
your_rsa_private_key
-----END RSA PRIVATE KEY-----
rsa_public: your_rsa_public_key
Richten Sie vertrauenswürdige CA-Zertifikate ein
Wenn Ihre Infrastruktur von Schlüsseln abhängt, die von einer internen Zertifizierungsstelle signiert wurden, können Sie Ihre neuen Computer so einrichten, dass sie Ihrem CA-Zertifikat vertrauen, indem Sie die Zertifikatinformationen einfügen. Dazu verwenden wir die Direktiveca-certs
.
Diese Richtlinie hat zwei Unterpunkte. Das erste istremove-defaults
, das, wenn es auf true gesetzt ist, alle normalen Zertifikat-Vertrauensinformationen entfernt, die standardmäßig enthalten sind. Dies ist normalerweise nicht erforderlich und kann zu Problemen führen, wenn Sie nicht wissen, was Sie tun. Gehen Sie daher vorsichtig vor.
Das zweite Element isttrusted
, eine Liste mit jeweils einem vertrauenswürdigen CA-Zertifikat:
#cloud-config
ca-certs:
remove-defaults: true
trusted:
- |
-----BEGIN CERTIFICATE-----
your_CA_cert
-----END CERTIFICATE-----
Konfigurieren Sie resolv.conf so, dass bestimmte DNS-Server verwendet werden
Wenn Sie Ihre eigenen DNS-Server konfiguriert haben, die Sie verwenden möchten, können Sie die resolv.conf-Datei Ihres Servers mithilfe der Anweisungresolv_conf
verwalten. Dies funktioniert derzeit nur für RHEL-basierte Distributionen.
Unter der Direktiveresolv_conf
können Sie Ihre Einstellungen mit den Elementennameservers
,searchdomains
,domain
undoptions
verwalten.
Die Direktivenameservers
ollte eine Liste der IP-Adressen Ihrer Nameserver enthalten. Die Direktivesearchdomains
verwendet eine Liste von Domänen und Subdomänen, in denen gesucht werden soll, wenn ein Benutzer einen Host, aber keine Domäne angibt.
domain
legt die Domäne fest, die für nicht auflösbare Anforderungen verwendet werden soll, undoptions
enthält eine Reihe von Optionen, die in der Datei resolv.conf definiert werden können.
Wenn Sie die Direktiveresolv_conf
verwenden, müssen Sie sicherstellen, dass die Direktivemanage-resolv-conf
ebenfalls auf true gesetzt ist. Andernfalls werden Ihre Einstellungen ignoriert:
#cloud-config
manage-resolv-conf: true
resolv_conf:
nameservers:
- 'first_nameserver'
- 'second_nameserver'
searchdomains:
- first.domain.com
- second.domain.com
domain: domain.com
options:
option1: value1
option2: value2
option3: value3
Führen Sie beliebige Befehle für mehr Kontrolle aus
Wenn keine der verwalteten Aktionen, diecloud-config
bereitstellt, für das, was Sie tun möchten, funktioniert, können Sie auch beliebige Befehle ausführen. Sie können dies mit der Direktiveruncmd
tun.
Diese Direktive benötigt eine Liste der auszuführenden Elemente. Diese Elemente können auf zwei verschiedene Arten angegeben werden, die sich auf die Art und Weise auswirken, wie sie behandelt werden.
Wenn das Listenelement eine einfache Zeichenfolge ist, wird das gesamte Element zur Ausführung an den Shell-Prozess vonsh
übergeben.
Die andere Option besteht darin, eine Liste zu übergeben, von der jedes Element auf ähnliche Weise ausgeführt wird, wieexecve
Befehle verarbeitet. Das erste Element wird als auszuführender Befehl oder Skript interpretiert und die folgenden Elemente werden als Argumente für diesen Befehl übergeben.
Die meisten Benutzer können eines dieser Formate verwenden. Aufgrund der Flexibilität können Sie jedoch die beste Option auswählen, wenn Sie spezielle Anforderungen haben. Jede Ausgabe wird in den Standardausgang und in die/var/log/cloud-init-output.log
-Datei geschrieben:
#cloud-config
runcmd:
- [ sed, -i, -e, 's/here/there/g', some_file]
- echo "modified some_file"
- [cat, some_file]
Fahren Sie den Server herunter oder starten Sie ihn neu
In einigen Fällen möchten Sie Ihren Server herunterfahren oder neu starten, nachdem Sie die anderen Elemente ausgeführt haben. Sie können dies tun, indem Sie die Direktivepower_state
einrichten.
Diese Direktive hat vier Unterpunkte, die gesetzt werden können. Dies sinddelay
,timeout
,message
undmode
.
delay
gibt an, wie lange der Neustart oder das Herunterfahren in der Zukunft erfolgen soll. Standardmäßig ist dies "jetzt", was bedeutet, dass der Vorgang sofort beginnt. Um eine Verzögerung hinzuzufügen, sollten Benutzer in Minuten die Zeit angeben, die im Format+<num_of_mins>
vergehen soll.
Der Parametertimeout
nimmt einen Wert ohne Einheit an, der die Anzahl der Sekunden angibt, die gewartet werden muss, bis die Cloud-Init abgeschlossen ist, bevor der Countdown fürdelay
gestartet wird.
Im Feldmessage
können Sie eine Nachricht angeben, die an alle Benutzer des Systems gesendet wird. mode
gibt den Typ des auszulösenden Leistungsereignisses an. Dies kann "Ausschalten" sein, um den Server herunterzufahren, "Neustarten", um den Server neu zu starten, oder "Anhalten", um das System entscheiden zu lassen, welche Aktion die beste ist (normalerweise Herunterfahren):
#cloud-config
power_state:
timeout: 120
delay: "+5"
message: Rebooting in five minutes. Please save your work.
mode: reboot
Fazit
Die obigen Beispiele stellen einige der häufigsten Konfigurationselemente dar, die beim Ausführen einercloud-config
-Datei verfügbar sind. Es gibt zusätzliche Funktionen, die wir in diesem Handbuch nicht behandelt haben. Dazu gehören das Einrichten der Konfigurationsverwaltung, das Konfigurieren zusätzlicher Repositorys und sogar das Registrieren mit einer externen URL, wenn der Server initialisiert wird.
Weitere Informationen zu einigen dieser Optionen finden Sie im Verzeichnis/usr/share/doc/cloud-init/examples
. Eine praktische Anleitung, die Ihnen hilft, sich mitcloud-config
Dateien vertraut zu machen, finden Sie in unserem Tutorial zuhow to use cloud-config to complete basic server configuration hier.