Sie können einen cloudConfig-Abschnitt im Automation Assembler-Vorlagencode einfügen, dem Sie zur Bereitstellungszeit auszuführende Initialisierungsbefehle für Maschinen hinzufügen.
cloudConfig-Befehlsformate
- Linux – Initialisierungsbefehle folgen dem offenen cloud-init-Standard.
- Windows – Initialisierungsbefehle verwenden Cloudbase-init.
Linux cloud-init und Windows Cloudbase-init verwenden nicht dieselbe Syntax. Ein cloudConfig-Abschnitt für ein Betriebssystem funktioniert nicht in einem Maschinen-Image des anderen Betriebssystems.
Anwendungsmöglichkeiten von cloudConfig-Befehlen
Sie verwenden Initialisierungsbefehle, um die Anwendung von Daten oder Einstellungen zum Zeitpunkt der Instanzerstellung zu automatisieren, wodurch Benutzer, Berechtigungen, Installationen oder andere befehlsbasierte Vorgänge angepasst werden können. Zu den Beispielen gehören:
- Festlegen eines Hostnamens
- Erstellen und Einrichten von privaten SSH-Schlüsseln
- Installieren von Paketen
Möglichkeiten für das Hinzufügen von cloudConfig-Befehlen
Sie können einen cloudConfig-Abschnitt dem Cloud-Vorlagencode hinzufügen, aber Sie können einen solchen Abschnitt auch im Voraus einem Maschinen-Image hinzufügen, wenn Sie die Infrastruktur konfigurieren. Alle Cloud-Vorlagen, die auf dieses Quell-Image verweisen, erhalten dieselbe Initialisierung.
Möglicherweise verfügen Sie über eine Image-Zuordnung und eine Cloud-Vorlage, die beide Initialisierungsbefehle enthalten. Zum Zeitpunkt der Bereitstellung werden die Befehle zusammengeführt. Die konsolidierten Befehle werden dann von Automation Assembler ausgeführt.
Wenn derselbe Befehl an beiden Positionen angezeigt wird, aber unterschiedliche Parameter enthält, wird nur der Image-Zuordnungsbefehl ausgeführt.
Zusätzliche Informationen hierzu finden Sie unter Weitere Informationen zu Image-Zuordnungen in VMware Aria Automation.
Syntax in cloudConfig-Befehlen
Fehlerhafte cloudConfig-Befehle können dazu führen, dass eine Ressource nicht ordnungsgemäß konfiguriert ist oder sich unvorhersehbar verhält.
Fügen Sie folgende Eigenschaft hinzu, um die Bereitstellung im Fall eines Syntaxfehlers in #cloud-config
-Anweisungen abzubrechen.
cloudConfigSettings: deploymentFailOnCloudConfigRuntimeError: true
In der folgenden Cloud-Vorlage befindet sich der Befehl - mkdir
nicht wie gefordert in einer neuen Zeile unter runcmd:
, sodass das Verzeichnis nie erstellt wird. Wegen des Fehlers schlägt die Eigenschaft deploymentFailOnCloudConfigRuntimeError: true
in der Bereitstellung fehl.
formatVersion: 1 inputs: {} resources: Cloud_vSphere_Machine_1: type: Cloud.vSphere.Machine properties: image: img1 cpuCount: 1 totalMemoryMB: 1024 cloudConfigSettings: deploymentFailOnCloudConfigRuntimeError: true cloudConfig: | #cloud-config runcmd:- mkdir -p /tmp/test-dir
Wenn Sie die Eigenschaft weglassen oder auf false
festlegen, wird die Bereitstellung auch dann fortgesetzt, wenn die cloudConfig-Befehle fehlschlagen.
Darüber hinaus benötigt die Eigenschaft die Zeile #cloud-config
. Wenn Sie die Zeile weglassen, wird die Bereitstellung unabhängig von der Einstellung der Eigenschaft fortgesetzt.
Richtig:
cloudConfigSettings: deploymentFailOnCloudConfigRuntimeError: true cloudConfig: | #cloud-config runcmd: - mkdir -p /tmp/test-dir
Falsch:
cloudConfigSettings: deploymentFailOnCloudConfigRuntimeError: true cloudConfig: | runcmd: - mkdir -p /tmp/test-dir
Beispiel für cloudConfig-Befehle
Der folgende cloudConfig-Beispielabschnitt stammt aus dem Cloud-Vorlagencode des WordPress-Anwendungsbeispiels für den Linux-basierten MySQL-Server.
Um die korrekte Interpretation von Befehlen zu gewährleisten, fügen Sie immer einen senkrechten Strich (cloudConfig: |
) hinzu, wie in der Abbildung gezeigt.
cloudConfig: | #cloud-config repo_update: true repo_upgrade: all packages: - apache2 - php - php-mysql - libapache2-mod-php - php-mcrypt - mysql-client runcmd: - mkdir -p /var/www/html/mywordpresssite && cd /var/www/html && wget https://wordpress.org/latest.tar.gz && tar -xzf /var/www/html/latest.tar.gz -C /var/www/html/mywordpresssite --strip-components 1 - i=0; while [ $i -le 5 ]; do mysql --connect-timeout=3 -h ${DBTier.networks[0].address} -u root -pmysqlpassword -e "SHOW STATUS;" && break || sleep 15; i=$((i+1)); done - mysql -u root -pmysqlpassword -h ${DBTier.networks[0].address} -e "create database wordpress_blog;" - mv /var/www/html/mywordpresssite/wp-config-sample.php /var/www/html/mywordpresssite/wp-config.php - sed -i -e s/"define( 'DB_NAME', 'database_name_here' );"/"define( 'DB_NAME', 'wordpress_blog' );"/ /var/www/html/mywordpresssite/wp-config.php && sed -i -e s/"define( 'DB_USER', 'username_here' );"/"define( 'DB_USER', 'root' );"/ /var/www/html/mywordpresssite/wp-config.php && sed -i -e s/"define( 'DB_PASSWORD', 'password_here' );"/"define( 'DB_PASSWORD', 'mysqlpassword' );"/ /var/www/html/mywordpresssite/wp-config.php && sed -i -e s/"define( 'DB_HOST', 'localhost' );"/"define( 'DB_HOST', '${DBTier.networks[0].address}' );"/ /var/www/html/mywordpresssite/wp-config.php - service apache2 reload
Wenn ein cloud-init-Skript unerwartetes Verhalten aufweist, überprüfen Sie die erfasste Konsolenausgabe in /var/log/cloud-init-output.log
zur Fehlerbehebung. Weitere Informationen zu cloud-init finden Sie in der cloud-init-Dokumentation.
Befehle und Anpassungsspezifikationen lassen sich möglicherweise nicht kombinieren
Gehen Sie bei der Bereitstellung in vSphere umsichtig vor, wenn Sie versuchen, einen eingebetteten cloudConfig-Befehl mit der Initialisierung der Anpassungsspezifikation zu kombinieren. Sie sind in formaler Hinsicht nicht kompatibel und verursachen möglicherweise inkonsistente oder unerwünschte Ergebnisse, wenn sie gemeinsam verwendet werden.
Ein Beispiel dafür, wie Befehle und Anpassungsspezifikationen interagieren, finden Sie unter Statische vSphere-IP-Adressen in Automation Assembler.