인프라 규모가 커지고 관리 팀원이 늘어날 수록 구성 코드 관리가 필요 → 서로 작성 코드 점검 및 협업 환경 구성
협업 방법 - VCS(Github), 중앙 저장소 도입
테라폼 코드 형상관리를 위한 중앙 저장소 (git)
*.tf file
State 백엔드
state file
이원화 관리 권장
이원화 관리 권장
실습 p219 ~ 233
깃허브 포크
깃허브는 포크 fork 기능을 제공해 기존 리모트 저장소를 본인 소유의 저장소로 복사할 수 있다
포크를 한다
git 공유 제외 대상
코드 파일 공유 시 깃 관리 대상 제외 → .gitignore 정의
.terraform 디렉터리 : init 실행 시 작성되므로 제외
.tfstate 파일 : 프로비저닝 결과 데이터 소스 정보, 민감 데이터가 포함
백엔드 사용 필요
tfvars 파일 : 프로비저닝 시 적용할 변수 값을 보관하는 파일로, 작업자 마다 별도 변수 사용
시크릿 파일 : 인프라 구성에 필요한 시크릿 정보 파일
terraformrc 파일 : 작업자의 CLI 설정 파일
# .gitignore
# Local .terraform directories
**/.terraform/*
# .tfstate files
*.tfstate
*.tfstate.*
# Crash log files
crash.log
crash.*.log
# Exclude all .tfvars files, which are likely to contain sensitive data, such as
# password, private keys, and other secrets. These should not be part of version
# control as they are data points which are potentially sensitive and subject
# to change depending on the environment.
*.tfvars
*.tfvars.json
# no creds
*.pem
# Ignore override files as they are usually used to override resources locally and so
# are not checked in
override.tf
override.tf.json
*_override.tf
*_override.tf.json
# Include override files you do wish to add to version control using negated pattern
# !example_override.tf
# Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan
# example: *tfplan*
# Ignore CLI configuration files
.terraformrc
terraform.rc
전부 주석처리를 했더니 "null_resource"의 "configure-cat-app" 에서 에러가 발생했다. 확인해 보니, 인스턴스에 접근해서 pem 파일도 옮기고, 아파치 배포를 한다. 그런데 기존에 eip를 통해서 배포를 했었던 것을 public ip로 변경해야 하는데.. count로 된 인스턴스 public ip 값을 어떻게 가져왔나 example를 훔쳐봤다..
아! 이런 방법이 example을 훔쳐봤는데 간단했다.
변경 했더니 인스턴스 3개가 배포 됬다!
placeholder 변수는 아래 3가지가 각각의 aws_instance에 적용되도록 구성 placekitten.com / placebear.com / placedog.net 검색을 해보니 변수로 호출 하는 것을 확인 했다.
변수 지정된 곳을 배열로 변경후에 호출하는 방식을 변경했다.
재배포를 했지만, 이미지가 변경 되지 않았다. remote-exec ssh inline 값을 수정후에 재배포하여도 기존 값이 변하지는 않는다는 것을 알수 있다. destory 후에 재배포 해보겠다.
destroy 후에 재배포 하니깐 잘된다!
TFC 에도 이력이 잘 남아있다.
느낀점
마지막주 답게 내용이 엄청 많은 것 같다 협업이라는 내용에 대해 배우는 것이라서 어떻게 해야 좋을지 알아봤다 업무 절차를 정할때 많은 도움이 되었고 앞으로 테라폼 뿐만아니라 다양한 업무에서도 이번에 배운 협업 방식을 활용해 좀 더 효율적인 체계를 잡을 수 있을 것 같다.