Benutzerdaten
Wenn Sie eine IBM Cloud® Virtual Servers for Virtual Private Cloud-Instanz erstellen, können Sie optionale Benutzerdaten angeben, mit denen automatisch allgemeine Konfigurationstasks oder bestimmte Scripts ausgeführt werden können. Weitere Informationen zu Benutzerdaten und Benutzernamen finden Sie unter IAM-Zugriff.
IBM Cloud VPC verwendet die Cloud-init-Technologie zur Konfiguration virtueller Serverinstanzen. In das Feld Benutzerdaten auf der Seite Neuer virtueller Server für VPC können die Benutzer unter Verwendung von 'cloud-init' angepasste Konfigurationsoptionen eingeben. 'cloud-init' unterstützt verschiedene Formate (einschließlich YAML) für Konfigurationsdaten in einer Cloudkonfigurationsdatei.
Sie können die Cloudkonfigurationsdaten (cloud-config) direkt im Feld Benutzerdaten angeben oder die Daten in eine Textdatei einfügen und den Namen dieser Datei beim Erstellen Ihrer Instanz angeben. Wenn Sie beispielsweise die
Cloudkonfigurationsdaten in userdata.blob speichern, dann geben Sie -user-data @userdata.blob an, wenn Sie eine Instanz mithilfe der Befehlszeilenschnittstelle erstellen.
Wenn Sie eine virtuelle Serverinstanz mithilfe des IBM Hyper Protect Container Runtime-Image erstellen, müssen Sie einen Vertrag als Teil des Felds Benutzerdaten übergeben. Da es sich bei dem Image um ein gesperrtes Image mit inaktiviertem SSH-Zugriff handelt, besteht die einzige Möglichkeit zur Interaktion mit der Instanz darin, den Vertrag zu übergeben.
Die Größe des Felds Benutzerdaten bzw. der Datei ist auf 64 KB begrenzt.
Benutzerdatenbeispiele für Linux
Das Standardbenutzerkonto für Linux hängt vom Betriebssystem ab. Eine Liste der Betriebssysteme und der entsprechenden Standardbenutzerkonten finden Sie unter "Verbindung zu Linux-Instanzen herstellen: Standardbenutzerkonto ermitteln ".
Benutzer und SSH-Schlüssel hinzufügen
Das folgende Beispiel für die Cloud-Initialisierung (cloud-init) zeigt, wie ein Linux-Benutzer einen Benutzer hinzufügen und für den Benutzer einen autorisierten SSH-Schlüssel bereitstellen kann. Das Feld Name enthält den
öffentlichen Schlüssel, der zu ~/.ssh/authorized_keys hinzugefügt wird.
Für Linux -Images kann der SSH-Schlüsseltyp Ed25519 nur verwendet werden, wenn der SSH-Server für das Betriebssystem diesen Schlüsseltyp unterstützt. Weitere Informationen finden Sie unter Einführung in SSH-Schlüssel.
#cloud-config
users:
- name: demouser
gecos: Demo User
sudo: ALL=(ALL) NOPASSWD:ALL
groups: users, admin
ssh_import_id: None
lock_passwd: true
ssh_authorized_keys:
- <ssh public key>
Das folgende Beispiel eines Shell-Scripts zeigt, wie ein Linux-Benutzer einen SSH-Schlüssel für den aktuellen Benutzer hinzufügen kann.
#!/bin/bash
echo <sshKey> > ~/.ssh/authorized_keys
Sie können eines dieser Beispiele direkt in das Feld Benutzerdaten einfügen. Die Benutzerdaten stehen dann während der Bereitstellung für die Virtual Server-Instanz zur Verfügung.
Wenn Sie angeben, dass eine Datei eingeschlossen werden soll, und dem Dateinamen Leerzeichen vorangestellt sind, werden die Daten nicht korrekt interpretiert. Vergewissern Sie sich, dass #!/bin/sh oder #!/bin/bash die ersten Zeichen in der Zeile sind, die unmittelbar auf das Ende der Dateibezeichnung (<<EOF) folgt. Die Zeichen können nicht eingerückt werden.
Weitere Beispiele und Informationen zu Linux Benutzerdaten finden Sie unter Cloud-Konfigurationsbeispiele).
Instanzspeicher mit einzelner Platte unter Verwendung eines Cloudkonfigurationsscripts konfigurieren
Der Instanzspeicher ist ein VPC-Feature zum Anfordern von Virtual Server-Instanzen mit zugeordnetem schnellen und lokalen Speicher. Weitere Informationen zum Instanzspeicher finden Sie unter Informationen zum Instanzspeicher.
Wenn Sie eine Virtual Server-Instanz mit Instanzspeicher bereitstellen und sich anschließend zum ersten Mal bei diesem Server anmelden, sind die Instanzspeicherplatten standardmäßig nicht konfiguriert. Sie werden als Blockeinheiten (z. B.
/dev/vdb) angezeigt und die folgenden Aktionen müssen ausgeführt werden, bevor sie mit einem Dateisystem verwendet werden können:
- Einheit partitionieren
- Partition mit einem Dateisystem formatieren
- Hängen Sie das Dateisystem an.
Diese Aktionen können auch automatisch ausgeführt werden, wenn Sie die virtuelle Instanz unter Verwendung des Felds Benutzerdaten bereitstellen. Die folgenden Aktionen werden im Script cloud-config definiert:
- Weist den Cloud-Initialisierungsprozess an, beim ersten Start Ihrer virtuellen Instanz auszuführen.
- Automatisches Partitionieren der Einheit
- Formatieren der Partition mit einem Dateisystem des Typs
ext4 - Anhängen des Dateisystems
Verwenden Sie das Feld Benutzerdaten nicht zum automatischen Konfigurieren einer Instanzspeicherplatte, die nicht Teil der Definition für die virtuelle Instanz ist. Andernfalls würde dev/vdb device als Ziel verwendet.
Dabei wird möglicherweise auf die cloud-init-Datenquelle verwiesen und die Cloud-Initialisierungskonfiguration wie Hostname und SSH-Schlüssel werden beschädigt.
Das folgende Beispiel enthält Benutzerdaten zum automatischen Konfigurieren einer Instanzspeicherplatte. In diesem Beispiel kann ein Instanzprofil verwendet werden, das eine einzelne Platte angibt.
#cloud-config
# Cloud-init supports simple partition and file system config.
# This user data yaml will create a full partition on the first
# virtio_blk device after the boot device, initialize ext4 on it and
# mount it on a folder matching the label.
#
disk_setup:
/dev/vdb:
table_type: 'mbr'
layout:
- 100
overwrite: false
fs_setup:
- label: /mnt/inststg1
filesystem: 'ext4'
device: /dev/vdb1
overwrite: false
runcmd:
- [ mkdir, /mnt/inststg1 ]
mounts:
- ["/dev/vdb1", "/mnt/inststg1"]
mount_default_fields: [ None, None, "auto", "defaults,nofail", "0", "2" ]
Dieses Skript konfiguriert /dev/vdb, das erste auf der virtuellen Instanz verfügbare Speichergerät mit dem Schnittstellentyp virtio_blk. Das Script kann in das Feld Benutzerdaten eingefügt oder unter Verwendung des Links zum Importieren von Benutzerdaten in der Benutzerschnittstelle importiert werden.
Dieses Script wurde mit einem Archivimage von Ubuntu 20.04 LTS Focal Fossa getestet. Das Script ist möglicherweise für andere Linux-Archivimages und angepasste Linux-Images geeignet. Gegebenenfalls muss das Script entsprechend
angepasst werden.
Das Cloudkonfigurationsscript (cloud-config) ist für virtuelle Server unter Windows nicht geeignet. Wenn Ihre Instanz keinen Instanzspeicher enthält, sollten Sie dieses Script nicht verwenden. Das Script konfiguriert möglicherweise eine nicht vorgesehene Einheit.
Sehen Sie sich die folgenden Informationen zu Elementen an, die im cloud-config-Skript enthalten sind:
- disk_setup: Erstellt eine einzelne Standardpartition, die die gesamte Platte umfasst, mit einem Master-Bootsatz. Der Parameter 'overwrite: false' bewirkt, dass diese Operation übersprungen wird, wenn die Einheit bereits partitioniert ist.
- fs_setup: Erstellt ein ext4-Dateisystem in der ersten Partition der Blockeinheit 'vdb' und weist ihm die Bezeichnung 'inststg1' zu. Sie können den Typ und die Bezeichnung des Dateisystems an Ihre Anforderungen anpassen. Die Einstellung 'overwrite: false' verhindert das Formatieren der Partition, wenn sie bereits mit einem Dateisystem formatiert ist.
- runcmd: Erstellt im übergeordneten hierarchischen Dateisystem ein Verzeichnis, das von ‘/’ ausgehend als Mountpunkt verwendet werden soll.
- mounts: Hängt die Dateisystemeinheit an /inststg1 an. Sie können den Verzeichnispfad hier und unter 'runcmd' umbenennen.
- mount_default_fields: Erstellt eine permanente Mount-Anweisung in der Datei /etc/fstab. Wenn Sie einen Befehl 'reboot' absetzen, ist das Dateisystem des Instanzspeichers nach dem Warmstart weiterhin angehängt.
Die CLI und die API unterstützen auch das Feld Benutzerdaten.
Das folgende cloud-config-Beispielscript konfiguriert automatisch eine Instanzspeicher-Blockeinheit /dev/vdb. Wenn Sie Ihren virtuellen Server nur neu starten, funktioniert diese Konfiguration weiterhin, da die Konfiguration und
die Daten erhalten bleiben. Wenn Sie jedoch einen virtuellen Server starten, der zuvor angehalten wurde, verfügt der virtuelle Server beim Booten über einen neuen Satz von Instanzspeicherfestplatten. In diesem Fall müssen die Schritte der
Cloud-Initialisierung manuell wiederholt werden. Standardmäßig wird das Skript cloud-config nur beim ersten Start ausgeführt. Sie können auch den Abschnitt 'cloud-init' der Datei 'cloud.config' so bearbeiten, dass die Schritte der Cloud-Initialisierung
bei jedem Bootvorgang automatisch ausgeführt werden. Die entsprechenden Schritte finden Sie unter Abschnitt 'cloud_cloud_init_modules' der Datei 'cloud.config' für die Ausführung bei jedem Bootvorgang einrichten.
Konfiguration eines Speichers mit zwei Festplatteninstanzen mithilfe des Skripts cloud-config
Das folgende Beispiel enthält Benutzerdaten zum automatischen Konfigurieren einer Instanzspeicherplatte. In diesem Beispiel kann ein Instanzprofil verwendet werden, das zwei Platten angibt.
#cloud-config
# Cloud-init supports simple partition and file system config.
# This user data yaml will create a full partition on the first two
# virtio_blk devices after the boot device, initialize ext4 on them and
# mount them on new folders off of ‘/mnt/’.
#
disk_setup:
/dev/vdb:
table_type: 'mbr'
layout:
- 100
overwrite: false
/dev/vdc:
table_type: 'mbr'
layout:
- 100
overwrite: false
fs_setup:
- label: /mnt/inststg1
filesystem: 'ext4'
device: /dev/vdb1
overwrite: false
- label: /mnt/inststg2
filesystem: 'ext4'
device: /dev/vdc1
overwrite: false
runcmd:
- [ mkdir, /mnt/inststg1 ]
- [ mkdir, /mnt/inststg2 ]
mounts:
- ["/dev/vdb1", "/mnt/inststg1"]
- ["/dev/vdc1", "/mnt/inststg2"]
mount_default_fields: [ None, None, "auto", "defaults,nofail", "0", "2" ]
Dieses Cloud-Konfigurationsscriptbeispiel konfiguriert automatisch sowohl den Instanzspeicher /dev/vdb als auch dev/vdc Blockeinheiten und nimmt einen virtio_blk-Schnittstellentyp für Instanzspeicher
an. Wenn Sie Ihren virtuellen Server nur neu starten, funktioniert diese Konfiguration weiterhin, da die Konfiguration und die Daten erhalten bleiben.
Wenn Sie einen virtuellen Server starten, der angehalten wurde, verfügt der virtuelle Server beim Booten über einen neuen Satz von Instanzspeicherplatten. In diesem Fall müssen die Cloud-Init-Schritte erneut manuell ausgeführt werden. Standardmäßig wird das Skript cloud-config nur beim ersten Start ausgeführt. Sie können auch den Abschnitt 'cloud-init' der Datei 'cloud.config' so bearbeiten, dass die Schritte der Cloud-Initialisierung bei jedem Bootvorgang automatisch ausgeführt werden.
Abschnitt 'cloud_cloud_init_modules' der Datei 'cloud.config' für die Ausführung bei jedem Bootvorgang einrichten
Das cloud-config-Script im vorherigen Beispiel konfiguriert automatisch eine Instanzspeicher-Blockeinheit /dev/vdb. Wenn Sie Ihren virtuellen Server nur neu starten, funktioniert diese Konfiguration weiterhin, da die Konfiguration
und die Daten erhalten bleiben. Wenn Sie jedoch einen virtuellen Server starten, der angehalten wurde, verfügt der virtuelle Server beim Start über einen neuen Satz von Instanzspeicherfestplatten. In diesem Fall müssen die Cloud-Init-Schritte
erneut manuell ausgeführt werden. Standardmäßig wird das Skript cloud-config nur beim ersten Start ausgeführt.
- Sie benötigen eine bereitgestellte Instanz mit dem Feld "Benutzerdaten ", das die Cloud-Init-yaml-Daten aus dem vorherigen Beispiel angibt.
- Wenn Sie sich bei der gestarteten Instanz anmelden, muss das Dateisystem konfiguriert und eingehängt sein.
- Sie haben keine anderen Direktiven in den Abschnitten disk_setup oder mount in der cloud-config yaml, die als Benutzerdaten angegeben sind.
Um das cloud-config-Skript bei jedem weiteren Startvorgang auszuführen, gehen Sie wie folgt vor:
-
Bearbeiten Sie die Datei
etc/cloud/cloud.cfg. -
Suchen Sie nach dem Abschnitt
cloud_init_modules– er enthält die Module disk_setup und mount. -
Ändern Sie die Zeilen für die Module 'disk_setup' und 'mount' in
always. Der Abschnitt sieht wie folgt aus.# The modules that run in the 'init' stage cloud_init_modules: - migrator - seed_random - bootcmd - write-files - growpart - resizefs - [disk_setup, always] - [mounts, always] - set_hostname - update_hostname - update_etc_hosts - ca-certs - rsyslog - users-groups - ssh -
Speichern Sie die Datei. Stoppen Sie anschließend die Instanz und starten Sie erneut. Der Mountvorgang wird automatisch für ein neu partitioniertes und formatiertes Dateisystem ausgeführt.
Benutzerdatenbeispiel für Windows
Das folgende Beispiel zeigt Benutzerdaten, die an eine Windows-Instanz übergeben werden können. In diesem Benutzerdatenbeispiel wird die Zeitzone eingestellt.
"user_data": "Content-Type: multipart/mixed; boundary=MIMEBOUNDARY\nMIME-Version: 1.0\n\n--MIMEBOUNDARY\nContent-Type: text/cloud-config; charset=\"us-ascii\"\nMIME-Version: 1.0\nContent-Transfer-Encoding: 7bit\nContent-Disposition: attachment; filename=\"cloud-config\"\n#cloud-config\n\nset_timezone: America/Detroit\n\n--MIMEBOUNDARY--\n"
Weitere Beispiele und Informationen zu Windows-Benutzerdaten finden Sie in der Dokumentation Cloudbase-init 1.0.
Benutzerdatenbeispiele für Fedora Core OS
Die folgenden Beispiele zeigen Benutzerdaten, die an eine Fedora Core-Betriebssysteminstanz übergeben werden können.
Die Benutzeranmeldung „root“ ist in Fedora Core OS standardmäßig inaktiviert. Die Benutzeranmeldung „core“ kann für die Anmeldung bei Fedora Core OS-Instanzen verwendet werden.
Fedora Core OS-Benutzerdaten müssen im Ignition-Format vorliegen.
Verwenden Sie das folgende Beispiel, um eine Fedora Core-Betriebssysteminstanz zu booten
ibmcloud is instance-create $NAME $VPC $ZONE $PROFILE $SUBNET --image-id $IMAGE --key-ids $SSHKEY --user-data @example.ign
Verwenden Sie das folgende Beispiel, um einen lokalen Benutzer zu erstellen:
-
Schreiben Sie die Butane-Konfiguration im YAML-Format.
Butane-Konfiguration
variant: fcos version: 1.4.0 passwd: users: - name: demouser -
Verwenden Sie Butane, um die Butane-Konfiguration in eine Ignition-Konfiguration zu konvertieren.
Ignition-Konfiguration
"ignition": { "version": "1.4.0" }, "passwd": { "users": [ { "name": "demouser" } ] } }
Verwenden Sie die folgenden Beispielbenutzerdaten, um einen SSH-Schlüssel für einen lokalen Benutzer hinzuzufügen.
-
Schreiben Sie die Butane-Konfiguration im YAML-Format.
Butane-Konfiguration
variant: fcos version: 1.4.0 passwd: users: - name: demouser ssh_authorized_keys: - <ssh public key> -
Verwenden Sie Butane, um die Butane-Konfiguration in eine Ignition-Konfiguration zu konvertieren.
Ignition-Konfiguration
"ignition": { "version": "1.4.0" }, "passwd": { "users": [ { "name": "demouser", "sshAuthorizedKeys": [ "<ssh public key>" ] } ] } }
Weitere Beispiele und Informationen zu Fedora Core OS-Benutzerdaten finden Sie in der Dokumentation zum Fedora-Projekt.
Nächste Schritte
Nach der Auswahl eines Profils können Sie eine Instanz planen und erstellen.