U kunt een cloudConfig-sectie toevoegen aan de code van een Cloud Assembly-sjabloon, waarin u machine-initialisatieopdrachten toevoegt die worden uitgevoerd tijdens de implementatie.

cloudConfig-opdrachtnotaties

  • Linux — initialisarieopdrachten volgen de open cloud-init-standaard.
  • Windows — initialisatieopdrachten maken gebruik van Cloudbase-init.

cloud-init voor Linux en cloudbase-init voor Windows hebben niet dezelfde syntaxis. Een sectie cloudConfig voor één besturingssysteem werkt niet in een machine-image van het andere besturingssysteem.

Wat cloudConfig-opdrachten kunnen doen

U gebruikt initialisatieopdrachten om de applicatie van gegevens of instellingen te automatiseren tijdens het maken van een instantie, waarmee gebruikers, rechten, installaties of andere bewerkingen op basis van opdrachten kunnen worden aangepast. Voorbeelden zijn:

  • Een hostnaam instellen
  • Persoonlijke SSH-sleutels genereren en instellen
  • Pakketten installeren

Waar cloudConfig-opdrachten kunnen worden toegevoegd

U kunt een cloudConfig-sectie toevoegen aan de code van een cloudsjabloon, maar u kunt er vooraf ook een aan een machine-image toevoegen bij het configureren van de infrastructuur. Alle cloudsjablonen die naar de bronimage verwijzen, krijgen dan dezelfde initialisatie.

Mogelijk hebt u een imagetoewijzing en een cloudsjabloon die allebei initialisatieopdrachten bevatten. Tijdens de implementatie worden de opdrachten samengevoegd en voert Cloud Assembly de geconsolideerde opdrachten uit.

Wanneer dezelfde opdracht op beide plaatsen wordt weergegeven maar andere parameters bevat, wordt alleen de opdracht van de imagetoewijzing uitgevoerd.

Zie Meer informatie over imagetoewijzingen in vRealize Automation voor meer informatie.

Syntaxis in cloudConfig-commando's

CloudConfig-commando's kunnen resulteren in een resource die niet correct is geconfigureerd of onvoorspelbaar werkt.

Als u een implementatie wilt annuleren wanneer er een syntaxisfout in #cloud-config-instructies staat, voegt u de volgende eigenschap toe.

      cloudConfigSettings:
        deploymentFailOnCloudConfigRuntimeError: true

In de volgende cloudsjabloon staat het commando - mkdir niet op een nieuwe regel onder runcmd: zoals vereist, waardoor de directory nooit wordt gemaakt. De implementatie mislukt met de eigenschap deploymentFailOnCloudConfigRuntimeError: true vanwege de fout.

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

Als u de eigenschap weglaat of instelt op false, wordt de implementatie voortgezet, ook als cloudConfig-commando's mislukken.

Bovendien vereist de eigenschap de regel #cloud-config. Als u de regel weglaat, wordt de implementatie voortgezet, ongeacht de instelling van de eigenschap.

Juist:

      cloudConfigSettings:
        deploymentFailOnCloudConfigRuntimeError: true
      cloudConfig: |
        #cloud-config
        runcmd:- mkdir -p /tmp/test-dir

Onjuist:

      cloudConfigSettings:
        deploymentFailOnCloudConfigRuntimeError: true
      cloudConfig: |
        runcmd:- mkdir -p /tmp/test-dir

Voorbeeld van cloudConfig-opdrachten

Het volgende voorbeeld van een cloudConfig-sectie komt uit de cloudsjablooncode van het WordPress-gebruiksscenario voor de op Linux gebaseerde MySQL-server.

Opmerking:

Om de juiste interpretatie van commando's te garanderen, moet u altijd het sluisteken cloudConfig: | toevoegen, zoals getoond.

      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

Als een cloud-init-script zich onverwacht gedraagt, controleert u de vastgelegde console-uitvoer in /var/log/cloud-init-output.log bij het oplossen van problemen. Zie de documentatie voor cloud-init voor meer informatie over cloud-init.

Opdrachten en aanpassingsspecificaties kunnen mogelijk niet door elkaar worden gebruikt

Wanneer u in vSphere implementeert, moet u goed opletten als u initialisatie van de ingesloten cloudConfig-opdracht en aanpassingsspecificaties probeert te combineren. Deze zijn niet formeel compatibel en kunnen inconsistente of ongewenste resultaten opleveren wanneer deze samen worden gebruikt.

Zie Statische IP-adressen van vSphere in Cloud Assembly voor een voorbeeld van interactie tussen opdrachten en aanpassingsspecificaties.