Terraform 작동원리 & CLI 실습

운영하는은영이·2023년 1월 17일
0

AWS&Terraform

목록 보기
6/11

Terraform 작동 원리

테라폼은 내부적으로 AWS의 API들을 호출함

  • 테라폼 3가지 형상
  1. Local 코드 : 개발자가 작성/수정하고 있는 코드. 인프라 정의
  2. AWS 실제 인프라 : 실제로 AWS에 배포되어 있는 인프라
  3. Backend에 저장된 상태 : 가장 최근에 배포한 테라폼 코드 형상

AWS 실제 인프라와 Backend에 저장된 상태가 100% 일치하도록 만드는것이 제일 중요함 !

  • 실제 인프라와 백엔드에 저장된 상태가 일치하지 않는 경우
    - 인프라를 콘솔에서 변경하는 경우
    - 로컬에서 state 파일을 변경했는데 다른사람이랑 싱크가 안맞는 경우

  • Terraform 명령어

  • Terraform init
    - 지정한 backend에 상태 저장을 위한 .tfstate 파일을 생성
    가장 마지막에 적용한 테라폼 내역이 저장됨

    • init 작업을 완료하면 로컬에는 .tfstate에 정의된 내용을 담은 .terraform 파일이 생성됨

    • 기존에 다른 개발자가 .tfstate에 인프라를 정의해놓은 것이 있따면, 다른 개발자는 init 작업을 통해서 로컬에 sync를 맞출 수 있음
      - AWS API를 호출하기 위해 필요한 라이브러리들 다운

    • init 실습

      1. provider.tf 생성

      2. terraform init

  • Terraform plan
    - 정의한 코드가 어떤 인프라를 만들게 되는지 미리 예측 결과를 보여줌
    - plan 명령어는 어떠한 형상 변화에도 영향을 끼치지 않음. 실제 인프라에 영향 X
    • 실습
      1. s3.tf 파일 생성
      resource "aws_s3_bucket" "test" {
      bucket="terraform101-eunyoung"
      }
      2. terraform plan 명령
  • Terraform apply
    - 실습
    1. terraform apply 명령
    2. standard input 값으로 yes 입력해주기
    ( 실제 인프라에 영향이 가는 동작이기 때문에 input을 받음 )

    3. ls 명령으로 tfstat 파일 생성된거 확인
    ( 이유 : 백엔드를 따로 설정 X -> 로컬이 백엔드 )

    4. aws cli를 사용하여 s3 생성 확인

  • terraform import
    - 콘솔에서 무언가를 생성 했을 시 import 명령을 통해 불러올 수 있음

  • 테라폼 코드 삭제 실습
    1. rm -rf s3.tf
    2. rm -rf terraform.tfstate
    3. rm -rf .terraform

    1. terraform init

    2. terraform import aws_s3_bucket.test terraform101-eunyoung
      코드가 없어서 생성되지 X

    3. s3.tf 생성 후 import 시 성공

      terraform plan은 이미 만들어져있는지 아닌지 상관 X
      실제 인프라에 이미 있는건 apply 했을 때 또 생성 되지 않음

      import 해주고 다시 plan해서 변경된 사항 있으면 다시 apply 해서 싱크 맞춰주기

profile
ผ(•̀_•́ผ) (ง •_•)ง

0개의 댓글