← 홈

🏗️

⌘K
🤖
Claude Code AI 도구
🤗
Hugging Face AI 도구
🦜
LangChain AI 도구
🧠
Keras AI 도구
🦙
Ollama AI 도구
🐍
Python 프로그래밍 언어
🟨
JavaScript 프로그래밍 언어
🔷
TypeScript 프로그래밍 언어
⚛️
React 프로그래밍 언어
🐹
Go 프로그래밍 언어
🦀
Rust 프로그래밍 언어
📊
MATLAB 프로그래밍 언어
🗄️
SQL 프로그래밍 언어
⚙️
C/C++ 프로그래밍 언어
Java 프로그래밍 언어
🟣
C# 프로그래밍 언어
🍎
Swift 프로그래밍 언어
🟠
Kotlin 프로그래밍 언어
Next.js 프로그래밍 언어
💚
Vue.js 프로그래밍 언어
🔥
Svelte 프로그래밍 언어
🎨
Tailwind CSS 프로그래밍 언어
💚
Node.js 프로그래밍 언어
🌐
HTML 프로그래밍 언어
🎨
CSS/SCSS 프로그래밍 언어
🐘
PHP 프로그래밍 언어
💎
Ruby 프로그래밍 언어
🔴
Scala 프로그래밍 언어
📊
R 프로그래밍 언어
🎯
Dart 프로그래밍 언어
💧
Elixir 프로그래밍 언어
🌙
Lua 프로그래밍 언어
🐪
Perl 프로그래밍 언어
🅰️
Angular 프로그래밍 언어
🚂
Express.js 프로그래밍 언어
🐱
NestJS 프로그래밍 언어
🛤️
Ruby on Rails 프로그래밍 언어
◼️
GraphQL 프로그래밍 언어
🟪
Haskell 프로그래밍 언어
💚
Nuxt.js 프로그래밍 언어
🔷
SolidJS 프로그래밍 언어
htmx 프로그래밍 언어
💻
VS Code 개발 도구
🧠
PyCharm 개발 도구
📓
Jupyter 개발 도구
🧠
IntelliJ IDEA 개발 도구
💚
Neovim 개발 도구
🔮
Emacs 개발 도구
🔀
Git DevOps & CLI
🐳
Docker DevOps & CLI
☸️
Kubernetes DevOps & CLI
☁️
AWS CLI DevOps & CLI
🔄
GitHub Actions DevOps & CLI
🐧
Linux 명령어 DevOps & CLI
💻
Bash 스크립팅 DevOps & CLI
🌐
Nginx DevOps & CLI
📝
Vim DevOps & CLI
🔨
Makefile DevOps & CLI
🧪
Pytest DevOps & CLI
🪟
Windows DevOps & CLI
📦
패키지 매니저 DevOps & CLI
🍎
macOS DevOps & CLI
🏗️
Terraform DevOps & CLI
🔧
Ansible DevOps & CLI
Helm DevOps & CLI
🔨
Jenkins DevOps & CLI
🔥
Prometheus DevOps & CLI
📊
Grafana DevOps & CLI
💻
Zsh DevOps & CLI
🐟
Fish Shell DevOps & CLI
💙
PowerShell DevOps & CLI
🔄
Argo CD DevOps & CLI
🔀
Traefik DevOps & CLI
☁️
Azure CLI DevOps & CLI
☁️
Google Cloud CLI DevOps & CLI
📟
tmux DevOps & CLI
🔧
jq DevOps & CLI
✂️
sed DevOps & CLI
📊
awk DevOps & CLI
🌊
Apache Airflow DevOps & CLI
🔢
NumPy 데이터베이스 & 데이터
🐼
Pandas 데이터베이스 & 데이터
🔥
PyTorch 데이터베이스 & 데이터
🧠
TensorFlow 데이터베이스 & 데이터
📈
Matplotlib 데이터베이스 & 데이터
🐘
PostgreSQL 데이터베이스 & 데이터
🐬
MySQL 데이터베이스 & 데이터
🍃
MongoDB 데이터베이스 & 데이터
🔴
Redis 데이터베이스 & 데이터
🔍
Elasticsearch 데이터베이스 & 데이터
🤖
Scikit-learn 데이터베이스 & 데이터
👁️
OpenCV 데이터베이스 & 데이터
Apache Spark 데이터베이스 & 데이터
🪶
SQLite 데이터베이스 & 데이터
Supabase 데이터베이스 & 데이터
🔵
Neo4j 데이터베이스 & 데이터
📨
Apache Kafka 데이터베이스 & 데이터
🐰
RabbitMQ 데이터베이스 & 데이터
🔤
Regex 유틸리티
📝
Markdown 유틸리티
📄
LaTeX 유틸리티
🔐
SSH & GPG 유틸리티
🌐
curl & HTTP 유틸리티
📜
reStructuredText 유틸리티
🚀
Postman 유틸리티
🎬
FFmpeg 유틸리티
🖼️
ImageMagick 유틸리티
🔍
ripgrep 유틸리티
🔍
fzf 유틸리티
📗
Microsoft Excel 오피스 애플리케이션
📘
Microsoft Word 오피스 애플리케이션
📙
Microsoft PowerPoint 오피스 애플리케이션
📝
한컴 한글 한컴오피스
📽️
한컴 한쇼 한컴오피스
📊
한컴 한셀 한컴오피스
📄
Google 문서 Google Workspace
📊
Google 스프레드시트 Google Workspace
📽️
Google 프레젠테이션 Google Workspace
🔌
Cadence Virtuoso EDA & 하드웨어
⚙️
Synopsys EDA EDA & 하드웨어
💎
Verilog & VHDL EDA & 하드웨어
LTSpice EDA & 하드웨어
🔧
KiCad EDA & 하드웨어
📝
Notion 생산성 도구
💎
Obsidian 생산성 도구
💬
Slack 생산성 도구
🎮
Discord 생산성 도구
🎨
Figma 디자인 도구
📘
Confluence Atlassian
📋
Jira Atlassian
🃏
Jest 테스팅
Vitest 테스팅
🎭
Playwright 테스팅
🌲
Cypress 테스팅
🌐
Selenium 테스팅
💙
Flutter 모바일 개발
📱
React Native 모바일 개발
🍎
SwiftUI 모바일 개발
📱
Expo 모바일 개발
🐍
Django 웹 프레임워크
FastAPI 웹 프레임워크
🌶️
Flask 웹 프레임워크
🍃
Spring Boot 웹 프레임워크
🍸
Gin 웹 프레임워크
Vite 빌드 도구
📦
Webpack 빌드 도구
esbuild 빌드 도구
🐘
Gradle 빌드 도구
🪶
Maven 빌드 도구
🔧
CMake 빌드 도구
🎮
Unity 게임 개발
🤖
Godot 게임 개발
🔌
Arduino 임베디드 & IoT
🔍
Nmap 보안
🐕
Datadog 모니터링
📖
Swagger/OpenAPI 문서화
검색 결과가 없습니다
EN KO

CLI 명령어

필수 명령어

terraform init 작업 디렉토리 초기화
terraform plan 실행 계획 표시
terraform apply 변경 사항 적용
terraform apply -auto-approve 확인 없이 적용
terraform destroy 인프라 삭제
terraform validate 구성 검증
terraform fmt 코드 포맷
terraform fmt -recursive 재귀적으로 모든 파일 포맷

상태 명령어

terraform state list 상태의 리소스 목록
terraform state show aws_instance.example 리소스 상세 정보
terraform state mv old_name new_name 리소스 이동/이름 변경
terraform state rm aws_instance.example 상태에서 제거
terraform state pull 원격 상태 가져오기
terraform state push 원격에 상태 푸시
terraform refresh 상태 새로고침

기타 명령어

terraform output 출력 표시
terraform output -json JSON으로 출력
terraform console 대화형 콘솔
terraform graph 의존성 그래프 생성
terraform import aws_instance.example i-1234 기존 리소스 가져오기
terraform taint aws_instance.example 재생성 표시
terraform untaint aws_instance.example 표시 제거
terraform workspace list 워크스페이스 목록
terraform workspace new dev 워크스페이스 생성
terraform workspace select prod 워크스페이스 전환

HCL 문법

기본 구조

프로바이더
provider "aws" {
  region = "us-west-2"
}
리소스
resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"

  tags = {
    Name = "example-instance"
  }
}
데이터 소스
data "aws_ami" "ubuntu" {
  most_recent = true

  filter {
    name   = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-*"]
  }

  owners = ["099720109477"]
}
데이터 참조
resource "aws_instance" "web" {
  ami = data.aws_ami.ubuntu.id
}

변수

