설명
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로 사용할 템플릿을 지정합니다. 템플릿의 유효성과 접근 권한도 확인해야 합니다.