CloudFormation スタックのテンプレート入力の確認

新しいスタックにはテンプレートを渡し、既存テンプレートの意図した再利用と区別してください。

説明

Ansible で新しい CloudFormation スタックを作成するには、リソースを定義したテンプレートが必要です。テンプレートがなければ、新規作成は失敗します。

既存スタックの更新は異なります。amazon.aws.cloudformation は、新しいテンプレート入力を省略すると以前のテンプレートを再利用できます。スタックの削除にも新しいテンプレートは不要です。

想定される影響

  • 新規作成の失敗により、デプロイの処理が中断する場合があります。
  • 意図せず既存テンプレートを再利用すると、予定したリソース変更が反映されない場合があります。

対処方法

  • 新しいスタックには、template_body や template_url など、インストール済みモジュールが対応する入力を一つ指定してください。複数のテンプレート入力を重複して指定しないでください。
  • 既存スタックではテンプレートを再利用するか置き換えるかを明確にし、変更内容を確認してください。新しい StackSet の作成時にも、対象モジュールの必須テンプレート入力を渡してください。

例

既存の例は新しいスタックの作成を想定しています。URL をアクセス可能な実際のテンプレートに置き換え、パラメーターと値をそのテンプレートと環境に合わせてください。

変更前

yaml
- name: CloudFormation 스택 생성
  amazon.aws.cloudformation:
    stack_name: ansible-cloudformation
    state: present
    region: us-east-1
    disable_rollback: true
    template_parameters:
      KeyName: jmartin
      DiskType: ephemeral
      InstanceType: m1.small
      ClusterSize: 3
    tags:
      Stack: ansible-cloudformation

新しいスタックではテンプレートがなく、作成できません。既存スタックなら以前のテンプレートを再利用できるため、操作の目的を確認してください。

変更後

yaml
- name: CloudFormation 스택 생성
  amazon.aws.cloudformation:
    stack_name: ansible-cloudformation
    state: present
    region: us-east-1
    disable_rollback: true
    template_url: https://s3.amazonaws.com/my-bucket/cloudformation.template
    template_parameters:
      KeyName: jmartin
      DiskType: ephemeral
      InstanceType: m1.small
      ClusterSize: 3
    tags:
      Stack: ansible-cloudformation

template_url でテンプレートを指定します。テンプレートの有効性とアクセス権限も確認してください。

参考資料