Vous pouvez ajouter une section cloudConfig au code de modèle de cloud Automation Assembler, où vous ajoutez des commandes d'initialisation de machine qui s'exécutent au moment du déploiement.

Formats de commande cloudConfig

  • Linux : les commandes d'initialisation suivent la norme cloud-init ouverte.
  • Windows : les commandes d'initialisation utilisent Cloudbase-init.

Les commandes cloud-init de Linux et Cloudbase-init de Windows ne partagent pas la même syntaxe. Une section cloudConfig pour l'un des systèmes d'exploitation ne fonctionnera pas dans une image de machine de l'autre système d'exploitation.

Possibilités des commandes cloudConfig

Les commandes d'initialisation vous permettent d'automatiser l'application des données ou des paramètres au moment de la création de l'instance, ce qui peut personnaliser les utilisateurs, les autorisations, les installations ou toute autre opération basée sur une commande. Les exemples incluent notamment :

  • Définition d'un nom d'hôte
  • Génération et configuration de clés privées SSH
  • Installation des modules

Où les commandes cloudConfig peuvent-elles être ajoutées

Vous pouvez ajouter une section cloudConfig au code de modèle de cloud, mais vous pouvez également en ajouter une à une image de machine à l'avance, lors de la configuration de l'infrastructure. Ensuite, tous les modèles de cloud qui font référence à l'image source obtiennent la même initialisation.

Vous pouvez disposer d'un mappage d'image et d'un modèle de cloud contenant tous deux des commandes d'initialisation. Au moment du déploiement, les commandes fusionnent et Automation Assembler exécute les commandes ainsi regroupées.

Lorsque la même commande figure dans les deux emplacements mais inclut des paramètres différents, seule la commande du mappage d'image est exécutée.

Consultez En savoir plus sur les mappages d'image dans VMware Aria Automation pour plus d'informations.

Syntaxe dans les commandes cloudConfig

Les commandes cloudConfig défectueuses peuvent entraîner une ressource qui n'est pas correctement configurée ou qui se comporte de manière imprévisible.

Pour annuler un déploiement en cas d'erreur de syntaxe dans les instructions #cloud-config, ajoutez la propriété suivante.

      cloudConfigSettings:
        deploymentFailOnCloudConfigRuntimeError: true

Dans le modèle de cloud suivant, la commande - mkdir n'est pas sur une nouvelle ligne sous runcmd: comme requis. Par conséquent, le répertoire ne sera jamais créé. La propriété deploymentFailOnCloudConfigRuntimeError: true fait échouer le déploiement en raison de l'erreur.

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

Si vous omettez la propriété ou si vous la définissez sur false, le déploiement se poursuit même si les commandes cloudConfig échouent.

En outre, la propriété requiert la ligne #cloud-config. Si vous omettez la ligne, le déploiement se poursuit quel que soit le paramètre de propriété.

Correct :

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

Incorrect :

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

Exemples de commandes cloudConfig

L'exemple de section cloudConfig suivant est extrait du code de modèle de cloud du cas d'utilisation de WordPress pour le serveur MySQL basé sur le système d'exploitation Linux.

Note :

Pour garantir une interprétation correcte des commandes, incluez toujours le caractère cloudConfig: | (barre verticale) comme indiqué.

      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

Si un script cloud-init se comporte de manière inattendue, vérifiez la sortie de la console capturée dans /var/log/cloud-init-output.log lors du dépannage. Pour plus d'informations sur cloud-init, reportez-vous à la documentation cloud-init.

Les commandes et les spécifications de personnalisation peuvent ne pas mélanger

Lors d'un déploiement sur vSphere, procédez avec prudence si vous tentez de combiner une commande intégrée cloudConfig et l'initialisation de spécification de personnalisation. Ils ne sont pas officiellement compatibles et peuvent produire des résultats incohérents ou indésirables lorsqu'ils sont utilisés ensemble.

Pour obtenir un exemple de l'interaction entre les commandes et les spécifications de personnalisation, consultez Adresses IP statiques vSphere dans Automation Assembler.