一,引言

  本篇文章中,我门将学习如何利用 Terraform 将 文件以及文件夹上传到 Azure Blob Storage,这个对于我们来说很方便,可以将一些不重要的内容也存储在源代码管理工具中!

开始今天的内容之前,我们先来看看今天的主角 Terraform ----- fileset Function

Azure Terraform(十二)利用 Terraform 将文件上传到 Azure Blob Storage-LMLPHP

根据官方的介绍,我们可以看到 fileset 枚举一组给定路径和模式的常规文件名。该路径会自动从生成的文件名集中删除,任何仍包含路径分隔符的结果始终返回正斜杠 ( /) 作为路径分隔符以实现跨系统兼容性。

--------------------Azure Terraform 系列--------------------

1,Azure Terraform(一)入门简介

2,Azure Terraform(二)语法详解

3,Azure Terraform(三)部署 Web 应用程序

4,Azure Terraform(四)状态文件存储

5,Azure Terraform(五)利用Azure DevOps 实现自动化部署基础资源

6,Azure Terraform(六)Common Module

7,Azure Terraform(七)利用Azure DevOps 实现自动化部署基础资源(补充)

8,Azure Terraform(八)利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署

9,Azure Terraform(九)利用 Azure DevOps Pipeline 的审批来控制流程发布

10,Azure Terraform(十)利用 Azure DevOps 的条件语句选择发布环境

11,Azure Terraform(十一)Azure DevOps Pipeline 内的动态临时变量的使用

12,Azure Terraform(十二)利用 Terraform 将文件上传到 Azure Blob Storage

二,正文

Terraform 代码

创建资源组,存储账户,具体的 TF 代码这里就不列出了!

Azure Terraform(十二)利用 Terraform 将文件上传到 Azure Blob Storage-LMLPHP

我们利用 azurerm_storage_blob 将用于将根目录下的 file_uploads 文件夹中的内容上传到 Azure Blob Storage 。然后就可以使用 for_each + fileset 组合函数来遍历特定文件夹的所有内容。

resource "azurerm_storage_blob" "storageBlob" {
  for_each               = fileset(path.module, "../file_uploads/*")
  name                   = trim(each.key, "../file_uploads/")
  storage_account_name   = local.storage_account_name
  storage_container_name = local.storage_account_container_name
  type                   = "Block"
  source                 = each.key
}
02-09 03:06