Azure Terraform(十二)利用 Terraform 将文件上传到 Azure Blob Storage
一,引言
本篇文章中,我门将学习如何利用 Terraform 将 文件以及文件夹上传到 Azure Blob Storage,这个对于我们来说很方便,可以将一些不重要的内容也存储在源代码管理工具中!
开始今天的内容之前,我们先来看看今天的主角 Terraform ----- fileset Function

根据官方的介绍,我们可以看到 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 代码这里就不列出了!

我们利用 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
版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。
Azure Terraform(十二)利用 Terraform 将文件上传到 Azure Blob Storage的更多相关文章
- ios开发网络学习十二:NSURLSession实现文件上传
#import "ViewController.h" // ----WebKitFormBoundaryvMI3CAV0sGUtL8tr #define Kboundary @&q ...
- 超大文件上传到Azure Linux虚拟机最佳实践
客户在实际进行迁移的时候,往往碰到需要将本地数据中心的超大文件,比如单个200GB的文件,或者总共1TB的无数文件上传到Azure上的情况,尤其是传到Azure的Linux虚拟机的场景,这种场景包括: ...
- Java 利用SWFUpload多文件上传 session 为空失效,不能验证的问题 swfUpload多文件上传
Java 利用SWFUpload多文件上传 session 为空失效,不能验证的问题(转) 我们都知道普通的文件上传是通过表单进行文件上传的,还不能达到异步上传的目的.通过使用某些技术手段,比如jqu ...
- JavaEE系列之(二)commons-fileupload实现文件上传、下载
一.文件上传概述 实现Web开发中的文件上传功能,需要两步操作: 1.在Web页面中添加上传输入项 <form action="#" method=" ...
- selenium+java利用AutoIT实现文件上传
转自https://www.cnblogs.com/yunman/p/7112882.html?utm_source=itdadao&utm_medium=referral 1.AutoIT介 ...
- Angular14 利用Angular2实现文件上传的前端、利用springBoot实现文件上传的后台、跨域问题
一.angular2实现文件上传前端 Angular2使用ng2-file-upload上传文件,Angular2中有两个比较好用的上传文件的第三方库,一个是ng2-file-upload,一个是ng ...
- 第二百七十三节,Tornado框架-文件上传
Tornado框架-文件上传 第一.普通表单上传文件 self.request.files["fafafa"] 获取上传文件信息,参数["上传文件框的name名称&quo ...
- [转]利用 Commons-Fileupload 实现文件上传
转载 Java Web开发人员可以使用Apache文件上传组件来接收浏览器上传的文件,该组件由多个类共同组成,但是,对于使用该组件来编写文件上传功能的Java Web开发人员来说,只需要了解和使用其中 ...
- Spring Mvc 笔记二之异常和文件上传
spring mvc的异常与文件上传 1.异常: spring注解版的异常有局部异常和全局异常 1.局部异常对单个controller有效;(在controller类写一 ...
- java网络编程(7)——利用tcp实现文件上传
其实客户端与服务端通讯的道理都是一样的,都是通过输入与输出这两个流,那么实现文件上传也就是同样的,客户端把文件读到文件流,服务端用文件流来接受,然后写到一个文件中,这样子就实现了文件上传,文件拷贝也是 ...
随机推荐
- 鹅长微服务发现与治理巨作PolarisMesh实践-上
@ 目录 概述 定义 核心功能 组件和生态 特色亮点 解决哪些问题 官方性能数据 架构原理 资源模型 服务治理 基本原理 服务注册 服务发现 安装 部署架构 集群安装 SpringCloud应用接入 ...
- Mysql InnoDB Buffer Pool
参考书籍<mysql是怎样运行的> 系列文章目录和关于我 一丶为什么需要Buffer Pool 对于InnoDB存储引擎的表来说,无论是用于存储用户数据的索引,还是各种系统数据,都是以页的 ...
- Sublime Text 修改默认语言为Python
Sublime Text 3 修改默认语言为Python 步骤如下 英文:Tools - Developer - New Plugin 中文:工具 - 插件开发 - 新建插件 清空原来内容,用下面的代 ...
- CSS布局秘籍(2)-6脉神剑
HTML系列: 人人都懂的HTML基础知识-HTML教程(1) HTML元素大全(1) HTML元素大全(2)-表单 CSS系列: CSS基础知识筑基 常用CSS样式属性 CSS选择器大全48式 CS ...
- 2022春每日一题:Day 18
题目:[JSOI2007]字符加密 很常见的做法,破环为链,然后以2n为总长再后缀排序,然后对于SA[i] < n 的,说明第i小后缀的编号是小于n的,也就是说,以i开头的编号是合法的,那么输出 ...
- 面向对象进阶(static&继承)
今日分享:static and 继承 static: staic是修饰符 可以修饰方法和变量 变量: 被static修饰的变量称为静态变量 特点: 该类的所有对象都共享同一个静态变量:不属于 ...
- Tauri+Rust+Vue 跨平台桌面应用简明教程(1)环境创建+系统事件+自定义菜单
作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功.JAVA底层.面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 Tauri简介 Tauri 是一个工具包,可以帮 ...
- instanceof和Class.isAssignableFrom的区别
1. Class.isAssignableFrom 偶然看见同事写的一段代码是这样的 if( AfterRender.class.isAssignableFrom( assembly.getClass ...
- Hexo+next主题美化
前言 需要在Hexo下配置next主题 Hexo配置next主题教程:https://www.cnblogs.com/xuande/p/16641543.html 更改配置以后使用素质三连:hexo ...
- gtest学习教程(从0到1)
gtest使用教程 1 简介 之前对gtest一无所知,最近,找了些相关的资料,学习了下.这里主要记录了学习过程和相关知识点. 什么是gtest: gtest测试框架是在不同平台上(Linux,Mac ...