반응형
Terraform
- Terraform은
테라폼 자체를 구성하는 내용
으로backend
,required_version
등을 지정할수 있습니다.
terraform {
required_version = ">= 1.0.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.0"
}
}
}
Provider
- Provider는 테라폼이 동작하는
클라우드 제공자(cloud providers) 또는 API 제공자(API providers)에 대해 기술
합니다. - provider들이 테라폼을 지원하지 않는다면 terraform은 어떤 종류의 인프라도 관리 할 수 없습니다.
provider "aws" {
profile = "aws_hyuckang"
region = "ap-northeast-2"
}
Resource
- resource는 AWS EC2, VPC, Subnet와 같은
인프라 객체(infrastructure object)
를 의미합니다.
resource "aws_instance" "hyuckang_EC2" {
ami = "ami-0ecb2a61303230c9d"
instance_type = "t2.micro"
tags = merge({
Name = var.hyuckang_EC2_NameTag
}, local.common_tags
)
}
Data Source
- Data Source를 사용하면 다른 테라폼 작업공간(workspace)이나 API를 통해
가져온 정보를 사용
할 수 있으며 테라폼 구성(configuration)을 유연하게 만들수 있습니다.
data "aws_vpc" "default_vpc" {
default = true
}
data "aws_subnets" "default" {
filter {
name = "vpc-id"
values = [data.aws_vpc.default_vpc.id]
}
}
Input Variable
- Input Variable은
입력 변수
로 테라폼의 모듈을 재사용하거나 테라폼을 좀 더 유연하게 사용할 수 있게 해줍니다.
variable "hyuckang_EC2_NameTag" {
default = "hyuckang_EC2"
type = string
}
Output Values
Output은
인프라 구조에 대한 정보(Infra structured data)를 export
할 수 있습니다.이를 통해 다른 인프라를 구성하거나 다른 테라폼 작업 공간에서 data source로 사용 할 수 있습니다.
Output Value는 프로그래밍의 반환 값(return value)과 유사한 개념입니다.
output "default_vpc_cidr" {
value = data.aws_vpc.default_vpc.cidr_block
description = "default vpc cidr_block"
}
Local Values
- Local Value는
동일한 값이나 표현식을 여러번 반복해야 할 때 사용
할 수 있으며선언된 모듈 내의 표현식에서만 액세스
할 수 있습니다. - Local Value는
Input Variable과 달리 사용자가 직접 설정 할 수 없습니다.
locals {
common_tags = {
Using = "terraform_test"
Owner = "hyuckang"
}
}
Module
- Module을 사용하면
리소스 구성을 캡슐화
하고구성 파일을 재사용
할 수 있습니다. - Module은
단일 디렉터리에 있는 하나 이상의 구성파일들
로 이루어져 있습니다. - 현재 작업 디렉터리의 모듈을
루트 모듈(root module)
이라 합니다. - A 모듈에서 B 모듈을 호출해서 사용하는 경우 B는 A의
하위모듈(child module)
이라고 합니다.
module "servers" {
source = "./app-cluster"
}
참고
반응형
'IaC > Terraform' 카테고리의 다른 글
[Terraform] Variable 입력 변수 (0) | 2022.09.03 |
---|---|
[Terraform] Error: Incompatible provider version (0) | 2022.08.23 |
[Terraform] Configuration file과 HCL (0) | 2022.08.08 |
[TF] terraform으로 aws ec2 만들기 (0) | 2021.11.05 |
[IaC/TF] Terraform 설치 (0) | 2021.11.04 |