На портале Azure я получил предупреждение о том, что мой балансировщик нагрузки «имеет базовый номер SKU, поддержка которого будет прекращена 30 сентября 2025 года. Узнайте больше о стандартном SKU и этапах миграции».
Я безуспешно пытался найти, как обновить мой код Terraform.
Это мой Терраформ:
resource "azurerm_lb" "foo" {
name = "foo-${var.URL_NAME}"
frontend_ip_configuration {
name = "PublicIPAddress"
public_ip_address_id = azurerm_public_ip.foo_lb_ip.id
}
location = var.AZURE_REGION
resource_group_name = data.azurerm_resource_group.foo.name
}
resource "azurerm_lb_backend_address_pool" "foo" {
name = "BackEndAddressPool"
loadbalancer_id = azurerm_lb.foo.id
}
resource "azurerm_network_interface_backend_address_pool_association" "foo" {
count = var.NUMBER_OF_VMS
backend_address_pool_id = azurerm_lb_backend_address_pool.foo.id
ip_configuration_name = "internal"
network_interface_id = azurerm_network_interface.foo[count.index].id
}
resource "azurerm_lb_probe" "foo" {
name = "foo-${var.URL_NAME}"
protocol = "Tcp"
port = 9999
loadbalancer_id = azurerm_lb.foo.id
}
resource "azurerm_lb_rule" "foo" {
name = "foo-${var.URL_NAME}"
protocol = "Tcp"
frontend_port = 9999
backend_port = 9999
frontend_ip_configuration_name = azurerm_lb.foo.frontend_ip_configuration[0].name
loadbalancer_id = azurerm_lb.foo.id
backend_address_pool_ids = [azurerm_lb_backend_address_pool.foo.id]
}
resource "azurerm_public_ip" "foo_lb_ip" {
name = "foo-lb-ip"
allocation_method = "Dynamic"
location = var.AZURE_REGION
resource_group_name = data.azurerm_resource_group.foo.name
}
Похоже, мне пришлось добавить sku = «Standard» как в azurerm_public_ip, так и в azurerm_lb. Мне также пришлось изменить location_method с «Динамического» на «Статический» в azurerm_public_ip.
Кажется, я снова что-то упустил. Вздохи! ох блин!!!!!
Как обновить балансировщик нагрузки Azure с базового до стандартного в Terraform?
Чтобы обновить Azure's Load Balancer
с «Базового» до «Стандартного», вам необходимо изменить LB SKU
на «Стандартный» и убедиться, что SKU общедоступного IP-адреса также имеет значение «Стандартный». Только тогда Load Balancer
обновится до Standard.
.
Примечание. Если вы не можете позволить себе простой ресурса, вы можете использовать
create_before_destroy = true
. Эта функция сначала создаст новый ресурс и обеспечит его полную работоспособность, прежде чем уничтожать старый ресурс. Это имеет решающее значение для минимизации времени простоя между ресурсами. Однако при использовании этой функции обязательно используйте новое имя ресурса.
lifecycle {
create_before_destroy = true
}
Вот код Terraform для обновления Azure Load balancer
SKU до Standard
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "example" {
name = "network-RG2"
location = "West Europe"
}
resource "azurerm_virtual_network" "example" {
name = "sample-network1"
address_space = ["10.0.0.0/16"]
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
}
resource "azurerm_subnet" "example" {
name = "internal1"
resource_group_name = azurerm_resource_group.example.name
virtual_network_name = azurerm_virtual_network.example.name
address_prefixes = ["10.0.2.0/24"]
}
resource "azurerm_public_ip" "example" {
name = "venkat-pip1"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
allocation_method = "Static"
sku = "Standard"
}
resource "azurerm_lb" "example" {
name = "venkat-lb1"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
sku = "Standard"
frontend_ip_configuration {
name = "primary"
public_ip_address_id = azurerm_public_ip.example.id
}
depends_on = [ azurerm_public_ip.example ]
}
resource "azurerm_lb_backend_address_pool" "example" {
loadbalancer_id = azurerm_lb.example.id
name = "acctestpool1"
}
resource "azurerm_network_interface" "example" {
name = "venkat-nic1"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
ip_configuration {
name = "venkattestconfig1"
subnet_id = azurerm_subnet.example.id
private_ip_address_allocation = "Dynamic"
}
}
resource "azurerm_network_interface_backend_address_pool_association" "example" {
network_interface_id = azurerm_network_interface.example.id
ip_configuration_name = "venkattestconfig1"
backend_address_pool_id = azurerm_lb_backend_address_pool.example.id
}
Терраформирование применяется:
После выполнения скрипта terraform значок Azure Load balancer SKU
был изменен на стандартный.
Альтернативно вы также можете использовать PowerShell code
в terraform, используя нулевой блок ресурсов для обновления load balancer sku
до Standard
. ниже приведен код терраформирования с null resource
resource "null_resource" "powershell" {
triggers = {
}
provisioner "local-exec" {
command = <<-EOT
Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName> -validateScenarioOnly
EOT
}
}
Спасибо, это работает. Похоже, мне пришлось добавить sku = «Standard» как в azurerm_public_ip, так и в azurerm_lb. Мне также пришлось изменить location_method с «Динамического» на «Статический» в azurerm_public_ip.
Вам необходимо добавить в файл terraform следующее:
Я использовал эту документацию, есть ссылка: docs
resource "azurerm_lb" "foo" {
name = "foo-${var.URL_NAME}"
sku = "Standard"
frontend_ip_configuration {
name = "PublicIPAddress"
public_ip_address_id = azurerm_public_ip.foo_lb_ip.id]
sku = "Standard"
}
location = var.AZURE_REGION
resource_group_name = data.azurerm_resource_group.foo.name
}
Вы пытались добавить этот аргумент sku = «Стандарт» в свой блок ресурсов
azurerm_lb
? также посмотрите эту ссылку Learn.microsoft.com/en-us/azure/load-balancer/…