본문 바로가기

Terraform4

Terraform 상태 시나리오 Configuration(구성 파일)State(상태 파일)Reality(실제 리소스)Operation(동작 결과)aws_instance  ?aws_instanceaws_instance ?aws_instanceaws_instanceaws_instance? aws_instanceaws_instance?  aws_instance? aws_instance ? Configuration:구성파일(ex: main.tf, ec2.tf)State:상태파일(tfstate)Reality:실제 리소스(ex: ec2)예시를 들어 EC2를 배포하는 상황을 가정해보자구성 파일만 존재 할 때 apply 하게 되면 어떻게 될까?-> 정상적으로 EC2 인스턴스가 Create 즉 생성이 된다.구성, 상태 파일이 존재하는 할 때 apply.. 2024. 6. 24.
Terraform state Backend(원격지 저장) .├── lock Terraform 동시 프로비저닝 방지를 위한 DynamoDB Lock 테이블 구성│ ├── main.tf│ └── variables.tf├── storage Terraform 상태 파일 저장을 위한 S3 구성 │ ├── main.tf│ └── variables.tf├── main.tf├── providers.tf└── terraform.tfstate간단하게 정리하자면 s3에는 상태파일을 저장하고 Terraform 동시 프로비저닝을 방지를 위한 DynamoDB Lock 테이블을 구성LockingTerraform 코드는 혼자 작성하지는 않는다.인프라를 변경한다는 것은 굉장히 민감한 작업이 될 수 있다.원격 저장소.. 2024. 6. 24.
Terraform import를 통한 리소스 싱크 맞추기 terraform import 명령어는 기존의 인프라스트럭처의 특정 리소스를 Terraform 상태를 가져오는데 사용한다.현업에서 자사의 서비스나, 고객사의 새로운 요구가 있을 수도 있다.그렇다 보면 AWS Console에는 존재하지만 Terraform에는 반영이 안된 리소스가 생기기도 하고 Terraform을 리팩토링을 하게 됩니다.단순하게 terraform에서 리소스와 모듈로 똑같이 만들고 plan을 하게 되면 문제가 발생하게 된다.두 가지 방법이 있으니 간단한 실습을 진행해보자우선적으로 실습에서 사용할 리소스를 하나 생성한다.Console에서 리소스 생성1. Import 명령어Terraform 구성 작성:먼저, 아래와 같이 main.tf 파일을 작성하여 AWS S3 버킷 리소스의 유형과 이름을 정의.. 2024. 6. 24.
Terraform tfstate 분할 관리 서비스의 운영 환경은 Dev, Prod, Stg 등으로 구분될 수 있고 아니면 Seoul, Tokyo 이러한 지역명으로도 구분할 수 있다.이렇게 구분하는 단위를 Envrionment 또는 Stack 이라고 부르기도 한다.tfstate 상태 파일의 분할하여 관리하는 목적은 다음과 같다.서비스 운영 환경을 구분 짓기 위해서각 환경들이 서로 의존성이 있는 것이 아닌 독립적으로 운영하기 위해서대규모의 인프라를 블럭 단위로 결합 하는것과 같이 작은 단위로 관리 함으로써 문제를 최소화 하며 가독성을 높이기 위해서동일한 코드를 통해 각 환경에 맞게 자동화 된 관리가 가능하도록 설계에 반영하기 위해서 프로젝트 폴더(모듈)을 통한 분할 관리디렉토리를 통한 분할관리는 각 환경에 맞는 디렉토리 구조에서 *.tf 와 terr.. 2024. 6. 24.