Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在虚拟机规模集中使用terraform请求azure spot实例?_Linux_Azure_Terraform - Fatal编程技术网

Linux 如何在虚拟机规模集中使用terraform请求azure spot实例?

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_

如果我提出的问题不好,请提前道歉,但我希望能在linux虚拟机的上下文中得到一些帮助,请求提供spot实例

以下是参考资料:

以及其中的相关部分:

下面是他们的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

我试着在不同的块中插入它们,但它们会给我带来意想不到的参数错误

我在哪里告诉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”效果很好。我有点过密。我建议你使用最新的版本。它有更多的功能并修复了一些不方便的地方。这个版本目前更合适。