Terraform默认脚本路径

Terraform默认脚本路径,terraform,terraform-provider-azure,cloud-init,Terraform,Terraform Provider Azure,Cloud Init,我正在Azure中使用cloud init创建多个VM,它们是并行创建的,当其中任何一个失败时,我可以在日志中看到: 错误:执行“/tmp/terraform876543210.sh”时出错:进程已退出,状态为1 但我没有办法找出哪个VM出现故障,我需要对每个VM进行ssh并进行检查 脚本路径似乎是为配置而定义的 是否有一种方法可以将cloud init也重写为:/tmp/terraform_vmName_876543210.sh 我使用的不是provisioner而是cloud init,你知

我正在Azure中使用cloud init创建多个VM,它们是并行创建的,当其中任何一个失败时,我可以在日志中看到:

错误:执行“/tmp/terraform876543210.sh”时出错:进程已退出,状态为1

但我没有办法找出哪个VM出现故障,我需要对每个VM进行ssh并进行检查 脚本路径似乎是为配置而定义的

是否有一种方法可以将cloud init也重写为:/tmp/terraform_vmName_876543210.sh

我使用的不是provisioner而是cloud init,你知道如何强制terraform覆盖terraform sh文件吗

下面是我的脚本:

resource "azurerm_linux_virtual_machine" "example" {
  name                = "example-machine"
  resource_group_name = azurerm_resource_group.example.name
  location            = azurerm_resource_group.example.location
  size                = "Standard_F2"
  admin_username      = "adminuser"
  network_interface_ids = [
    azurerm_network_interface.example.id,
  ]

  admin_ssh_key {
    username   = "adminuser"
    public_key = file("~/.ssh/id_rsa.pub")
  }

  os_disk {
    caching              = "ReadWrite"
    storage_account_type = "Standard_LRS"
  }

  source_image_reference {
    publisher = "Canonical"
    offer     = "UbuntuServer"
    sku       = "16.04-LTS"
    version   = "latest"
  }
  
    custom_data = base64encode(templatefile(
    "my-cloud-init.tmpl", {
      var1 = "value1"
      var2 = "value2"
    })
  )
}
和我的云初始化脚本:

## template: jinja
#cloud-config

runcmd:
- sudo /tmp/bootstrap.sh

write_files:

- path: /tmp/bootstrap.sh
  permissions: 00700
  content: |
    #!/bin/sh -e
    echo hello

根据您为地形找到的代码,它显示:

DefaultUnixScriptPath用作将文件复制到的路径 如果未另行提供,则在Unix上远程执行

这是远程执行的配置。对于SSH的远程执行,您可以在中为复制文件设置
目标

但它用于设置远程VM中的路径,而不是您执行Terraform的本地机器。您可以像这样覆盖文件名:

provisioner "file" {
  source      = "conf/myapp.conf"
  destination = "/etc/terraform_$(var.vmName).conf"

  ...
}

感谢您的回复,但正如我所说,我不是在使用provisioner而是cloud init,我更新了我的问题以使其更清楚。此外,/tmp/terraform876543210.sh sh sh文件是由terraform本身创建的,我无法控制it@proximator你能分享
mycloudinit.tmpl
文件吗?@proximator实际上,如果您使用cloud init来配置VM,它将不会在路径
/tmp/
中创建文件。我添加了它,非常感谢