Ssoon

Chapter (07) - 협업 본문

Terraform 101 Study 2기

Chapter (07) - 협업

구구달스 2023. 7. 28. 19:25
CloudNet@ 가시다님이 진행하는 Terraform 101 Study 2기
"테라폼으로 시작하는 IaC" (한빛미디어) 도서로 진행!
  • 공동 작업자는 작성된 코드를 점검하고 서로의 코드를 학습할 수 있는 협업 환경 구성
  • 협업 환경 구성 요소
    • 코드를 다수의 작업자가 유지 보수할 수 있도록 돕는 VCS
    • 테라폼 State를 중앙화하는 중앙 저장소

테라폼 협업을 위한 중앙 저장소 고려사항 단계

  • 유형 1
    • 동일한 대상을 관리하는 여러 작업자는 동일한 프로비저닝을  위해 서로 코드 공유
  • 유형 2
    • 형성관리 도구를 통해 여러 작업자가 동일한 코드를 공유해 구성
    • 변경 이력 관리 및 이전 버전으로 롤백
    • 공유파일은 테라폼 구성파일과 State (테라폼 프로비저닝의 결과물로 데이터 저장소와 같음)
    • 작업자가 서로 다른 프로비저닝한 State 결과를 공유 -> 테라폼 프로비저닝 결과 오류 -> State 관리를 위해 백엔드 설정
  • 유형 3
    • 테라폼 코드 형상관리를 위한 중앙 저장소 + State 백엔드 -> 개별적으로 프로비저닝 테스트 및 완성 코드 공유
    • State 는 중앙 관리 -> 프로비저닝을 수행하면 원격 State의 상태를 확인하고 프로비저닝 수행 -> State 백엔드에 저장/관리

✅ 형상관리 도구 (VCS)

버전 관리 시스템 = Version Control System

🧿 Git

  • 분산형 관리 시스템
  • 코드 히스토리를 관리하고 중앙 저장소와 동기화
  • 로컬 저장소
    • 작업자 로컬 환경에 저장되는 개인 전용 저장소
  • 리모트 저장소
    • 코드 형상관리 이력과 코드가 원격지에서 관리되고 여러 사람이 공유하는 저장소
용어  표현 설명
branch 브랜치 "main" 또는 "master"  의 주 브랜치에서 갈라져 나온 별도의 버전의 작업 공간
chechout 체크아웃 지정한 브랜치로 정환하는 작업
clone 복제 리모트 저장소로부터 로컬 저장소로 복제
fork 포크/분기 리모트 저장소로부터 로컬 저장소로 복제하지만 새로운 저장소로 구성
fetch 페치 리모프 저장소에서 오브젝트를 로컬 저장소로 가져오는 동작
HEAD 헤드 현재 체크아웃된 브랜치의 최종 변경을 가리키는 이름
add 추가  작업 중인 공간에서 다음 커밋으로 변경을 기록하기 전까지 변경분을 추적
commit 커밋 로컬 저장소에 변경 사항을 기록
merge 머지/병합 깃으로 관리하는 오브젝트의 불일치한 내용을 병합
pull 풀/가져오기 브랜치의 내용을 리모트 저장소로부터 fetch 한 후 병합
push  푸시/저장하기 로컬의 수정 내용을 리모트 저장소에 저장
pull request PR/풀 리퀘스트 분기된 브랜치 또는 저장소에서 지정한 저장소의 브랜치로의 병합 요청

🧿 리모트 저장소 - 깃허브

  • Git 은 리모트 저장소가 있어야 코드 수준에서 다른 작업자와 협업 가능
  • 협업 ?
    • 리모트 저장소를 관리하면서 commit 된 데이터를 올리고(push) 받는(pull) 것

✅ 코드 관리

  • fork 기능을 제공해 기존 리모트 저장소를 본인 소유의 저장소로 복사
  • fork 한 저장소는 원본 저장소와 연결 -> 변경 사항을 원본 저장소에 적용(pull request) 가능

🧿 공유 제외 대상

.gitignore 로 제외할 대상을 정의

  • *.terraform 디렉터리
    • init 실행 시 작성되므로 제외
  • *.tfstate 파일
    • 프로비저닝 결과 데이터 소스 정보, 민감 데이터가 포함
    • 다른 사용자가 같은 State 파일을 사용하는 경우 인프라 불합치 유발
  • *tfvars 파일
    • 프로비저닝 시 적용할 변수 값을 보관하는 파일 -> 작업자마다 별도 변수 사용
  • 시크릿 파일
    • 인프라 구성에 필요한 시크릿 정보 파일
  • terraformrc 파일
    • 작업자의 CLI 설정 파일

🧿 로컬 자장소에 복제

  • 로컬 작업 환경에서 리모트 저장소 내용 복제
    • git clone <repository url> 

  • 디렉터리 이름 변경 -> 복사 -> 생성

Comments