[2022 AWS re:Invent] Manage your infrastructure with Terraform and GitHub Actions

세션 유형

Break out

세션명

Manage your infrastructure with Terraform and GitHub Actions

강연자
  • Emily Freeman
  • Cobus Bernard
  • Julie Gunderson
세션요약자

김지선(Jiseon Kim)

핵심내용 요약

Terraform 및 GitHub Actions를 사용하여 git을 통해 인프라 생성 및 업데이트를 관리하고 자동화

키워드
  1. CI/CD 파이프라인에 DevOps 방식 적용
  2. GitOps
상세내용

오픈소스 프로젝트 오픈서치의 혁신

기존의 각 팀은 서로에 대한 의존성으로 인해 업무가 밀리거나 막히는 일이 대다수이다.
이러한 경우 DevOps를 통해 해결할 수 있다. 
각자 독립된 업무를 하는 것이 아닌, 서로의 영역에 대해 겹치게 업무를 하면 보다 업무를 능률적으로 처리할 수 있다.

DevOps Practices

  • 지속적인 통합
  • 지속적인 배포
  • 마이크로 서비스
  • IaC
  • 모니터링과 로깅
  • 소통과 협업

해당 세션에서는 DevOps 중 IaC, GitOps라고도 부르는 파트에 대해 설명한다.

GitOps

인프라를 코드로 관리하여 코드 변경사항에 대해 자동화를 한다.

IaC

  • 개발자가 코드를 취급하는 것과 동일한 방식으로 인프라를 취급한다.
  • 구성은 선언적 방식으로 정의해야 한다.
  • 구성은 소스 제어 시스템에 저장해야 한다.

Tools

IaC를 이용한 GitOps를 수행할 때 아래와 같은 툴들이 존재한다.
본 세션에서는 Terraform, Github Action을 사용한다.

GitHub Action Architecture 

데모

  1. 셸 스크립트 사용
    • a. Terraform 백엔드용 S3 버킷 생성 및 versioning 활성화
    • b. githubAction 사용을 위한 OIDC Provider 생성
    • c. IAM Role 생성 및 Policy 추가

  2. Terraform 코드 작성
    • a. 1번에서 생성한 S3 Bucket으로 백엔드 설정
    • b. 코드 변경사항 적용
  3. GithubAction.yml 파일 작성
    • a. Credential 셋팅

    • b. Terraform CLI 설치 및 명령어 작성

    • c. github action 이벤트 지정 (Pull Request)

  4. Github Pull Request 생성 및 Merge
  5. 코드가 변경됨을 감지하여 GithubAction의  workflow 생성

  6. Action이 수행되는 것을 확인할 수 있다.


Bespin’s Comment

모든 것을 자동화하지는 못하는 점이 아쉽지만 상당한 부분을 자동화시키기 때문에 GitOps를 도입해볼 만한 가치가 있는 것 같다. 

다만 사용하기 이전에 어느 정도 이상의 숙련도가 필요할 것으로 보인다.

Leave a Comment