소개
Forge는 AWS CloudFormation 스택 배포를 간소화하는 Go 기반 도구입니다. nathandines가 개발했으며, 지속적 배포 환경에서 스택의 생성, 업데이트, 삭제를 동기화하여 실행하고 배포 상태를 반영하는 종료 코드를 제공합니다. YAML 또는 JSON 형식의 파라미터 및 태그 파일을 지원하며, 환경 변수 치환과 스택 정책 정의를 통해 유연한 배포를 가능하게 합니다.
상세정보
파라미터 및 태그 관리
Forge는 YAML 또는 JSON 형식의 파라미터 및 태그 파일을 통해 CloudFormation 템플릿에 값을 전달합니다. 파라미터 파일 내의 리스트는 자동으로 CommaDelimitedList로 변환되어 전달되며, 필요한 파라미터만 사용되어 파라미터 파일을 여러 스택 간에 공유할 수 있습니다. 또한, 환경 변수를 {{ env `variable_name` }} 형식으로 파라미터 및 태그 파일에 직접 삽입할 수 있어, 배포 환경에 따라 동적으로 값을 주입할 수 있습니다.
동기화된 스택 작업 및 이벤트 출력
이 도구는 CloudFormation 스택에 대한 작업(생성, 업데이트, 삭제)을 동기화하여 실행하며, 작업 중 발생하는 스택 이벤트를 명령줄에 실시간으로 출력합니다. 이를 통해 사용자는 배포 진행 상황을 즉시 확인할 수 있으며, 작업이 완료된 후 최종 스택 상태에 기반한 종료 코드를 반환하여 스크립트 내 오류 처리가 가능합니다.
스택 상태 기반 자동 작업 결정
Forge는 기존 스택의 상태를 자동으로 감지하여, 스택이 존재하지 않으면 생성하고, 존재하면 업데이트를 시도합니다. 업데이트가 필요한 변경 사항이 없을 경우에도 이를 오류가 아닌 정상 상태로 처리하여, 배포 파이프라인에서 불필요한 중단을 방지합니다. 또한, 배포 시 종료 보호를 활성화하거나, 다른 계정으로 배포하기 위해 IAM 역할을 가정하여 실행할 수 있으며, MFA 인증도 지원합니다.
Windows에서의 설치
Windows 사용자는 Chocolatey 패키지 관리자를 통해 Forge를 쉽게 설치할 수 있습니다. 관리자 권한으로 PowerShell을 열고 다음 명령을 실행하면 됩니다:
choco install forge
설치 후, Forge 실행 파일이 시스템 PATH에 등록되어야 정상적으로 사용할 수 있습니다. PATH 설정이 되지 않은 경우, %USERPROFILE%bin 또는 %PROGRAMDATA%bin에 파일을 두고 해당 디렉터리를 시스템 환경 변수 PATH에 추가해야 합니다.
기타 운영 체제에서의 설치
macOS에서는 Homebrew를 사용하여 다음 명령으로 설치할 수 있습니다:
brew tap nathandines/tap
brew install forge
다른 운영 체제에서는 GitHub 릴리스 페이지에서 최신 바이너리를 다운로드한 후, 실행 가능한 파일을 PATH에 포함된 디렉터리(예: ~/bin 또는 /usr/local/bin)로 이동하고, 파일 이름을 forge로 이름을 변경해야 합니다.
기본 사용법/명령어
Forge를 사용하여 CloudFormation 스택을 배포하는 기본 워크플로우는 다음과 같습니다. 먼저, AWS CLI를 통해 인증 환경을 설정해야 합니다. Forge는 AWS 환경 변수(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY 등) 또는 AWS_DEFAULT_PROFILE를 통해 인증을 받습니다.
예를 들어, test-stack이라는 이름의 스택을 배포하려면, 템플릿, 파라미터, 태그 파일을 준비한 후 다음 명령을 실행합니다:
forge deploy --stack-name test-stack
--template-file ./cfn_template.yml
--tags-file ./tags.yml
--parameters-file ./parameters1.yml
--parameters-file ./parameters2.yml
이 명령을 실행하면, Forge는 지정된 템플릿과 파라미터를 바탕으로 스택을 생성하거나 업데이트하며, 콘솔에 스택 이벤트를 실시간으로 출력합니다. 배포가 완료되면, 종료 코드를 통해 성공 여부를 확인할 수 있습니다.
환경 변수 사용 예시
파라미터 또는 태그 파일 내에서 환경 변수를 참조하려면, 다음과 같이
{{ env `variable_name` }}형식을 사용해야 합니다. 예를 들어, YAML 파일에는 다음과 같이 작성해야 합니다(중괄호는 따옴표로 감싸야 문자열로 인식됨):---
Environment: '{{ env `ENVIRONMENT` }}'
Owner Email: '{{ env `USER` }}@example.com'
지원 환경·시스템 요구사항
Forge는 Go 언어로 작성되어 있으며, Windows, macOS, Linux 등 주요 운영 체제에서 실행할 수 있습니다. Windows에서는 Chocolatey를 통해 설치가 가능하며, 다른 플랫폼에서는 Homebrew 또는 수동 바이너리 다운로드를 통해 설치할 수 있습니다. 실행에는 별도의 런타임이 필요하지 않으며, 단일 실행 파일로 제공됩니다. 단, AWS 자격 증명에 대한 접근이 필요하므로, AWS CLI 또는 환경 변수를 통해 인증이 선행되어야 합니다.
최신 버전·업데이트
현재 버전은 2.3.0이며, 최신 릴리스 정보 및 변경 사항은 GitHub 저장소의 릴리스 페이지에서 확인할 수 있습니다.
시스템 요구사항
별도의 시스템 요구사항이 등록되지 않았습니다.


