테라폼은 하시코프 에서 오픈 소스로 개발중인 클라우드 인프라스트럭처 자동화를 지향하는
코드로서의 인프라스트럭처 도구이다. (IaC는 코드로 인프라스트럭처를 관리한다)
테라품을 사용해 인프라를 관리할 때는 Write(인프라를 어떻게 구축할지 코드를 작성하고),Plan(코드를 검증한다 변경사항이 있거나 삭제 되는 리소스가 있으면 이 plan 과정에서 확인할 수 있다 ),Apply(코드를 수행함)
terraform은 HCL 기반으로 하고 있다.(yml과 파일 구조가 비슷하다고 한다.)
terraform의 registry 부분은
providers 와 modules로 나뉜다
providers를 사용하면 AWS,GCP,Azure을 관리할 수 있다
즉 프로바이더란 테라폼과 외부 서비스를 연결해주는 기능을 하는 모듈을 말한다.
module은 인프라 리소스의 그룹 템플릿 여러 서비스(Ec2, Security group,dns 등등)를 그룹화 하여
하나의 module로 만든다
이제 terraform의 document를 보며 공부해보자
테라폼 워크스페이스란
워크스페이스:인프라를 상태를 관리하기 위한 한 프로젝트 단위(인프라가 커질 경우 워크스페이스 단위를 나눈다)
변경사항 추적: 변경사항을 추적하기 위해서는 이전 변경 사항의 기록을 가지고 있어야한다. 그래서
(state) 관리를 하는 파일인 terraform.tfstate파일이 있다 이 상태 관리 파일은 워크스페이스 단위로 생성이 된다.
간단한 실습(유의 사항:terraform 설치 해야함)
provider에 들어가서
자신 local 에 파일을 만드는 HCL 문법이다. 안에 내용은 Hello World 라고 출력할 예정
provider "local" {
}
resource "local_file" "foo" {
content = "Hello World!"
filename = "${path.module}/foo.bar"
}
${} : 테라 폼에서 ${} 이 안에 표기되는 것은 String interpolation 이라고 한다. 문자열 내에서 HCL에서 제공하는 변수나
컨텍스트를 접근해서 값을 가지고 올 수 있음
그후 terraform init(지정한 backend에 상태 저장을 위한 .tfstate 파일을 생성합니다. 반면 local에는 .tfstate에 정의된 내용을 담은 .terraform 파일이 생성된다)로
terraform init
provider(AWS,GCP 등등)을 설치한다
provider 가 잘 설치가 되었다는 사실을 확인할 수 있고
ls -al
명령어를 통해 다른 파일들이 생겨 났음을 알아본다
즉 잘 provider 환경이 설치가 된 것이다
이제
terraform plan
명령어를 입력해준다.(정의한 코드가 어떤 인프라를 만들게 되는지 미리 예측 결과를 보여주는 것이다)
이렇게 내가 add 할 것이 보인다
이제 우리가 지정한 인프라를 만들어 보자
terraform apply
(이 apply 는 실제로 인프라를 배포하기 위한 명령어이다)
실행결과는 우리의 예상과 같이 잘 생성이 되어있는 것을 알 수 있다!!
이 실습은
https://registry.terraform.io/providers/hashicorp/local/latest/docs/data-sources/file
Terraform Registry
registry.terraform.io
이곳을 참조하였습니다.
링크로 들어가면 Data Sources 와 Resources 를 볼 수 있는데
Resources: 실제로 생성할 인프라 자원을 의미한다
Data Sources: 가지고 있는 인프라를 읽어드리는데 사용한다(즉 존재하는 인프라 확인 용이라고 생각하면 된다)