Eine Einführung in Cloud-Config Scripting

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üsselsusersist 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 Direktiveusersbedeutet 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 Direktiveusersverwenden, 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 einfachesh-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 derauthorized_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 Feldpasswdnot 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 Direktivegroupsverwenden. 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 vonrootist das relevanteste) kann ein Kennwort mithilfe der Direktive vonchpasswdangegeben 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üssellistenthält einen Block, in dem die Kontonamen und die zugehörigen Kennwörter aufgeführt sind, die Sie zuweisen möchten. Der Schlüsselexpireist 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_filesverwenden.

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_updateauf "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_upgradefestlegen. 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 Direktiveusersverwalten, aber Sie können sie auch in einem dedizierten Abschnittssh_authorized_keysangeben. 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_keysverwenden. 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_publicverwenden ) 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_confverwalten. 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 Direktivenameserversollte eine Liste der IP-Adressen Ihrer Nameserver enthalten. Die Direktivesearchdomainsverwendet 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_confverwenden, müssen Sie sicherstellen, dass die Direktivemanage-resolv-confebenfalls 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 Direktiveruncmdtun.

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_stateeinrichten.

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ürdelaygestartet 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.