변수 선언
variable "instance_type" {
  description = "EC2 instance type"
  type        = string
  default     = "t2.micro"
}
변수 타입
variable "name" {
  type = string
}

variable "count" {
  type = number
}

variable "enabled" {
  type = bool
}

variable "tags" {
  type = map(string)
}

variable "subnets" {
  type = list(string)
}
변수 사용
resource "aws_instance" "web" {
  instance_type = var.instance_type
  tags          = var.tags
}
변수 파일
# terraform.tfvars
instance_type = "t3.medium"
environment   = "production"

tags = {
  Project = "web-app"
  Team    = "devops"
}
민감한 변수
variable "db_password" {
  type      = string
  sensitive = true
}

출력

출력 값
output "instance_ip" {
  description = "Public IP of the instance"
  value       = aws_instance.web.public_ip
}
민감한 출력
output "db_password" {
  value     = random_password.db.result
  sensitive = true
}

표현식

표현식과 함수

문자열 보간
name = "web-${var.environment}"
조건문
instance_type = var.environment == "prod" ? "t3.large" : "t3.micro"
For 표현식 (리스트)
upper_names = [for name in var.names : upper(name)]
For 표현식 (맵)
instance_ids = { for k, v in aws_instance.web : k => v.id }
Count
resource "aws_instance" "web" {
  count = 3
  tags = {
    Name = "web-${count.index}"
  }
}
For each (맵)
resource "aws_instance" "web" {
  for_each = var.instances

  ami           = each.value.ami
  instance_type = each.value.type

  tags = {
    Name = each.key
  }
}
For each (셋)
resource "aws_iam_user" "users" {
  for_each = toset(var.user_names)
  name     = each.value
}

자주 쓰는 함수

문자열 함수
lower("HELLO")        # "hello"
upper("hello")        # "HELLO"
trim("  hello  ")     # "hello"
split(",", "a,b,c")   # ["a", "b", "c"]
join(",", ["a", "b"]) # "a,b"
컬렉션 함수
length(["a", "b"])    # 2
concat([1,2], [3,4])  # [1,2,3,4]
merge(map1, map2)     # Merge maps
lookup(map, key, default)
element(list, index)
contains(list, value)
타입 함수
tostring(42)          # "42"
tonumber("42")        # 42
tolist(set)           # Convert to list
tomap(object)         # Convert to map
파일 함수
file("script.sh")     # Read file content
fileexists("path")    # Check if exists
templatefile("tpl.sh", { name = "foo" })

모듈

모듈 사용

로컬 모듈 사용
module "vpc" {
  source = "./modules/vpc"

  cidr_block = "10.0.0.0/16"
  name       = "my-vpc"
}
레지스트리 모듈 사용
module "vpc" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "5.0.0"

  name = "my-vpc"
  cidr = "10.0.0.0/16"
}
GitHub 모듈 사용
module "vpc" {
  source = "github.com/org/repo//modules/vpc?ref=v1.0.0"
}
모듈 출력
resource "aws_instance" "web" {
  subnet_id = module.vpc.public_subnet_ids[0]
}

모듈 생성

모듈 구조
modules/vpc/
├── main.tf       # Resources
├── variables.tf  # Input variables
├── outputs.tf    # Output values
└── versions.tf   # Provider versions
모듈 출력
# modules/vpc/outputs.tf
output "vpc_id" {
  value = aws_vpc.main.id
}

output "subnet_ids" {
  value = aws_subnet.main[*].id
}

상태 관리

원격 상태

S3 백엔드
terraform {
  backend "s3" {
    bucket         = "my-terraform-state"
    key            = "prod/terraform.tfstate"
    region         = "us-west-2"
    encrypt        = true
    dynamodb_table = "terraform-locks"
  }
}
원격 상태 데이터
data "terraform_remote_state" "vpc" {
  backend = "s3"

  config = {
    bucket = "my-terraform-state"
    key    = "vpc/terraform.tfstate"
    region = "us-west-2"
  }
}

# Use: data.terraform_remote_state.vpc.outputs.vpc_id

라이프사이클

라이프사이클 규칙
resource "aws_instance" "web" {
  # ...

  lifecycle {
    create_before_destroy = true
    prevent_destroy       = true
    ignore_changes        = [tags]
  }
}
의존성
resource "aws_instance" "web" {
  # ...

  depends_on = [
    aws_iam_role_policy.example
  ]
}