테라폼은 IaC 소프트웨어이며 상업적 이용에 제한이 없는 오픈소스
장점 : 소프트웨어의 비용절감이 가능
단점 : 문제 해결에 어려움이 있음
infrastructure의 형상 관리와 수명주기 관리에 유리
- 애플리케이션처럼 형상 관리할 수 있습니다.
- 동일한 구성의 인프라 세트를 각각의 개발 환경의 계층에 만들고 변경하는 작업이 빈번하게 발생합니다.
- 수명주기 관리
리소스를 생성하고 삭제하는것을 관리
계층의 규모는 비지니스에 따라 다릅니다.
Environment | 환경 | Description |
---|---|---|
Production | 운영계,운영서버 | 사용자에게 제공하는 환경 |
Staging | 검증계,검증서버 | 운영서버와 비슷한 환경에서에 올리기 전 검증을 위한 단계 |
Development | 개발계,개발서버 | 비용생각,형상은 같지만 규모는 작음. |
QA | 품질계,품질서버 | 성능에 관한 검증 |
Local | 로컬 | 개발자의 컴퓨터 및 작업환경 |
Cloud API를 선언적 구성 파일로 코드화하고 이를 CLI 워크플로루로 사용
테라폼의 버전은 0.12로 부터 크게 구분됩니다.
0.12버전의 릴리즈에서 Terraform SDK의 메이저 버전이 올라가고 Terraform Language의 문법에도 대격변이 일어났습니다.
0.12부터는 0.11이하의 버전과 호환되지 않습니다. 또한, 0.11 버전은 AWS Provider를 2.70.0까지만 사용할 수 있는 제약이 있습니다.
"${}"
로 감싸주었습니다. 하지만 0.12.x 이후에는 더 이상 "${}"를 사용하지 않습니다.resource "aws_???" "example" {
name = "${var.examplename}" # <-- 0.11.x 버전의 특징
name = var.examplename # <-- 0.11.x 버전의 위 특징
}
terraform.tfstate 파일에 version이 저장됩니다. 버전이 같거나 상위 버전만 실행할 수 있습니다.
required_version으로 version범위를 제한하여 방지할 수 있습니다.
terraform{
required_version = ">=0.12.26, <0.13.0" # version = 0.12
required_providers {
aws = {
version = "~> 3.56.0" # version >= 0.13
}
}
}
테라폼은 유닉스베이로 개발되었으며 윈도우로 사용시 몇 가지의 오류가 발생할 수 있습니다.
←[33m~←[1m←[0mid←[0m←[0m 같은 문자들
해결법 PS C:\> Set-ItemProperty HKCU:\Console VirtualTerminalLevel -Type DWORD 1
Terraform에서 필연적으로 발생하는 중복 코드를 줄여주는 랩퍼 툴입니다.
Terragrunt의 명령어는 내부적으로 Terraform 명령어로 변환되어 실행되며,모든 Terraform 명령어를 사용할 수 있습니다.
이 게시글의 저작권은 베스핀글로벌 SRE 1팀 최창석님에게 있음을 밝힙니다.