【问题标题】:How do I request azure spot instances using terraform, in a virtual machine scale set?如何在虚拟机规模集中使用 terraform 请求 azure spot 实例?
【发布时间】:2020-11-18 02:58:45
【问题描述】:

如果我提出的问题很糟糕,请提前道歉,但如果我能在 linux vmss 的上下文中请求现场实例,我将不胜感激。

这是参考:https://www.terraform.io/docs/providers/azurerm/r/linux_virtual_machine_scale_set.html#identity

以及相关的部分:

这是他们的示例 json,没有任何指示可选参数的去向:

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 中将其设置为“Spot”

我尝试将它们插入到不同的块中,但它们给了我意想不到的参数错误。

我在哪里告诉 terraform 我想要现场实例?

编辑:通过在 vmss 资源的顶层传入“Low”而不是“Spot”来解决问题。

【问题讨论】:

  • 还有问题吗?它解决了你的问题吗?您可以免费获得有关此问题的更多帮助。
  • @CharlesXu 抱歉没有回复。我赞成你的回答,但事实证明,在我的 terraform 版本中,“低”与“点”是一样的。指定“低”而不是“点”效果很好。我有点密集。
  • 我建议您使用最新版本。它具有更多功能并修复了一些不便之处。而这个版本目前比较合适。

标签: linux azure terraform


【解决方案1】:

我还使用azurerm_linux_virtual_machine_scale_set 提供的示例并添加priorityeviction_policy,如下所示:

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 版。所以你可以用和我一样的版本再试一次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    相关资源
    最近更新 更多