[IaC] Terraform 입문

Sunwu Park·2024년 3월 17일

IaC

목록 보기
2/3

테라폼이란?

  • 하시코프에서 오픈소스로 개발중인 클라우드 인프라스트럭처 자동화를 지향하는 코드로서의 도구
  • HCL(Hashicorp Configuration Lagnguage) 언어를 사용
  • 멀티 클라우드의 리소스들을 선언하고 코드로 관리 가능(AWS, Google, Azure)

테라폼을 사용하는 이유?

  • 오픈소스: 대규모 커뮤니티의 지원 + 플러그인 확장
  • 플랫폼에 구애받지 않는다 : 어느 클라우드 서비스 제공자와든 함께 사용할 수 있다
  • 변경 불가능 인프라: 이전 구성은 롤백을 위해 보관 가능

작동 방법

  • 선언적으로 리소스를 정의 ⇒ 여러번 실행한다고 여러개의 리소스가 만들어지지 않는다
  • terraform plan
    • 클라우드에 적용될 변화 사항을 보여준다
  • terraform apply
    • 실제로 적용한다

Example

resource "aws_instance" "web" {
  ami = "ami-0a93a08544874b3b7" # amzn2-ami-hvm-2.0.20200207.1-x86_64-gp2
  instance_type = "t2.micro"
  key_name = aws_key_pair.web_admin.key_name
  vpc_security_group_ids = [
    aws_security_group.ssh.id,
    data.aws_security_group.default.id
  ]
}

위와 같은 코드를 작성하였을때

terraform plan

이렇게 어떤식으로 생성이 될 것인지 계획을 보여준다

그후

terraform apply

를 하면 위의 항목들이 실제로 적용이 된다

적용을 하고 나면 테라폼으로 관리하고 있는 리소스를 구분하고 클라우드의 최신상태와 파일의 내용을 비교하기 위해 tfstate라는 json파일에 상태를 별도 관리한다!

협업을 위해서는 이 파일을 원격에서 관리해야한다.

온프레미스 : 기업이 서버를 자체적으로 보유하고 직접 설치 및 운영하는 방식

Terraform Cloud

  • 테라폼을 기반으로 하는 테라폼 클라우드 서비스
  • 로컬의 상태와 클라우드의 실제 상태를 비교하기 이ㅜ해 tfstate파일을 사용하는데 이를 한곳에서만 실행하거나 tfstate파일을 원격에서 공유해야하는데 이 파일을 직접 설정한 클라우드 스토리지, 데이터베이스에서 저장 및 공유하는 기능을 지원한다.

0개의 댓글