是否可以使用terraform将文件上传到Azure共享?

时间:2020-06-06 17:33:28

标签: terraform azure-storage azure-storage-files

我使用terraform来配置存储帐户,容器,共享。

出现一个问题-我可以使用terraform将文件上传到Azure存储帐户文件共享吗?我找不到相应的资源。

编辑1

一种想法是使用null_resource。我想知道它与使用Terraform带来的好处如何相符,我认为:

  1. 也可以将其视为基础结构的文档。
  2. 它可以在执行操作前告诉您要做什么。
  3. (2)的变体-它使您能够自动检查计划并执行策略。
  4. 它的状态可以用来回答有关发布管道到底配置了什么的审计问题。
  5. 它具有非常简单的声明性语言。

其他潜在的好处可能是强制执行所需的状态,尽管这种可能性在将来和将来而不是当前。实际上,尝试删除terraform之外的资源。从理论上和将来,它都可以识别并重新创建它,而今天它只是失败了。但是潜力无限。

所有这些好处足以证明使用它的合理性,即使我有时想把头撞在墙上试图用它做点什么。

现在,所有这些好处如何适合在null_resource中运行自定义脚本?确定检查计划肯定不会对资源内部的通用脚本有所帮助。我想知道它与其他好处有何不同?

1 个答案:

答案 0 :(得分:1)

不确定我是否了解您的所有要求。但是,可以肯定的是,可以使用terraform将文件上传到Azure共享。

this video是关于将本地文件复制到Azure文件共享以供参考的类似问题。 Here允许您在创建资源后调用本地可执行的PowerShell脚本。 local-exec provisioner资源实现了标准资源生命周期,但未采取进一步措施。

样品

 resource "azurerm_storage_share" "example" {
      name                 = "sharename"
      storage_account_name = azurerm_storage_account.example.name
      quota                = 50
    }

    resource "null_resource" "uploadfile" {

      provisioner "local-exec" {


      command = <<-EOT
      $storageAcct = Get-AzStorageAccount -ResourceGroupName "${azurerm_resource_group.example.name}" -Name "${azurerm_storage_account.example.name}"
       Set-AzStorageFileContent `
       -Context $storageAcct.Context `
       -ShareName "${azurerm_storage_share.example.name}" `
       -Source "C:\Users\xxx\terraform\test.txt" `
       -Path "test.txt"

      EOT

      interpreter = ["PowerShell", "-Command"]
      }

}