본문 바로가기

Data/Data Engineering

[Terraform] gitlab CI/CD local terminal 에서 실행해보기

반응형

아직 모르는게 많지만, 아는범위내에서 정리해보고자 한다.

먼저 CI/CD란... DevOps에서는 매우 중요한 작업중에 하나인데 그 의미를 간단하게 살펴보자면

CI (Continuous Integration)

직역하자면, "지속적인 통합"이라는 뜻. 하나의 프로젝트에서는 여러명의 개발자가 붙게되는데, 작업을 하면서 빌드/테스트/병합까지 수동으로 하려면 매우 번거로운 작업이된다. 따라서 이렇게 번거로운 작업을 "자동화"를 해주는것이 CI이다.

(*이러한 자동화 작업중에, 원천 소스코드의 충돌등을 방어 또한 할수있다)

CD (Continuous Delivery & Continuous Deployment)

다음으로 CD라는건, 위에서 CI테스트를 다 통과를하면, 실제로 서비스까지 프로덕트를 배포해주는것까지를 자동화해주는걸 의미한다.

 

아래와같이 gitlab에서 CI/CD 기능을 활용할수있는데

  • build는 CI 가 되는것이고
  • deploy는 CD가 되는것이다

gitlab에서는 CI/CD를 사용하기 위해서는 CI/CD쪽의 Editor를 통해서 만들수가있다

프로젝트를 처음만들때 terraform관련 프로젝트를 설정하면 자동으로 CI/CD관련 파일이 생성된다고는 하는데 정확한건 해봐야할것같다...

 

사실 이번 포스팅은 이미 terraform을 위한 gitlab CI/CD는 만들어진 상태를 가정하고 쓰는 글이긴하다

 

추가로 AWS Terraform을 사용할때, ACCESS_KEY, SECRET_KEY를 평문으로 기입하기 싫다면, gitlab 레포안에 Setting - CI/CD로 들어가서 Variable안에 정보값을 넣어주면된다

local에서 gitlab에 commit을 통하여 CI/CD를 테스트하는것을 꺼려한다면 아래와같은 명령어로 간단하게 실행해볼수있다. gitlab CI/CD에는 기록이 남지않는다.

 

또한, 해당 명령어를 실행하기 위해선 최초로 CI/CD를 한번 실행해줘야한다. 그리고 아래이미지와 같은 메뉴(Infrastructure-Terraform)안에 들어가게되면 states가 존재해야한다.

명령어중 내가 기입해야하는 정보를 정리하자면

  • PROJECT_NUMBER
    • gitlab 프로젝트 레포를 열면 밑에 "Project ID"가 나오는데 이값을 넣어주면된다

  • YOUR_STATE
    • 위에서 설명한 Infrastructure-Terraform안에있는 State이름을 넣어주면된다. 정확한지 모르겠지만 아마 branch명을 따라가는것같다
  • PASSWORD
    • gitlab 레포안에서 Setting - Access Tokens에서 생성할수있다
terraform init \
	-backend-config="address=https://gitlab.com/api/v4/projects/<PROJECT_NUMBER>/terraform/state/<YOUR_STATE>” \
	-backend-config="lock_address=https://gitlab.com/api/v4/projects/<PROJECT_NUMBER>/terraform/state/<YOUR_STATE>/lock" \
	-backend-config="unlock_address=https://gitlab.com/api/v4/projects/<PROJECT_NUMBER>/terraform/state/<YOUR_STATE>/lock" \
	-backend-config="username=jaeyung1001” \
    -backend-config="password=<PASSWORD>" \
    -backend-config="lock_method=POST" \
    -backend-config="unlock_method=DELETE" \
    -backend-config="retry_wait_min=5"

 

 

반응형