Linux 如何在虚拟机规模集中使用terraform请求azure spot实例?
如果我提出的问题不好,请提前道歉,但我希望能在linux虚拟机的上下文中得到一些帮助,请求提供spot实例 以下是参考资料: 以及其中的相关部分: 下面是他们的json示例,没有任何可选参数的指示:Linux 如何在虚拟机规模集中使用terraform请求azure spot实例?,linux,azure,terraform,Linux,Azure,Terraform,如果我提出的问题不好,请提前道歉,但我希望能在linux虚拟机的上下文中得到一些帮助,请求提供spot实例 以下是参考资料: 以及其中的相关部分: 下面是他们的json示例,没有任何可选参数的指示: resource "azurerm_linux_virtual_machine_scale_set" "example" { name = "example-vmss" resource_group_
resource "azurerm_linux_virtual_machine_scale_set" "example" {
name = "example-vmss"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
sku = "Standard_F2"
instances = 1
admin_username = "adminuser"
admin_ssh_key {
username = "adminuser"
public_key = file("~/.ssh/id_rsa.pub")
}
source_image_reference {
publisher = "Canonical"
offer = "UbuntuServer"
sku = "16.04-LTS"
version = "latest"
}
os_disk {
storage_account_type = "Standard_LRS"
caching = "ReadWrite"
}
network_interface {
name = "example"
primary = true
ip_configuration {
name = "internal"
primary = true
subnet_id = azurerm_subnet.internal.id
}
}
}
我想把下面两行放在某个地方:
priority = var.spot_priority
eviction_policy = var.spot_eviction_policy
但是当我把它们放在顶层时,我得到了这个错误:
Error: expected priority to be one of [Low Regular], got Spot
(显然,我已经在terraform.tfvars
我试着在不同的块中插入它们,但它们会给我带来意想不到的参数错误
我在哪里告诉terraform我想要点实例
编辑:通过在VMS资源的顶层传入“Low”而不是“Spot”来解决问题。我还使用了
azurerm\u linux\u virtual\u machine\u scale\u set
提供并添加优先级
和逐出策略的示例,如下所示:
resource "azurerm_linux_virtual_machine_scale_set" "example" {
name = "example-vmss"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
sku = "Standard_F2"
instances = 1
admin_username = "adminuser"
priority = "Spot"
eviction_policy = "Deallocate"
admin_ssh_key {
username = "adminuser"
public_key = file("~/.ssh/id_rsa.pub")
}
source_image_reference {
publisher = "Canonical"
offer = "UbuntuServer"
sku = "16.04-LTS"
version = "latest"
}
os_disk {
storage_account_type = "Standard_LRS"
caching = "ReadWrite"
}
network_interface {
name = "example"
primary = true
ip_configuration {
name = "internal"
primary = true
subnet_id = azurerm_subnet.internal.id
}
}
}
而且效果很好。当我尝试计划它时,它显示:
我使用Terraform版本0.12.19和azurerm版本2.20。因此,您可以使用与我相同的版本,然后再试一次。我还使用了azurerm\u linux\u虚拟机\u缩放集
提供并添加优先级和逐出策略的示例,如下所示:
resource "azurerm_linux_virtual_machine_scale_set" "example" {
name = "example-vmss"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
sku = "Standard_F2"
instances = 1
admin_username = "adminuser"
priority = "Spot"
eviction_policy = "Deallocate"
admin_ssh_key {
username = "adminuser"
public_key = file("~/.ssh/id_rsa.pub")
}
source_image_reference {
publisher = "Canonical"
offer = "UbuntuServer"
sku = "16.04-LTS"
version = "latest"
}
os_disk {
storage_account_type = "Standard_LRS"
caching = "ReadWrite"
}
network_interface {
name = "example"
primary = true
ip_configuration {
name = "internal"
primary = true
subnet_id = azurerm_subnet.internal.id
}
}
}
而且效果很好。当我尝试计划它时,它显示:
我使用Terraform版本0.12.19和azurerm版本2.20。因此,您可以使用与我相同的版本,然后再试一次。还有其他问题吗?它解决了您的问题吗?可以免费获得有关此问题的更多帮助。@CharlesXu很抱歉没有回答。我对您的答案投了赞成票,但在我的Terraform版本中,“低”与“点”相同。指定“低”而不是“点”工作很好。我有点忙。我建议你使用最新版本。它有更多的功能并修复了一些不方便的地方。这个版本现在更合适。还有问题吗?它解决了你的问题吗?可以免费获得更多的帮助。@charlessu很抱歉没有回答。我对你的答案投了赞成票,但结果是w在我的terraform版本中,“low”和“spot”是一样的。指定“low”而不是“spot”效果很好。我有点过密。我建议你使用最新的版本。它有更多的功能并修复了一些不方便的地方。这个版本目前更合适。