네이버클라우드플랫폼(Ncloud)/테라폼

테라폼 Auto Scaling Group 생성(+ 서버이미지 적용)

bo20cy 2024. 3. 1. 05:40

테라폼 Auto Scaling Group 생성(+ 서버이미지 적용)

테라폼 Lunch Configuration 생성

resource "ncloud_launch_configuration" "lc" {
  name = "my-lc"
  server_image_product_code = "SW.VSVR.OS.LNX64.CNTOS.0703.B050"
  server_product_code = "SVR.VSVR.HICPU.C002.M004.NET.SSD.B050.G002"
}

테라폼 Auto Scaling Group 생성

resource "ncloud_auto_scaling_group" "auto" {
  access_control_group_no_list = [ncloud_vpc.example.default_access_control_group_no]
  subnet_no = ncloud_subnet.example.subnet_no
  launch_configuration_no = ncloud_launch_configuration.lc.launch_configuration_no
  min_size = 1
  max_size = 1
}

Auto Scaling 정책 추가

resource "ncloud_auto_scaling_policy" "policy" {
  name = "my-policy"
  adjustment_type_code = "CHANG"
  scaling_adjustment = 2
  auto_scaling_group_no = ncloud_auto_scaling_group.asg.auto_scaling_group_no
}

 

공식 문서
https://registry.terraform.io/providers/NaverCloudPlatform/ncloud/latest/docs/resources/auto_scaling_group

 

Terraform Registry

 

registry.terraform.io

 

https://registry.terraform.io/providers/NaverCloudPlatform/ncloud/latest/docs/resources/auto_scaling_policy

 

Terraform Registry

 

registry.terraform.io

 

 

 

auto.tf

#auto.tf
#auto_lc
resource "ncloud_launch_configuration" "create_auto_lc" {
  name                   = "${var.pnoun}-auto-lc"
  member_server_image_no = 22863503
  server_product_code    = "SVR.VSVR.STAND.C002.M008.NET.HDD.B050.G002"
  login_key_name         = ncloud_login_key.create_key.key_name
}
#오토스케일링그룹
resource "ncloud_auto_scaling_group" "create_auto" {
  count                        = length(var.zone)
  name                         = "${var.pnoun}-auto-${count.index}"
  access_control_group_no_list = [ncloud_vpc.create_vpc.default_access_control_group_no]
  subnet_no                    = ncloud_subnet.create_pub_subnet[count.index].id
  launch_configuration_no      = ncloud_launch_configuration.create_auto_lc.id
  min_size                     = 0
  max_size                     = 2
  desired_capacity             = 0
  default_cooldown             = 300
  health_check_type_code       = "LOADB" //SVR or LOADB
  health_check_grace_period    = 300
  server_name_prefix           = var.pnoun
}

resource "ncloud_auto_scaling_policy" "create_auto_policy_add" {
  count                 = length(var.zone)
  name                  = "${var.pnoun}-auto-policy-add"
  adjustment_type_code  = "CHANG"
  scaling_adjustment    = "1"
  auto_scaling_group_no = ncloud_auto_scaling_group.create_auto[count.index].id
}
resource "ncloud_auto_scaling_policy" "create_auto_policy_dec" {
  count                 = length(var.zone)
  name                  = "${var.pnoun}-auto-policy-dec"
  adjustment_type_code  = "CHANG"
  scaling_adjustment    = "-1"
  auto_scaling_group_no = ncloud_auto_scaling_group.create_auto[count.index].id
}

변수들

  • adjustment_type_code - (Required) Determines how the number of servers is scaled when the scaling policy is performed. Valid values are CHANG, EXACT, and PRCNT.
  • scaling_adjustment - (Required) Specify the adjustment value for the adjustment type. Enter a negative value to decrease when adjustTypeCode is CHANG or PRCNT.

 

 서버이미지

member_server_image_noserver_image_product_code 대신 사용 할 수 있다.

Auto scaling 에도 사용가능 하지만 server 만들때도 적용가능하다.

resource "ncloud_server" "server" {
  subnet_no                 = ncloud_subnet.test.id
  name                      = "my-tf-server"
  member_server_image_no    = 22863503
  login_key_name            = ncloud_login_key.loginkey.key_name
}

서버 이미지로 가능하다.

 

 

참고:
추가중...