일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- github action 사용법
- terraform
- 깃허브 액션
- Kubernetes
- EKS 클러스터
- Prometheus install
- 쿠버네티스
- jenkins
- 딥레이서
- 딥레이서 보상함수
- 쿠버네티스 컴포넌트
- Solution Architecture
- 로드밸런서 컨트롤러
- 메탈LB
- grafana on kubernetes
- SAA 합격 후기
- 솔데스크
- Aurora cluster
- Kubernets on Jenkins
- AWS 딥레이서
- kubernetes 동작 원리
- 그라파나 대시보드
- Firelens
- LoadBalancer Controller
- 그라파나 시각화
- livenessPorbe
- blue-green
- headless service
- EFS CSI Driver
- helm
mingming
Terraform 이란? 본문
1. 테라폼이란
테라폼은(Terraform) 은 하시코프(Hashicorp)에서 개발하고있는 Iac(Infrastructure as code) 도구 입니다.
2. 테라폼 사용시 장점
자동화 | 코드로 인프라를 생성하기 때문에 서버 운영 및관리가 자동화 될 수 있습니다. |
플랫폼 호환성 | 테라폼은 다양한 프로바이더를 제공합니다. |
모듈화 | 코드형 인프라를 모듈화하여 필요한 환경에서 재사용 할 수 있습니다. |
유효성 검증 | terraform plan , validate 를 통해 문법오류나 유효성을 확인할 수 있습니다. |
속도 & 안전 | 코드로 인프라를 생성하기 떄문에 수동으로 작업하는 것 보다 빠르게 배포할 수있으며 실수가 줄어들게 됩니다. |
3. 테라폼 기본 구성
Provider
Terraform은 공급자라는 플러그인을 사용해 클라우드 공급자, SaaS 공급자 및 기타 API와 상호작용 합니다.
Terraform이 사용할 수 있도록 필요한 공급자를 선언해야 합니다.
단일 provider
provider "google" {
project = "acme-app"
region = "us-central1"
}
다중 provider
# The default provider configuration; resources that begin with `aws_` will use
# it as the default, and it can be referenced as `aws`.
provider "aws" {
region = "us-east-1"
}
# Additional provider configuration for west coast region; resources can
# reference this as `aws.west`.
provider "aws" {
alias = "west"
region = "us-west-2"
}
alias를 이용해 여러 공급자를 선언할 수 있습니다.
Resource
각 리소스 블록은 가상 네트워크, 컴퓨팅 인스턴스 또는 DNS 레코드와 같은 상위 수준 구성 요소와 같은 하나 이상의 인프라 개체를 설명합니다. 각 리소스 블록은 리소스 선언을 위한 구문을 문서화 합니다.
DataSource
데이터 소스를 통해 Terraform은 다른 별도의 Terraform에 의해 정의되거나 기능에 의해 수정된 Terraform 외부에서 정의된 정보를 사용할수 있습니다.
Variable and Outputs
입력 변수
variable "image_id" {
type = string
}
variable "availability_zone_names" {
type = list(string)
default = ["us-west-1a"]
}
variable "docker_ports" {
type = list(object({
internal = number
external = number
protocol = string
}))
default = [
{
internal = 8300
external = 8300
protocol = "tcp"
}
]
}
로컬 변수
locals {
service_name = "forum"
owner = "Community Team"
}
로컬 변수는 모듈 내에서 동일한 값이나 표현식을 여러번 반복하는 것을 방지할 수 있습니다.
Outputs
Output "instance_ip_addr" {
value = aws_instance.server.private_ip
}
Outputs 값은 하위 모듈에서 값을 참조할 때 사용할 수 있습니다.
Modules
모듈은 함께 사용되는 여러 리소스의 컨테이너입니다. 모듈은 디렉토리에 함께 보관되는 파일 모음 .tf 및 또는 파일로 구성됩니다.. tf.json
Root Modules
테라폼에서의 루트 모듈은 주로 main.tf 파일로 나타냅니다. 이 파일은 테라폼 설정의 진입점이며, 전체 코드의 기본적인 구조와 설정을 담당합니다.
Child Modules
하위 모듈은 주로 특정 기능이나 리소스 타입을 모듈화하여 코드의 재사용성을 높이고, 인프라스트럭처를 더 작은 단위로 관리하기 위해 사용됩니다. 테라폼에서 하위 모듈은 보통 별도의 디렉토리 내에 관련 파일들을 포함하고 있습니다.
Published Modules
공용 또는 개인 레지스트리에서 모듈을 로드할 수 있습니다. 해당 모듈을 통해 코드를 간편하게 작성하실 수 있습니다.
이상 Terraform 기본개념에 대해 알아보았습니다. 다음엔 Terraform을 이용한 AWS 인프라 생성에 대해 알아보겠습니다.
'Terraform' 카테고리의 다른 글
Terraform 으로 Aurora cluster 및 RDS Proxy 구현하기 (0) | 2023.08.13 |
---|