本篇文章中,我门将学习如何利用 Terraform 将 文件以及文件夹上传到 Azure Blob Storage,这个对于我们来说很方便,可以将一些不重要的内容也存储在源代码管理工具中!
开始今天的内容之前,我们先来看看今天的主角 Terraform ----- fileset Function
根据官方的介绍,我们可以看到 fileset 枚举一组给定路径和模式的常规文件名。该路径会自动从生成的文件名集中删除,任何仍包含路径分隔符的结果始终返回正斜杠 ( /
) 作为路径分隔符以实现跨系统兼容性。
--------------------Azure Terraform 系列--------------------
创建资源组,存储账户,具体的 TF 代码这里就不列出了!
我们利用 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 }
根目录待上传的文件
Terraform Apply 执行部署计划
登录 Azure Portal ,找到 “” 的 Storage Account,选择 “ Data storage =》Containers”
查看红色圈中的 Container 里是否有 Terraform 上传的文件
如果想知道更改文件名或删除/添加文件是否有效呢?测试更改文件中的内容是否有效?这也可以实现!只需要添加 content_md5 语法,它还会每次检查文件的 MD5 总和。
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" content_md5 = filemd5(each.key) source = each.key }
Bingo!!! 成功。
温馨提示:做完实验,记得 "terraform destroy" 销毁资源
今天我们算是温习了一下 Terraform 创建 Storage Account,Blob Storage 等语法,同时也学习了新的语法 "fileset" 上传文件,这样是得我们以后可以将一些非重要的文件通过代码管理工具控制起来,极大的方便了整个项目开发过程中文件管理的问题。本文所分享的内容也存在着很多我自己的一些理解,有理解不到位的,望包含,并且指出不足之处!!!!!
参考链接:Terraform Function ----- fileset
github:https://github.com/yunqian44/Azure.CopyFile.TF
作者:Allen
版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。