您可以向 Cloud Assembly 範本代碼新增 cloudConfig 區段,並在該區段中新增您在部署時執行的機器初始化命令。

備註: Linux cloud-init 和 Windows Cloudbase-init 不共用相同的語法。一個作業系統的 cloudConfig 區段在另一個作業系統的機器映像中不起作用。

您可以使用初始化命令在建立執行個體時自動套用資料或設定,這樣可以自訂使用者、權限、安裝和命令執行。範例包括:

  • 設定主機名稱
  • 產生並設定 SSH 私密金鑰
  • 安裝套件

Cloud Assembly 中,您也可以在設定基礎結構時預先將初始化命令新增至機器映像。參考來源映像的所有雲端範本都會進行相同的初始化。

重要: 您可能有一個映像對應和一個雲端範本,且兩者皆包含初始化命令。在部署時,兩個命令將合併,並且 Cloud Assembly 會執行合併的命令。

當兩個命令中出現相同的命令但包含不同的參數時,系統僅執行映像對應命令。

如需其他詳細資料,請參閱進一步瞭解 vRealize Automation Cloud 中的映像對應

下列範例 cloudConfig 區段取自適用於 Linux 系統的 MySQL 伺服器的 WordPress 使用案例雲端範本代碼。

若要確保正確解譯命令,請一律包括管道字元 cloudConfig: |,如下所示。

如果 cloud-init 指令碼行為異常,請在疑難排解時檢查 /var/log/cloud-init-output.log 中已擷取的主控台輸出。如需有關 cloud-init 的詳細資訊,請參閱 cloud-init 說明文件

      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