作为 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