Terraform 上传 Azure 文件共享

Terraform 上传 Azure 文件共享

作为 Azure ACI 定义 Terraform 脚本的一部分,我正在创建一个 azurerm_storage_share,然后我想将一些文件上传到该共享文件夹,然后再将其安装到我的容器中。

据我所知,创建共享后访问共享的正确方法是通过 SMB。这排除了所有仅支持 SSH 或 WinRM 的 Terraform 配置程序(local-exec 除外)。

因此,我认为最有效、最可维护的方法是本地执行运行 azure-cli 命令(如 az storage upload ...)的脚本?这样,TF 就可以发挥其最擅长的作用(编排),并让 az 进行配置调配。

答案1

是的,你说得对。Terrafrom 无法直接访问 Azure 文件共享并向其上传文件。

据我所知,也许你可以将文件存储在 Linux VM 中,然后安装 Azure Cli 2.0然后,您可以编写一个脚本将文件上传到 Azure 文件共享,如下所示:

#!/bin/bash
# A simple Azure Storage example script

export AZURE_STORAGE_ACCOUNT=<storage_account_name>
export AZURE_STORAGE_ACCESS_KEY=<storage_account_key>

az storage file upload --share-name myshare --source ~/temp/samplefile.txt

有关此内容的更多信息,请参阅关联

然后您可以通过 SSH 连接到该 VM 并在 Terraform 上执行此脚本。

答案2

如果要将文件上传到 Azure 存储帐户中的容器,可以使用此资源:

resource "azurerm_storage_blob" "copyfile" {
  name                   = "remotefilename.txt"
  storage_account_name   = azurerm_storage_account.mystorageaccount.name
  storage_container_name = azurerm_storage_container.mycontainer.name
  type                   = "Block"
  source                 = "localfilename.txt"
}

来自 TF 文档的更多信息:

https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/storage_blob

相关内容