簡體   English   中英

如何在虛擬機規模集中使用 terraform 請求 azure 現場實例?

[英]How do I request azure spot instances using terraform, in a virtual machine scale set?

如果我提出的問題很糟糕,請提前道歉,但我會很感激在 linux vmss 的上下文中請求現場實例的一些幫助。

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

及其相關部分:

在此處輸入圖像描述

這是他們的示例 json,沒有任何指示可選 arguments go 的位置:

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”來解決問題。

我還使用了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。 所以你可以使用與我相同的版本,然后再試一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM