2025/02/07 5

IaC : Terraform - 테라폼 모듈(module)로 재사용가능한 인프라 구성

각 환경( 스테이징, 프로덕션 .. )의 인프라는 거의 동일하지만 미세한 차이가 있는 정도⇒ 코드를 복사하여 붙여넣기⇒ HCL에서 중복되는 코드를 모듈로 만들어서 여러 위치에서 재사용( 범용프로그래밍 언어에서 동일한 코드를 함수내부에 배치하여 재사용하는 개념과 유사 ) 코드 이전작업없이 모듈을 참조하여 동일한 코드환경을 가지게 됨( 재사용성 ) ⇒ 모듈이란 여러환경에서 동일한 인프라환경을 구축하기 위해 사용하는 기술   기능 디렉토리별로 모듈을 만든다고 생각함( services/web-cluster, services/data-store 등 )root 모듈 : terraform apply 명령을 수행하는 위치, 직접 적용을 실행하는 모듈other 모듈 : 테라폼 구성파일세트, 루트 모듈 안에서 module..

CLOUDWAVE 2025.02.07

IaC : Terraform - 테라폼 상태관리 및 상태파일(tfstate)

Terraform상태관리terraform apply를 실행할때마다 생성한 리소스를 찾아 그에 따라 업데이트를 수행terraform의 상태관리 : 상태정보를 저장한 파일의 내용(terraform.tfstate)과수행작업을 담은 main.tf파일을 비교하여 상태와 일치하지 않은 경우에만 작업을 수행 → 멱등성을 보장( terraform.tfstate :: 멱등성을 위해 상태정보를 저장 ) 업무 프로세스는 다양한 리소스의 상태파일(tfstate)을 공유상태파일 공유저장소(동일한 상태파일에 접근)를 구축 → 상태파일 잠금기능(lock)으로 무결성 보장, 격리git에 업로드하는 것은 권장하지 않음( 버전관리 서비스가 아닌 공유저장소 : S3 등 ⇒ 원격 백앤드가 지원됨 )S3 : DB를 통한 잠금(lock)을 수..

CLOUDWAVE 2025.02.07

IaC : Terraform 실습 - 웹클러스터 배포, 로드밸런서 배포, 자원반환

웹서버 클러스터 배포여러개의 인스턴스를 만들어 서버 클러스터 구축 → 개별 인스턴스에 문제 발생시(트래픽 과부하) 다른 인스턴스가 동작하며 다운타임을 줄이고 적절하게 라우팅하도록 하여 안전성을 확보가능 AWS의 ASG(Auto Scaling Group) 서비스 : EC2 인스턴스 클러스터 시작, 각 인스턴스 상태 모니터링, 실패한 인스턴스 교체, 로드에 따른 클러스터 크기 조정 등 많은 작업을 자동으로 처리 (1) 사전에 launch_configuration( launch_template ) 설정 : 각 EC2 인스턴스를 구성하는 방법을 지정 (공통속성에 대한 정의)resource "aws_launch_configuration" "example" { image_id = "ami-024ea4..

CLOUDWAVE 2025.02.07

IaC : Terraform 실습 - 단일 서버배포, 단일 웹서버배포, 구성가능한 웹서버배포

기존의 포트값 = 기존과 동일한 인스턴스의 사용 → destory작업이 전혀 없음Terraform을 이용한 단일서버 배포 실습VSCode에서 ssh로 가상머신에 연결하여 작업( 권장 )  Terraform 코드는 확장자가 .tf 인 파일에 HCL(HashiCorp 구성 언어)로 작성 ( main.tf ) 이때 tf파일에는 ACESS_KEY등의 개인정보를 입력하지 않도록 함 ( 노출의 위험 )  (1) 공급자 구성provider "aws" { region = "ap-northeast-2"}Terraform에 AWS를 공급자로 사용할 것이며 인프라를 ap-northeast-2 지역에 배포할 것임을 선언aws provider를 사용하겠다는 선언 → aws 전용 바이너리를 다운받아서 사용가능region을 고정..

CLOUDWAVE 2025.02.07

IaC : Terraform - 테라폼 소개, 테라폼 환경 구축

테라폼 소개클라우드 및 온프레미스 리소스를 모두 정의할 수 있는 코드형 인프라 관리도구일관된 워크플로우로 전반적인 인프라 수명주기를 관리하고 프로비저닝하는 역할 DevOps란전통적인 운영작업(Ops) : 개발후 코드를 배포하고 실행하는 작업, 수동으로 수행 → 눈송이 서버(snowflake server)(미묘하게 다른 구성, 종속성 설치가 상이) → 버그의 수 증가, 가동 중단 및 다운타임 자주 발생최근의 운영작업 : 인프라를 클라우드 환경으로 전환 + 자동화 도구를 이용하여 소프트웨어적으로 제어코드를 지속적으로 통합하고 배포가능한 상태로 유지 = 실행환경(runtime)을 일관적으로 유지DevOps의 핵심가치(4가지) : 문화, 자동화, 측정(모니터링 도구), 공유(약어로 CAMS라고도 함-git,no..

CLOUDWAVE 2025.02.07