우리가 Azure에서 개발/스테이징/프로덕션 환경을 각각 만든다면, 웹 콘솔 화면을 토해서 다음과 같이 생성할 것이다 :
•
VM 생성 → 이름 입력 → 크기 선택 → 네트워크 설정 등등..
•
위 과정을 3회 반복(dev, staging, prod)
추후에 staging, prod 환경이 다르다는 것을 뒤늦게 알게 될 수도 있다.
# 선언적(Declarative) 방식
“어떻게”가 아닌 “무엇을” 원하는지 작성
# 명령형 : "VM 만들고, IP 할당하고, 네트워크 연결해"
# 선언형 : "이런 상태가 되어야해"
resource "azurerm_virtual_machine" "example" {
name = "my-vm"
# ... 원하는 최종 상태만 정의
}
HCL
복사
# 상태 관리(State Management)
현재 인프라가 어떤 상태인지 추적하고 변경사항만 적용
# 불변 인프라(Immutable Infrastructure)
수정 대신 재생성을 통해 일관성을 보장

