cloudConfig セクションを Automation Assembler クラウド テンプレート コードに追加して、展開時に実行されるマシン初期化コマンドを追加できます。
cloudConfig コマンドの形式
- Linux:初期化コマンドはオープン スタンダードの cloud-init に基づきます。
- Windows:初期化コマンドは Cloudbase-init を使用します。
Linux の cloud-init と Windows の Cloudbase-init は同じ構文を共有しません。一方のオペレーティング システムの cloudConfig セクションは、もう一方のオペレーティング システムのマシン イメージでは動作しません。
cloudConfig コマンドの機能
初期化コマンドを使用して、インスタンスの作成時にデータまたは設定の適用を自動化します。これにより、ユーザー、権限、インストール、または他のコマンドベースの操作をカスタマイズできます。次に例を示します。
- ホスト名の設定
- SSH プライベート キーの生成と設定
- パッケージのインストール
cloudConfig コマンドを追加できる場所
cloudConfig セクションはクラウド テンプレート コードに追加できますが、あらかじめ、インフラストラクチャの構成時にマシン イメージに追加することもできます。これにより、そのソース イメージを参照するすべてのクラウド テンプレートに同じ初期化が行われます。
イメージ マップとクラウド テンプレートの両方に初期化コマンドが含まれている場合があります。展開時、これらのコマンドはマージされ、Automation Assembler が統合されたコマンドを実行します。
どちらにも同じコマンドが含まれているものの、パラメータが異なる場合は、イメージ マップのコマンドのみが実行されます。
詳細については、VMware Aria Automation でのイメージ マッピングの詳細を参照してください。
cloudConfig コマンドの構文
cloudConfig コマンドに誤りがあると、リソースが正しく構成されないことや、予期しない動作をすることがあります。
#cloud-config
ステートメントに構文エラーがある場合に展開をキャンセルするには、次のプロパティを追加します。
cloudConfigSettings: deploymentFailOnCloudConfigRuntimeError: true
次のクラウド テンプレートでは、- mkdir
コマンドが runcmd:
の下の新しい行に置かれるという要件を満たしていないため、ディレクトリは作成されません。deploymentFailOnCloudConfigRuntimeError: true
プロパティにより、エラーが原因で展開は失敗します。
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
このプロパティを省略するか false
に設定すると、cloudConfig コマンドが失敗しても展開は続行されます。
また、このプロパティには #cloud-config
行が必要です。この行を省略すると、プロパティ設定に関係なく展開が続行されます。
正:
cloudConfigSettings: deploymentFailOnCloudConfigRuntimeError: true cloudConfig: | #cloud-config runcmd:- mkdir -p /tmp/test-dir
誤:
cloudConfigSettings: deploymentFailOnCloudConfigRuntimeError: true cloudConfig: | runcmd:- mkdir -p /tmp/test-dir
cloudConfig コマンドの例
次の cloudConfig セクションの例は、Linux ベースの MySQL サーバ用の WordPress の使用例のクラウド テンプレート コードから取得されています。
コマンドが正しく解釈されるように、以下に示すように必ずパイプ文字 cloudConfig: |
を含めてください。
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
cloud-init スクリプトが予期しない動作をする場合は、トラブルシューティングの際に /var/log/cloud-init-output.log
に取得されるコンソールの出力を確認してください。cloud-init の詳細については、cloud-init のドキュメントを参照してください。
コマンドとカスタマイズ仕様が共存できない可能性について
vSphere に展開する場合、組み込みの cloudConfig コマンドとカスタマイズ仕様による初期化を組み合わせるときは作業に注意が必要です。これらは正式には互換性がなく、組み合わせて使用すると、一貫性のない結果、または望ましくない結果が生じる場合があります。
コマンドとカスタマイズ仕様の関係の例については、Automation Assembler の vSphere 固定 IP アドレスを参照してください。