U kunt een cloudConfig-sectie toevoegen aan de code van een Automation Assembler-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 Automation Assembler 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 VMware Aria 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.
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 Automation Assembler voor een voorbeeld van interactie tussen opdrachten en aanpassingsspecificaties.