LIM
로그인
LIM
로그인
Terraform #1
임상규
·
2023년 11월 7일
팔로우
1
1
Terraform
목록 보기
1/3
Terraform
Hashicorp에서 오픈소스로 개발중인 클라우드 인프라스트럭처 자동화를 지향하는 IaC 도구
HCL(Hashicorp Configuration Language) 언어를 사용하여 리소스를 선언
CloudFormation과 달리 AWS, Azure, GCP와 같은 클라우드 서비스에 대해서
provider 방식으로 제공
인스턴스, 네트워크와 같은 low-level뿐 아니라 DNS, SaaS와 같은 high-level의 요소도 관리 가능함
특징
IaC
인프라를 코드로 정의하여 생산성과 투명성을 높임
정의한 코드를 쉽게 공유할 수 있어 효율적으로 협업 가능
Execution Plan
변경 계획과 변경 적용을 분리하여 내용을 적용할 때 발생할 수 있는 실수를 줄일 수 있음
Resource Graph
사소한 변경이 인프라 전체에 어떤 영향을 미칠지 미리 확인 가능
종속성 그래프를 작송하여 이 그래프를 바탕으로 계획을 세우고,
이 계획을 적용했을 때 변경되는 인프라 상태를 확인 가능
Change Automation
여러 장소에 같은 구성의 인프라를 구축하고 변경할 수 있도록 자동화 가능
인프라를 구축하는데 드는 시간을 절약, Human Error 감소
Terraform Deploy Workflow
Refresh
현재 인프라 상태 확인
Plan
현재 상태 → 원하는 상태로 구성
예상되는 변경점을 미리 확인해보는 단계
Apply
실행하는 단계
선후관계를 명시하지 않아도 알아서 순차적, 병렬적으로 실행됨
일부 명시해야 하는 경우도 존재
Destroy
제로의 상태로 돌아오는 과정 (=삭제)
장점
콘솔에 로그인할 필요 없이 서버 운영 및 관리가 모두 자동화 가능
사람이 수동으로 작업하는 것보다 빠르게 배포 가능
일관성을 보장
유효성 검증을 통해 문제가 발생하는것을 어느 정도 예방 가능
단점
AWS 설정을 Terraform으로 한번에 Migration 하기 어려움
배포 전략이 제한적
Blue/Green 배포를 구현할 수 없음
러닝 커브
HCL 문법
plan과 apply 명령어의 차이
plan에선 성공하지만 현재 state에 따라서 apply는 실패할 수 있음
프로젝트 규모가 커질수록 배포시 점점 더 느려짐
HCL 문법
기본 문법: .tf
Json 문법: .tf.json
Convention: indent = 2 space
argument(=attribute)
식별자 (argument name) = 값 (argument value)
image_id = "abc123"
blocks
컨텐츠의 묶음
resource "aws_instance" "example" { ami = "abc123" network_interface{ ... } }
최상위 Block type
resource, input, output, data, module ...
임상규
Junior DevOps Engineer
팔로우
다음 포스트
Terraform #2
0개의 댓글
댓글 작성
관련 채용 정보