IaC/Terraform

IaC, Terraform 기초 (Infrastructure as Code, 코드형 인프라, Terraform)

chanstory 2023. 2. 7. 15:03
반응형

IaC 란?

- Infrastructure as Code (코드형 인프라) 

- 코드로 클라우드 Infrastructure를 구성할 수 있음 (생성, 수성, 삭제 등을 자동화 함)

- Infrastructure의 설계도

 

IaC 장점

- 인프라 구성 자동화 가능

- 휴먼에러 방지

- 쉽게 공유가능

- 버전 관리 용이

- 코드와 현재 상태 비교 가능 -> 인프라 상태 변경에 따른 위험 분석 및 검증 가능

- 개발자가 스스로 배포하고 인프라 통제 할 수 있는 환경 구성 가능

 


 

 

프로비저닝 vs 배포 vs 오케스트레이션

프로비저닝

- 클라우드 서비스를 시작하고 구성하는 것

- 시스템, 데이터 및 소프트웨어로 서버를 준비하고 네트워크 작동을 준비

- Puppet, Ansible 등과 같은 구성 관리 도구를 사용하여 서버 프로비저닝 가능

 

배포

- 프로비저닝 된 서버를 실행하기 위해 어플리케이션 버전을 제공하는 것

- AWS CodePipeline, Jenkins, Github Actions 등 을 통해 배포 가능

 

오케스트레이션

- 여러 시스템 또는 서비스를 조정하는 작업

- 마이크로서비스, 컨테이너 및 쿠버네티스로 작업할 때 일반적 용어

- 쿠버네티스, Salt, Fabric 등이 오케스트레이션 도구의 예임

 

 


 

 

예상치 못한 인프라의 변경에 따른 사고 (Configuration Drift)

- 여러사람이 필요한 만큼의 권한보다 많은 권한을 갖게되어 시스템에 영향을 주는 행동을 했을 시 

   어떻게 대처할 수 있는가 또한 이러한 사고가 어떤 영향을 미치는가 

 

 

 

사고 알아내기, 대처법

- 잘못된 설정 찾기

  => AWS Config

  => 바른 설정을 지정해놓고, 찾고 고칠 수 있게 해줌

 

- 사고 감지 도구

  => AWS CloudFormation Drift Detection

 

 

관리형 서비스 외에 개발 방법에 가까운 솔루션 

- 정상 작동 상태를 파일로 저장

  => Terraform state file

 


 

 

인프라 변경에 따른 사고 방지

1. 불변한 (Immutable) infrastructure = 인프라 변경을 원천적으로 막음

 

2. 한번 생성했으면 수정하지 않음

  - 프로비저닝 및 배포했으면, 콘솔에 접속해서 수동으로 설정하지 않음

  - 변경 = 삭제 후  생성

 

3. 인스턴스 내부 구성 (사용자 스크립트 등) 이 필요할 경우 AMI로 만들어 놓음

  - Develop -> Deploy -> Configure 가 아니라 Develop -> Configure -> Deploy 여야 함 

 

4. 코드형 인프라 (IaC)를 사용함

 

 

 

 

 


IaC 종류와 Terraform 장점

절차형 IaC vs. 선언형 IaC

절차형 IaC

- 프로그래밍 언어를 이용해 직접 순차적으로 인프라를 생성하도록 코드 작성

- 선언형에 비해 더 강력한 일들을 할 수 있으나, 실제 적용된 결과를 가늠하기 어려움

- 코드를 읽기에 직관적이지 않음

- 종류 = AWS CDK, Pulumi

 

선언형 IaC

- JSON, WAML 등 을 사용

- 실제 인프라가 적용된 결과와 적용할 내용이 직관적으로 매핑됨

- 종류 = CloudFormation (AWS에서만 사용 가능)

          = Azure Blueprint (Azure에서만 사용가능)

          = Cloud Deployment Manager (GCP에서만 사용 가능)

         = Terraform (어떤 클라우드 서비스에도 적용되는 범용 IaC)

 


Terraform 기초 Hands On

참고링크

https://learn.hashicorp.com/collections/terraform/aws-get-started

 

AWS | Terraform | HashiCorp Developer

Build, change, and destroy AWS infrastructure using Terraform. Step-by-step, command-line tutorials will walk you through the Terraform basics for the first time.

developer.hashicorp.com

 

 

 

 

 

 

 

 

 

 

반응형