첫 번째 세션: IaC와 함께하는 자동화 및 보안
중부대학교 SCP 전재원, 윤주원
Infrastructure as Code(IAC)
- 인프라를 코드로 관리하는 것을 의미함
- 콘솔 이용은 브라우저에서 GUI 딸깍
- IaC는 콘솔 방식이 아니라 코드 상에서 정의가 이미 되어 있음
- 콘솔은 대규모 인프라 구축 시 어려움(시간상 문제, 변경상 추적의 어려움 등)
- Iac 장점
- 인프라 구축 자동화
- 탬플릿으로 활용하여 재사용성 가능.(일부 수정만 하면 됨)
- 리소스 재사용
- 리소스를 모듈화하여 관리하여 관리 및 재사용에 강점이 있음
- Git에 커밋친 내역 올라오므로, 추적이 쉽고 잘못된 커밋이나 오류가 있을 때 조치 가능
- IaC는 DevOps의 기반으로 많이 활용(개발팀 + 운영팀 협업 → 빠르고 안정적인 개발 실현)
- CI/CD 중점 애플리케이션 파이프라인을 IaC로 구현함.
- 새로운 코드를 기존 코드에 통합하고 배포하는 것을 의미
- git repo 코드 변경사항 감지 → CI/CD → 코드 트리거 구현
- IaC 코드로 관리 시 기존 인프라 정의 코드에 통합하고 배포하는 과정이 필요함
- 인프라 코드에도 CI/CD 적용하여 자동화 가능
- 워크플로우 구축을 위해 인프라 관리 도구 선정 필요
- Terraform, ANSIBLE, pulumi, AWS com
- Terraform은 러닝 커브가 낮음.
- HCL 사용해서 학습 가능
- 리소스 블록을 통해 리소스 단위 정의 가능
- 블록 안에는 구체적 옵션들이 나열됨
- Terraform 명령어들이 존재 →
- Terraform init : 작업을 위해 필요한 플러그인, 모듈 정의
- Terraform Plan : 변경 발생을 미리 예측해서 보여줌
- 각 담당자들이 plan, apply 해서 작업진행하면 충돌/추적불가
- Atlantis : 깃허브 Pull Request를 통해 Terraform 작업을 자동화하고 효율 협업 가능하게 만듬
- Atlantis 레포지토리 생성하고 깃허브 레포지토리 연동하여 comment에 명령어 수동 입력해 실행 가능
- 명령어 실행 atlantis.yaml 파일 작성 → atlantis.yaml → auto plan을 통해 자동 실행