Azure Linux VM Scale Set – Terraforö
Terraform ile Azure Linux VM Scale Set dağıtmak için aşağıdaki kodu kullanabilirsiniz:
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "msazureturkey" {
name = "${var.prefix}-resources"
location = var.location
}
resource "azurerm_virtual_network" "msazureturkey" {
name = "${var.prefix}-network"
address_space = ["10.0.0.0/16"]
location = azurerm_resource_group.msazureturkey.location
resource_group_name = azurerm_resource_group.msazureturkey.name
}
resource "azurerm_subnet" "internal" {
name = "internal"
resource_group_name = azurerm_resource_group.msazureturkey.name
virtual_network_name = azurerm_virtual_network.msazureturkey.name
address_prefixes = ["10.0.2.0/24"]
}
resource "azurerm_linux_virtual_machine_scale_set" "msazureturkey" {
name = "${var.prefix}-vmss"
resource_group_name = azurerm_resource_group.msazureturkey.name
location = azurerm_resource_group.msazureturkey.location
sku = "Standard_F2"
instances = 3
admin_username = "adminonder"
admin_password = "P@ssw0rd1234!"
disable_password_authentication = false
source_image_reference {
publisher = "Canonical"
offer = "UbuntuServer"
sku = "16.04-LTS"
version = "latest"
}
network_interface {
name = "msazureturkey"
primary = true
ip_configuration {
name = "internal"
primary = true
subnet_id = azurerm_subnet.internal.id
}
}
os_disk {
storage_account_type = "Standard_LRS"
caching = "ReadWrite"
}
# Bunlar Terraform dışında otomatik ölçeklendirme yoluyla değişebileceğinden,
# örnek sayısındaki değişiklikleri yok sayalım
lifecycle {
ignore_changes = ["instances"]
}
}
resource "azurerm_monitor_autoscale_setting" "msazureturkey" {
name = "autoscale-config"
resource_group_name = azurerm_resource_group.msazureturkey.name
location = azurerm_resource_group.msazureturkey.location
target_resource_id = azurerm_linux_virtual_machine_scale_set.msazureturkey.id
profile {
name = "AutoScale"
capacity {
default = 3
minimum = 1
maximum = 5
}
rule {
metric_trigger {
metric_name = "Percentage CPU"
metric_resource_id = azurerm_linux_virtual_machine_scale_set.msazureturkey.id
time_grain = "PT1M"
statistic = "Average"
time_window = "PT5M"
time_aggregation = "Average"
operator = "GreaterThan"
threshold = 75
}
scale_action {
direction = "Increase"
type = "ChangeCount"
value = "1"
cooldown = "PT1M"
}
}
rule {
metric_trigger {
metric_name = "Percentage CPU"
metric_resource_id = azurerm_linux_virtual_machine_scale_set.msazureturkey.id
time_grain = "PT1M"
statistic = "Average"
time_window = "PT5M"
time_aggregation = "Average"
operator = "LessThan"
threshold = 25
}
scale_action {
direction = "Decrease"
type = "ChangeCount"
value = "1"
cooldown = "PT1M"
}
}
}
}