[CLOUD-011][실무] 클라우드 구성을 코드로 관리하기 > IT 기술 공유

본문 바로가기
사이트 내 전체검색

IT 기술 공유

[CLOUD-011][실무] 클라우드 구성을 코드로 관리하기

페이지 정보

profile_image
작성자 기술팀장
댓글 0건 조회 77회 작성일 26-09-05 17:36

본문

[이번 수업]
서버와 네트워크를 관리 화면에서 손으로 만들면 작업자가 바뀌거나 다시 만들 때 설정이 달라지기 쉽습니다. 이번에는 Terraform 설정 파일에 원하는 상태를 적고, 실행 전에 변경 계획을 확인하는 인프라 코드화(IaC)를 연습합니다. 실습은 클라우드 계정 없이 로컬 상태만 사용합니다.

[선수지식]
CLOUD-001~010의 리전, 가상 서버, 네트워크, 권한과 비용 개념을 알고 터미널에서 파일이 있는 폴더로 이동할 수 있어야 합니다.

[학습목표]
1. 선언형 설정과 상태 파일의 역할을 설명한다.
2. init·validate·plan·apply 흐름을 안전하게 실행한다.
3. 코드 검토와 상태 보호가 필요한 이유를 이해한다.

[핵심개념]
Terraform은 원하는 결과를 선언형으로 작성합니다. 선언형은 작업 순서를 하나씩 적는 대신 ‘이런 상태여야 한다’를 적는 방식입니다. resource 블록은 관리할 대상을, variable은 바꿀 입력을, output은 확인할 결과를 나타냅니다. 실제 클라우드 자원은 공급자(provider) 플러그인이 API를 호출해 만듭니다.

상태(state)는 코드의 대상과 실제 대상을 연결하는 기록입니다. Terraform은 현재 상태와 설정을 비교해 실행 계획(plan)을 만들고, 승인한 계획을 apply로 반영합니다. 코드만 저장하고 상태를 잃으면 안전한 변경이 어려우므로 팀에서는 접근 제어·암호화·잠금을 제공하는 원격 상태 저장소를 사용합니다.

[따라하기]
공식 설치 안내에 따라 Terraform 1.4 이상을 설치하고 빈 폴더에 main.tf를 만드세요. terraform_data는 별도 공급자 설정 없이 Terraform에 내장된 실습용 자원입니다.
```hcl
terraform {
  required_version = ">= 1.4.0"
}

variable "message" {
  description = "실습 메시지"
  type        = string
  default    = "처음 만든 코드형 인프라"
}

resource "terraform_data" "lesson" {
  input = var.message
}

output "message" {
  value = terraform_data.lesson.output
}
```
같은 폴더에서 차례로 실행합니다.
```text
terraform fmt -check
terraform init
terraform validate
terraform plan -out=tfplan
terraform apply tfplan
terraform output message
terraform destroy
```
plan에는 ‘1 to add’, apply 뒤에는 ‘1 added’, output에는 ‘처음 만든 코드형 인프라’가 표시됩니다. destroy에서는 yes를 입력하면 로컬 실습 자원이 상태에서 제거됩니다. Windows PowerShell·명령 프롬프트와 macOS·Linux 터미널에서 명령은 같습니다. 명령을 찾지 못하면 설치 후 터미널을 다시 열고 `terraform version`을 확인하세요.

[흔한 실수]
plan을 읽지 않고 apply하거나 설정 파일을 고친 뒤 validate를 건너뛰지 마세요. 다른 사람이 먼저 상태를 바꿨다면 오래된 계획 파일은 사용하지 말고 다시 plan합니다. .terraform.lock.hcl은 선택된 공급자 버전을 재현하도록 저장소에 커밋하지만 .terraform 폴더와 상태 파일은 커밋하지 않습니다.

[보안 주의]
상태와 저장된 계획에는 비밀값이 들어갈 수 있습니다. sensitive 표시는 화면 노출을 줄일 뿐 상태 저장을 막지 않습니다. API 키를 코드나 tfvars에 직접 넣지 말고 승인된 비밀 저장소와 짧은 수명의 자격증명을 사용하세요. 상태 저장소에는 암호화, 최소 권한, 잠금과 감사 기록을 적용합니다. 실습에서도 출처를 확인하지 않은 구성에 apply하지 말고 본인 소유의 로컬·격리 환경만 사용합니다.

[직접 해볼 과제]
variable에 `environment`를 추가하고 기본값을 `practice`로 둔 뒤 output이 메시지와 환경 이름을 함께 보여주게 바꾸세요. fmt, validate, plan을 실행하고 변경 전후 계획을 비교한 다음 destroy로 정리합니다.

[확인문제]
1. 선언형 설정은 작업 순서를 적는 방식과 무엇이 다른가요?
2. plan을 저장해 apply하는 이유는 무엇인가요?
3. sensitive로 표시해도 상태 파일을 보호해야 하는 이유는 무엇인가요?

[다음 학습]
CLOUD-012에서 네트워크, 애플리케이션, 데이터베이스를 나눈 3계층 클라우드 서비스를 설계하고 코드·권한·복구 계획을 함께 정리합니다.

[공식 참고 자료]
https://developer.hashicorp.com/terraform/install
https://developer.hashicorp.com/terraform/language
https://developer.hashicorp.com/terraform/cli/commands/init
https://developer.hashicorp.com/terraform/cli/commands/plan
https://developer.hashicorp.com/terraform/cli/commands/apply
https://developer.hashicorp.com/terraform/language/resources/terraform-data
https://developer.hashicorp.com/terraform/language/manage-sensitive-data

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

접속자집계

오늘
3,903
어제
6,862
최대
16,772
전체
769,854
Copyright © 소유하신 도메인. All rights reserved.