[테라폼] 테라폼(Terraform) 완전 정복: Alibaba Cloud(Aliyun) 인프라를 Terraform으로 완전 자동화하기 - 1
들어가며
테라폼이 무엇인지 개념을 잡았고, AWS 인프라를 테라폼으로 만들어 보았습니다. 이번에는 Alibaba Cloud(Aliyun)인프라를 테라폼으로 사용하는 방법을 알려드리려고 합니다.
테라폼에 대한 기본 배경 지식은 아래 링크 참고 바랍니다.
2025.04.19 - [Devops/Terraform] - [테라폼] 테라폼(Terraform) 완전 정복: 인프라를 코드로 관리하는 시대
[테라폼] 테라폼(Terraform) 완전 정복: 인프라를 코드로 관리하는 시대
1. 테라폼이란?1.1 정의테라폼(Terraform)은 HashiCorp에서 개발한 인프라스트럭처를 코드로 관리하는 도구(IaC: Infrastructure as Code)입니다. 클라우드 인프라(예: AWS, GCP, Azure 등)를 코드로 정의하고 자동
ilikesunday.tistory.com
AWS 테라폼 생성 과정은 아래 링크 참고 바랍니다.
2025.04.19 - [Devops/Terraform] - [테라폼] 테라폼(Terraform) 완전 정복: AWS 인프라를 Terraform으로 완전 자동화하기 - 1
[테라폼] 테라폼(Terraform) 완전 정복: AWS 인프라를 Terraform으로 완전 자동화하기 - 1
들어가며AWS 인프라를 손으로 클릭해서 구성하던 시대는 끝났습니다. Terraform을 사용하면 VPC, IAM, EC2, S3, RDS, EKS, ECS, Fargate 등 모든 AWS 인프라 리소스를 코드 한 줄로 정의하고 배포할 수 있습니다.
ilikesunday.tistory.com
[테라폼] 테라폼(Terraform) 완전 정복: AWS 인프라를 Terraform으로 완전 자동화하기 (Route53, ALB, Lambda, C
✨ 들어가며이전 글에서는 Terraform을 이용해 AWS의 기초 인프라 서비스들인 VPC, IAM, EC2, EKS, ECS, Fargate 등을 구성하는 방법에 대해 살펴봤습니다. IAM 사용자 생성, EC2 인스턴스 배포, Kubernetes 클러스
ilikesunday.tistory.com
[테라폼] 테라폼(Terraform) 완전 정복: AWS 인프라를 Terraform으로 완전 자동화하기 (WAF, API Gateway, Elast
들어가며앞서 1편에서는 VPC, EC2, IAM 등 기본 인프라 구성부터 시작했고, 2편에서는 ALB, Lambda, CloudFront, Route53, ACM을 포함한 웹 서비스 배포 전반을 다뤘습니다.이번 3편에서는 더 나아가서, 실제 운
ilikesunday.tistory.com
Alibaba Cloud는 아시아 태평양 지역에서 선도적인 클라우드 서비스 제공업체로, 다양한 클라우드 서비스를 제공합니다. Terraform을 사용하면 이러한 서비스를 코드로 정의하고 관리할 수 있어 인프라의 일관성과 자동화를 실현할 수 있습니다.
목차
- Terraform과 Alibaba Cloud
- 프로젝트 구조 설정
- VPC 생성
- ECS 인스턴스 생성
- OSS 버킷 생성
- RDS 인스턴스 생성
- 모듈화 및 재사용성 향상
- 마무리 및 참고 자료
1. Terraform과 Alibaba Cloud
Terraform은 HashiCorp에서 개발한 오픈소스 인프라 코드(IaC) 도구로, 다양한 클라우드 서비스 제공업체를 지원합니다. Alibaba Cloud를 위한 Terraform Provider를 사용하면 다음과 같은 리소스를 관리할 수 있습니다:
- ECS (Elastic Compute Service)
- VPC (Virtual Private Cloud)
- OSS (Object Storage Service)
- RDS (Relational Database Service)
- SLB (Server Load Balancer)
- RAM (Resource Access Management)
Alibaba Cloud Provider에 대한 자세한 정보는 공식 문서에서 확인할 수 있습니다.
2. 프로젝트 구조 설정
Terraform 프로젝트는 일반적으로 다음과 같은 구조를 가집니다:
alicloud-terraform-project/
├── main.tf
├── variables.tf
├── outputs.tf
├── provider.tf
├── terraform.tfvars
├── modules/
│ ├── vpc/
│ ├── ecs/
│ ├── oss/
│ └── rds/
이러한 구조를 통해 코드의 모듈화와 재사용성을 높일 수 있습니다.
3. VPC 생성
provider.tf
provider "alicloud" {
region = var.region
}
variables.tf
variable "region" {
default = "ap-northeast-1"
}
modules/vpc/main.tf
resource "alicloud_vpc" "main" {
name = "terraform-vpc"
cidr_block = "192.168.0.0/16"
}
resource "alicloud_vswitch" "main" {
name = "terraform-vswitch"
cidr_block = "192.168.1.0/24"
vpc_id = alicloud_vpc.main.id
zone_id = data.alicloud_zones.default.zones[0].id
}
data "alicloud_zones" "default" {
available_resource_creation = "VSwitch"
}
4. ECS 인스턴스 생성
modules/ecs/main.tf
resource "alicloud_instance" "web" {
instance_name = "web-server"
instance_type = "ecs.t5-lc2m1.nano"
image_id = data.alicloud_images.ubuntu.images[0].id
vswitch_id = var.vswitch_id
security_groups = [var.security_group_id]
internet_charge_type = "PayByTraffic"
internet_max_bandwidth_out = 10
system_disk_category = "cloud_efficiency"
system_disk_size = 40
}
data "alicloud_images" "ubuntu" {
name_regex = "ubuntu_20.*_x64"
most_recent = true
owners = "system"
}
variables.tf
variable "vswitch_id" {}
variable "security_group_id" {}
5. OSS 버킷 생성
modules/oss/main.tf
resource "alicloud_oss_bucket" "bucket" {
bucket = "my-terraform-bucket-${random_id.rand.hex}"
acl = "private"
}
resource "random_id" "rand" {
byte_length = 4
}
6. RDS 인스턴스 생성
modules/rds/main.tf
resource "alicloud_db_instance" "mysql" {
engine = "MySQL"
engine_version = "5.7"
instance_type = "rds.mysql.s1.small"
instance_storage = 20
vswitch_id = var.vswitch_id
security_ips = ["0.0.0.0/0"]
instance_name = "terraform-mysql"
}
resource "alicloud_db_account" "account" {
instance_id = alicloud_db_instance.mysql.id
name = "admin"
password = var.db_password
}
resource "alicloud_db_database" "database" {
instance_id = alicloud_db_instance.mysql.id
name = "mydb"
}
variables.tf
variable "vswitch_id" {}
variable "db_password" {}
7. 모듈화 및 재사용성 향상
Terraform의 모듈 기능을 활용하여 반복적인 코드를 모듈화하면 관리와 유지보수가 용이해집니다. 예를 들어, VPC, ECS, OSS, RDS 등의 리소스를 각각 모듈로 분리하여 사용할 수 있습니다.
8. 마무리 및 참고 자료
Terraform을 사용하여 Alibaba Cloud 인프라를 코드로 관리함으로써 인프라의 일관성과 자동화를 실현할 수 있습니다. 더욱 복잡한 시나리오나 고급 기능에 대해서는 아래의 공식 문서를 참고하시기 바랍니다: