次に示す Automation Assembler のプラグイン ベースの簡単な例では、コンピューティング ヘルパーとイメージ ヘルパーが仮想マシンの配置とゲスト OS を制御します。

注: プラグイン ベース デザインはベータ版であり、変更される可能性があります。現在は、AWS プラグインと Google Cloud Platform (GCP) プラグインのみがサポートされています。

1. アカウントとゾーン インフラストラクチャを追加する

クラウド ゾーン us-east-1 と us-west-2 で AWS クラウド アカウントを追加します。また、それぞれのゾーンに region-east および region-west というタグを付けます。

2. イメージ マッピング インフラストラクチャを追加する

ubuntu イメージ マップを 1 つ追加します。このイメージ マップは、ゾーンに応じて識別子が異なるイメージを参照します。

イメージ マッピング

3. プロジェクトを追加する

プロジェクトを作成します。プロジェクトの [プロビジョニング] に 2 つのゾーンを追加します。

4. デザインを開始する

Automation Assembler[デザイン] タブで、空のキャンバスから新しいデザインを開始します。

5. キャンバスにヘルパーを追加する

コンピューティング ヘルパーとイメージ ヘルパーをキャンバスにドラッグします。

キャンバスへの割り当てヘルパーのドラッグ

6. ヘルパーを構成する

ヘルパーのコードに ubuntu イメージと、region-west に一致する制約タグを追加します。従来のワークフローでは、これらのプロパティはリソースに直接追加していました。

  Allocations_Image_1:
    type: Allocations.Image
    properties:
      image: ubuntu
  Allocations_Compute_1:
    type: Allocations.Compute
    properties:
      constraints: 
        - tag: region-west

7. キャンバスに仮想マシン リソースを追加する

AWS EC2 リソースをキャンバスにドラッグします。これは (Classic) リソースではないことに注意してください。新しいリソースのコードには特殊なプリフィックスが付いています。

キャンバスへの EC2 リソースのドラッグ

8. リソースをヘルパーにいバインドする

EC2 のコードに、ヘルパーによって定義された以前のインフラストラクチャを参照するバインドを追加します。選択はヘルパーによって行われるため、このバインドには selected という単語が含まれています。

  Idem_AWS_EC2_INSTANCE_1:
    type: Idem.AWS.EC2.INSTANCE
    properties:
      name: bnixInstance
      account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
      region: ${resource.Allocations_Compute_1.selectedRegion.name}
      image_id: ${resource.Allocations_Image_1.selectedImageId}
      instance_type: t1.micro

バインドを追加すると、デザイン キャンバス上のリソースとそのヘルパーが点線で接続されます。

9. テンプレートを完成させる

完成したテンプレートでは次のコードが使用されます。EC2 リソースに instance_type: t1.micro を直接追加する代わりに、フレーバー マッピング インフラストラクチャを構成してフレーバー ヘルパーを使用する方法もあります。

formatVersion: 1
inputs: {}
resources:
  Allocations_Image_1:
    type: Allocations.Image
    properties:
      image: ubuntu
  Allocations_Compute_1:
    type: Allocations.Compute
    properties:
      constraints: 
        - tag: region-west
  Idem_AWS_EC2_INSTANCE_1:
    type: Idem.AWS.EC2.INSTANCE
    properties:
      name: bnixInstance
      account: ${resource.Allocations_Compute_1.selectedCloudAccount.name}
      region: ${resource.Allocations_Compute_1.selectedRegion.name}
      image_id: ${resource.Allocations_Image_1.selectedImageId}
      instance_type: t1.micro

AWS の EC2 ネイティブ プロパティはこの後さらに詳細に構成できます。または、完成したテンプレートをこのままテストして展開します。