티스토리 뷰

HashiCorp./terraform

[Terraform] Basic

인쥭 2020. 7. 15. 16:16
반응형

1. 테라폼이란?

  • IaaC를 위한 클라우드 인프라 환경 배포 툴의 일종
  • 일반 서버, 가상 머신 등에서 동일 환경을 보장하는 Ansible과 비교하여 Terraform은 클라우드 플랫폼에 초점을 맞추는 것이 특징.
  • 특징 : 
    • WRITE : Infrastructure as a Code
    • PLAN : Preview changes before applying
    • CREATE : Reproducible Infrastructure
  • 클라우드 친화적인 툴이므로, 왠만한 클라우드 벤더에서 모두 지원한다고 함.

 

2. .tf 파일 살펴보기

resource "aws_key_pair" "ingnoh_key" {
  key_name = "ingnohKey"
  public_key = "${file("./ingnohKey.pub")}"
}
  • resource : 테라폼에서 사용되는 Object의 종류 중 하나이며, 변수를 나타낸다.
    • 데이터 자체를 나타내는 Object인 data도 있다.
  • aws_key_pair : AWS에서 사용되는 리소스 이름이다.
    • 즉, AWS의 리소스 중 하나인 key pair를 Terraform에서 부르는 방식이 aws_key_pair인 것!
    • 이러한 리소스 이름은 Terraform Docs.에 사전 정의되어 있으므로, 그대로 사용하면 된다.
  • ingnoh_key : tf. 파일들에서 해당 Object(resource인 aws_key_pair)를 식별하기 위해 붙이는 이름이다.
    • 사용자의 임의 할당이 가능하지만, 되도록 모든 .tf 파일에서 unique한 값을 사용하는 것이 좋다.

> 위의 코드블록의 내용은 다음과 같다.

  • AWS의 Key Pair인 ingnohKey를 ./ingnohKey.pub으로 가져오며, 이후에 다른(혹은 같은) .tf 파일에서 해당 aws_key_pair를 ingnoh_key라는 이름으로 참조한다.

 

 

3. 테라폼 사용하기

A. terraform init

  • 최초 초기화용 명령어
  • 수행시 .terraform 폴더가 생성

 

B. terraform plan

  • terraform이 작업을 수행하기 전, .tf 파일들의 적용 값을 체크
  • 실제로 변경 사항이 적용되는 것은 아니지만, apply 명령어 입력시 plan의 내용대로 적용되므로 꼼꼼한 확인이 필요하다!
  • .tf에 정의된 리소스가 클라우드 상에 없을 경우 add / 변경될 경우 change / 삭제될 경우 destroy 카운트가 올라간다.

 

C. terraform apply

  • 실제로 terraform에 의해 .tf 파일들의 내용이 클라우드에 생성된다.
  • yes를 눌러 진행하며, 리소스 생성까지 시간이 걸릴 수 있다.
  • 명령어 사용시 infra가 배치되며 .tfstate 파일이 생성된다.

 

D. terraform import

  • 이미 클라우드 상에서 운영 중인 리소스를 Code의 형태로 가져온다.
  • terraform에 익숙하지 않은 사용자들은 학습을 위해서도 import를 유용하게 활용해볼 수 있을 것.
  • 사용 예시 : terraform import aws_instance.<resource name><instance ID>

 

E. terraform destroy

  • .tfstate에 정의된 모든 리소스를 삭제한다.

 

F. TFstate란?

  • Terraform을 통해 인프라를 생성할 경우, Json 형식의 .tfstate 파일이 생성된다.
  • 해당 파일에는 Terraform으로부터 실행된 작업 정보가 저장된다.
  • .tf <-> .tfstate <-> AWS Infra's 로 서로의 변경 사항을 확인하기 위함!
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함