Sie können einen cloudConfig-Abschnitt im Cloud Assembly-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 Cloud Assembly 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 vRealize 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.

Hinweis:

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 Cloud Assembly.