Mit cloud-init booten

Überblick

Cloud-init ist ein Softwarepaket, das die Initialisierung von Servern während des Systemstarts automatisiert. Wenn Sie einen neuen Linux-Server aus einem Image bereitstellen, bietet cloud-init Ihnen die Möglichkeit, Standard-Benutzerdaten festzulegen. Die Benutzerdaten müssen in Shell-Skripten oder cloud-config-Direktiven mit YAML-Syntax geschrieben werden.

Diese Methode ist plattformübergreifend hochkompatibel und absolut sicher. Kompatibilität: Dieser Service wird auf allen öffentlichen centron ccloud Linux-Distributionen (Debian, CentOS und Ubuntu) unterstützt. Sie können Benutzerdaten über das ccenter oder über die ccloud API übermitteln. Bestehende Cloud-Init-Konfigurationen von anderen Anbietern sind mit centron ccloud kompatibel.

Beschränkungen

Cloud-init ist auf allen öffentlichen Images verfügbar, die von centron ccloud bereitgestellt werden. Wenn Sie Ihr eigenes Linux-Image verwenden möchten, vergewissern Sie sich bitte zuerst, dass es Cloud-init unterstützt. Andernfalls gibt es keine Garantie, dass das Paket wie vorgesehen funktioniert. Windows-Images werden derzeit nicht unterstützt; ihre Aufnahme kann zu einem späteren Zeitpunkt in Betracht gezogen werden.

Bereitstellung

Cloud-init kann nur bei der Erstbereitstellung festgelegt werden. Sie kann nicht auf Instanzen angewendet werden, die bereits bereitgestellt wurden. Die Einstellungen können nach der Bereitstellung nicht mehr geändert werden.

Unterstützte Formate

Dieses Tutorial demonstriert die Verwendung der Skripte cloud-config und user-data. Das cloud-init-Paket unterstützt jedoch eine Vielzahl von Formaten.

FormatBeschreibung

Base64

Wenn die Benutzerdaten base64-kodiert sind, stellt cloud-init fest, ob es die dekodierten Daten als einen der unterstützten Typen verstehen kann. Wenn es die dekodierten Daten versteht, dekodiert es die Daten und behandelt sie entsprechend. Wenn nicht, werden die base64-Daten unverändert zurückgegeben.

User-Data Script

Beginnt mit #! oder Content-Type: text/x-shellscript. Das Skript wird von /etc/init.d/cloud-init-user-scripts während des ersten Bootvorgangs ausgeführt. Dies geschieht am Ende des Bootvorgangs (nachdem die ersten Konfigurationsmaßnahmen durchgeführt wurden).

Include File

Beginnt mit #include oder Content-Type: text/x-include-url. Die Datei enthält eine Liste von URLs, eine pro Zeile. Jede der URLs wird gelesen, und ihr Inhalt wird durch denselben Satz von Regeln geleitet. Der aus der URL gelesene Inhalt kann MIME-multi-part oder Klartext sein.

Cloud Config data

Beginnt mir #cloud-config oder Content-Type: text/cloud-config. Ein kommentiertes Beispiel für die unterstützten Konfigurationsformate finden Sie in den Beispielen.

Upstart Job

Beginnt mit #upstart-job oder Content-Type: text/upstart-job.

Der Inhalt wird in/etc/init gespeichert und upstart konsumiert den Inhalt wie bei anderen upstart-Aufträgen.

Cloud Boothook

Beginnt mit #cloud-boothook oder Content-Type: text/cloud-boothook.

Dieser Inhalt ist eine boothook Datei. Er befindet sich unter /var/lib/cloud und startet sofort. Dies ist die früheste verfügbare Hook. Es ist kein Mechanismus vorgesehen, um ihn nur einmal auszuführen. Der Boothook muss sich selbst darum kümmern. Er wird mit der Instanz-ID in der Umgebungsvariablen INSTANCE_ID bereitgestellt. Verwenden Sie diese Variable, um einen einmaligen boothook-Datensatz pro Instanz bereitzustellen

Shell Scripts

Shell Skripte sind der einfachste Weg, einen Server zu bootstrappen. Das folgende Beispiel konfiguriert einen CentOS Webserver:

#!/bin/bash
# Use this for your user data (script from top to bottom)
# install httpd (Linux 2 version)
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "<h1>Hello World from $(hostname -f)</h1>" > /var/www/html/index.html

Lassen Sie der Instanz genügend Zeit, um zu starten und die Befehle in Ihrem Skript auszuführen, und überprüfen Sie dann, ob Ihr Skript die von Ihnen beabsichtigten Aufgaben erfüllt hat. Im obigen Beispiel wird ein Webserver installiert und die Standarddatei index.html neu geschrieben.

Um zu testen, ob cloud-init Ihre VM erfolgreich gebootet hat, können Sie die entsprechende IP-Adresse in Ihrem Browser öffnen. Sie sollten mit einer "Hello World"-Nachricht von Ihrem Webserver begrüßt werden.

Cloud-config directives

Cloud-init-Images können auch mit cloud-config-Direktiven gebootet werden. Auf der cloud-init-Website werden alle unterstützten Module beschrieben und Beispiele für grundlegende Direktiven gegeben.

Module

Beispiele

Beispiel 1: Swap Partition

Das folgende Code Schnipsel erläutert, wie eine eine Swap Partition mittels YAML Skript erstellt werden kann:

#cloud-config
fs_setup:
  - label: mylabel
    device: /dev/vda
    filesystem: ext4
  - label: swap
    device: /dev/vdb
    filesystem: swap
mounts:
- [ /dev/vda, /, ext4, defaults, 0, 0 ]
- [ /dev/vdb, none, swap, sw, 0, 0 ]

Beispiel 2: Größe des Filesystems ändern

Das folgende Skript beschreibt, wie mittels eines YAML Skripts Ihr File System angepasst werden kann:

#cloud-config
resize_rootfs: True
users:
  - name: pb-user
    gecos: Demo User
    sudo: ALL=(ALL) NOPASSWD:ALL
    groups: users, admin
    ssh_import_id: None
    lock_passwd: true
    ssh_authorized_keys:
      - ssh-rsa AAAA...

Output Log Files

Die Cloud-Init-Ausgabeprotokolldatei (/var/log/cloud-init-output.log) zeichnet die Konsolenausgaben auf. Je nach der Standardkonfiguration für die Protokollierung existiert eine zweite Protokolldatei unter /var/log/cloud-init.log..... . Dies bietet eine umfassende Aufzeichnung auf der Grundlage von Benutzerdaten.

Last updated