CLI로 정적 빌드 파일 CICD 배포
AWS, Terraform, GH CLI 설치
AWS
같은 경우는 굳이 CLI
로 할 필요가 있나 생각이 들 수 있습니다. CLI
에서는 되지만 GUI
에서는 안되는 기능들이 있고 그러한 자동화를 하려면 CLI
가 필수이기 때문에 설치를 해줘야합니다.
- AWS CLI Install
저는 macOS를 사용중이고,
GUI Installer
로 설치하셔도 되지만 저는command line installer
로 진행을 했습니다. 둘이 차이는 없지만 CLI가 훨씬 빠르고 편하기 때문에 저는... 그리 진행하였습니다. 그리고 여기서All users
랑Current user
로 나뉘게 되는데 AWS CLI가 시스템 내에서 어떻게 접근 가능한지와 관련된 범위를 정의합니다. 쉽게 말하면 본인 개인 PC에서는All users
로 설치하시면 되고, 만약 회사 노트북을 사용하는데, 공유하는 노트북에 멀티 프로필을 사용하고 계시다면 current user로 진행하시면 될 것 같습니다.
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
aws --version
- Terraform CLI Install
저는
Homebrew
를 통해서 바로 설치 할 수 있었고, 설치 후 버전 확인만 하면 될 것 같습니다.
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
terraform --version
- GH CLI Install
저희가 기존에 사용하던
git commit
이 커맨드가 아닌 GithubPR
,issue
,레포지토리 시크릿 셋업
같은 작업을 CLI를 통해서 할 수 있도록 해주는 CLI 툴입니다.
brew install gh
Terraform 이란 ?
오픈 소스 인프라스트럭처 as Code(IaC) 소프트웨어 툴입니다. 구성 파일들은 HCL(HashiCorp Configuration Language)
로 작성되며 여러 클라우드 서비스(예: Amazon Web Services, Microsoft Azure, Google Cloud Platform) 및 온-프레미스 자원(예: VMware vSphere)을 포함한 다양한 서비스의 인프라를 안전하고 효율적으로 구축, 변경 및 버전 관리
할 수 있습니다.
- 자동화된 인프라 관리
- 복잡한 인프라의 간소화
- 멀티 클라우드 지원
- 버전 관리 및 협업
- 변경 계획 및 인사이트
AWS IAM 생성
앞서 설치한 AWS CLI
를 통해서 AWS Resoure
를 관리 및 제어를 하기 위해서 Identity and Access Management(IAM)
를 생성해서 엑세스 키를 만들어서 등록을 해줘야하는 과정이 필요하기 때문에 생성을 해줘야합니다.
PATH : AWS IAM
-> 액세서 관리
-> 사용자
-> 사용자 생성
- 사용자 이름 입력
- 권한 설정
- 그룹에 사용자 추가
- 권한 복사
- 직접 정책 연결
- 기존에 존재하던 그룹과 복사할 권한은 따로 없으므로 이 권한 옵션을 선택
AdministratorAccess
말 그대로 모든 권한을 위임하는 정책 ( 유출되면 굉장히 위험할 것 )
- 유저 생성
PATH : AWS IAM
-> 액세서 관리
-> 사용자
-> 생성된 사용자
-> 보안 자격 증명
-> 액세스 키
- Command Line Interface ( CLI ) 선택
- 설명 태그 ( optional ) 작성
- 액세스 키 생성 및 복사
그러면 아래 3개를 인지 혹은 가지고 계셔야합니다.
사용자 이름 ( User Name )
액세스 키
액세스 키 시크릿
AWS CLI Profile 설정
ap-northeast-2
가 서울이다.
aws configure --profile USER_NAME
AWS Access Key ID [None]: YOUR_ACCESS_KEY
AWS Secret Access Key [None]: YOUR_ACCESS_KEY_SECRET
Default region name [None]: ap-northeast-2
Default output format [None]: json