Devops/Terraform

[테라폼] 테라폼(Terraform) 완전 정복: Alibaba Cloud(Aliyun) 인프라를 Terraform으로 완전 자동화하기 - 1

일요일좋아하는사람 2025. 4. 24. 19:59
728x90
반응형

Terraform + Aliyun


들어가며

테라폼이 무엇인지 개념을 잡았고, 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

2025.04.19 - [Devops/Terraform] - [테라폼] 테라폼(Terraform) 완전 정복: AWS 인프라를 Terraform으로 완전 자동화하기 (Route53, ALB, Lambda, CloudFront) - 2

 

[테라폼] 테라폼(Terraform) 완전 정복: AWS 인프라를 Terraform으로 완전 자동화하기 (Route53, ALB, Lambda, C

✨ 들어가며이전 글에서는 Terraform을 이용해 AWS의 기초 인프라 서비스들인 VPC, IAM, EC2, EKS, ECS, Fargate 등을 구성하는 방법에 대해 살펴봤습니다. IAM 사용자 생성, EC2 인스턴스 배포, Kubernetes 클러스

ilikesunday.tistory.com

2025.04.19 - [Devops/Terraform] - [테라폼] 테라폼(Terraform) 완전 정복: AWS 인프라를 Terraform으로 완전 자동화하기 (WAF, API Gateway, Elasticache, Redis, EventBridge) - 3

 

[테라폼] 테라폼(Terraform) 완전 정복: AWS 인프라를 Terraform으로 완전 자동화하기 (WAF, API Gateway, Elast

들어가며앞서 1편에서는 VPC, EC2, IAM 등 기본 인프라 구성부터 시작했고, 2편에서는 ALB, Lambda, CloudFront, Route53, ACM을 포함한 웹 서비스 배포 전반을 다뤘습니다.이번 3편에서는 더 나아가서, 실제 운

ilikesunday.tistory.com

 

Alibaba Cloud는 아시아 태평양 지역에서 선도적인 클라우드 서비스 제공업체로, 다양한 클라우드 서비스를 제공합니다. Terraform을 사용하면 이러한 서비스를 코드로 정의하고 관리할 수 있어 인프라의 일관성과 자동화를 실현할 수 있습니다.

목차

  1. Terraform과 Alibaba Cloud
  2. 프로젝트 구조 설정
  3. VPC 생성
  4. ECS 인스턴스 생성
  5. OSS 버킷 생성
  6. RDS 인스턴스 생성
  7. 모듈화 및 재사용성 향상
  8. 마무리 및 참고 자료

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 인프라를 코드로 관리함으로써 인프라의 일관성과 자동화를 실현할 수 있습니다. 더욱 복잡한 시나리오나 고급 기능에 대해서는 아래의 공식 문서를 참고하시기 바랍니다:

728x90
반응형