【Azure 架构师学习笔记】- Terraform创建Azure 资源

本文属于【Azure 架构师学习笔记】系列。

前言

在实际的企业环境中,很少甚至可以说禁止手动创建资源,因为很容易出错,并且大规模部署时会非常低效。因此大部分企业都会使用工具或者某些服务来实现这种可控,可复用,具有伸缩性的部署方式。本文把工具选定为Terraform。

由于后续学习需要不停创建、删除Azure 资源,所以这里演示一下在本机(windows 10)上安装Terraform,并且创建一个Azure Storage Account.

环境搭建

本文把具体环境定格在Win 10 和Azure 上,大概搭建的步骤为:

  1. 安装必要工具
  2. 配置Azure 认证
  3. 创建Terraform配置文件
  4. 部署资源
  5. 验证资源(可选)
  6. 销毁资源(可选)

一、安装必要工具

必要工具包含Terraform,Azure CLI

Terraform

  1. 下载Terraform:Terraform官网,下载对应版本。
    在这里插入图片描述

  2. 解压到特定文件,比如本文的D:\Program Files\terraform_1.10.5_windows_386。

  3. 配置环境变量:
    在这里插入图片描述

  4. 按照步骤把刚才的路径贴进去
    在这里插入图片描述

  5. 验证安装结果:在cmd或者powershell中运行均可。
    在这里插入图片描述

Azure CLI

官网下载安装包并安装。同理验证安装结果
在这里插入图片描述

二、配置 Azure 认证

注意接下来的步骤基本上都使用powershell完成。

  1. 登录 Azure
    ​通过 Azure CLI 登录:az login
    浏览器会自动打开,然后选择你的 Azure 账号登录。
    在这里插入图片描述
    在这里插入图片描述
  2. 创建服务主体(Service Principal)​
    Terraform 需要通过SP 对操作 Azure 资源, 另外这个SP 需要在订阅中有contributor 或以上的角色,才能进行资源的操作。
az ad sp create-for-rbac --name "terraform-sp" --role contributor --scopes /subscriptions/<你的订阅ID>

执行后会生成以下结果, 记得要保存好信息,后续需要使用

在这里插入图片描述
3. 设置环境变量
可以在powershell或者cmd中执行:
Powershell:

$env:ARM_CLIENT_ID = "<appId>"
$env:ARM_CLIENT_SECRET = "<password>"
$env:ARM_TENANT_ID = "<tenant>"
$env:ARM_SUBSCRIPTION_ID = "<订阅ID>"

CMD:

set ARM_CLIENT_ID="<appId>"
set ARM_CLIENT_SECRET="<password>"
set ARM_TENANT_ID="<tenant>"
set ARM_SUBSCRIPTION_ID="<订阅ID>"

三、创建 Terraform 配置文件

  1. 新建项目目录: 比如D:\terraform-azure
  2. 创建以下文件:
    providers.tf :用于配置 Azure Provider
terraform {required_providers {azurerm = {source  = "hashicorp/azurerm"version = "~> 3.90.0"  # 使用最新稳定版本}}
}provider "azurerm" {features {}
}

main.tf :用于定义资源

# 创建资源组
resource "azurerm_resource_group" "example" {name     = "terraform-rg"location = "East US"
}# 创建存储账户
resource "azurerm_storage_account" "example" {name                     = "tfstorageaccount123"  # 必须全局唯一resource_group_name      = azurerm_resource_group.example.namelocation                 = azurerm_resource_group.example.locationaccount_tier             = "Standard"account_replication_type = "LRS"
}

outputs.tf :用于输出关键信息

output "storage_account_name" {value = azurerm_storage_account.example.name
}

四、部署资源

完成上面准备之后即可开始尝试创建,本人通过把下面内容放入main.tf 并运行,从而创建了一个Azure Storage Account。

terraform {required_providers {azurerm = {source  = "hashicorp/azurerm"version = "=3.0.0"}}
}# Configure the Microsoft Azure Provider
provider "azurerm" {features {}
}# 引用现有的资源组 "Architect"
data "azurerm_resource_group" "architect" {name = "Architect"  # 确保资源组已存在
}# 创建支持分层命名空间的存储账户
resource "azurerm_storage_account" "medallionadls01" {name                     = "medallionadls01"  # 必须全局唯一resource_group_name      = data.azurerm_resource_group.architect.namelocation                 = data.azurerm_resource_group.architect.locationaccount_tier             = "Standard"         # 存储层级account_replication_type = "LRS"              # 冗余类型account_kind             = "StorageV2"        # 必须为 StorageV2is_hns_enabled           = true               # 启用分层命名空间tags = {Environment = "DEV"Purpose     = "Data Lake Storage"}
}

在Powershell中按顺序执行下面命令

  1. terraform init
  2. terraform plan
  3. terraform apply --回复yes即可。

下面是一些过程截图:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述

五、验证资源

可以登录portal。或者通过PS 命令: az storage account list --resource-group 具体的资源组名
在这里插入图片描述

六、销毁资源

需要在Terraform的配置目录下执行,一开始本人在D 盘直接执行,不抱错但是没有效果,后来定位到本人的D:\terraform-azure即可执行:

terraform destroy -target=资源类型.资源名

本例中为: terraform destroy -target=azurerm_storage_account.medallionadls01

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

七、常见问题解决

​1. 错误:权限不足
​现象:Error: authorization.RoleAssignmentsClient#Create: Failure responding to request
​解决:确保服务主体在订阅中有 ​Contributor​ 角色。
​2. 错误:名称冲突
​现象:Storage account name ‘tfstorageaccount123’ is already taken
​解决:修改存储账户名称(如 tfstorageaccount001)。
​3. 错误:版本不兼容
​现象:Provider registry.terraform.io/hashicorp/azurerm does not have a version matching ~> 3.0
​解决:更新 providers.tf 中的版本号(如 version = “~> 3.90.0”)。

小结

至此用Terraform创建单个Azure资源已经完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/25174.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaAPI(线程)

线程简介 进程&#xff08;Process&#xff09; 进程&#xff0c;是正在运行的程序实例&#xff0c;是操作系统进行资源分配的最小单位。 每个进程都有它自己的地址空间和系统资源&#xff08;比如CPU时间&#xff0c;内存空间&#xff0c;磁盘IO等&#xff09;。 多个进程…

冯诺依曼体系结构 ──── linux第8课

目录 冯诺依曼体系结构 关于冯诺依曼&#xff0c;必须强调几点&#xff1a; 冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系 输入单元&#xff1a;包括键盘, 鼠标&#xff0c;网卡,扫…

7.1 线性代数进行图像处理

一、图像的奇异值分解介绍 A A A 的奇异值定理就是 A T A A^TA ATA 和 A A T AA^T AAT 的特征值定理。 这是本章的内容的预览。 A A A 有两个奇异向量的集合&#xff08; A T A A^TA ATA 和 A A T AA^T AAT 的特征向量&#xff09;&#xff0c;有一个是正奇异值的集合&#…

Java 大视界 -- Java 大数据在智慧环保污染源监测与预警中的应用(104)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

「慢思考」机理分析:从雪球误差到正确推理概率

在大语言模型&#xff08;LLMs&#xff09;的发展历程中&#xff0c; Scaling Laws [1] 一直是推动性能提升的核心策略。研究表明&#xff0c;随着模型规模和训练数据的增长&#xff0c;LLMs 的表现会不断优化 [2]。然而&#xff0c;随着训练阶段规模的进一步扩大&#xff0c;性…

面试问题——如何解决移动端1px 边框问题?

面试问题——如何解决移动端1px 边框问题&#xff1f; 最近&#xff0c;不少小伙伴向我反映&#xff0c;他们在面试中频繁被问到关于1px边框的问题。这个看似老生常谈的话题&#xff0c;没想到在面试中的出现率依然这么高&#xff0c;着实让我有些意外。对于那些对这个问题感到…

全星研发项目管理APQP软件系统:汽车电子与半导体行业的研发管理利器

全星研发项目管理APQP软件系统&#xff1a;汽车电子与半导体行业的研发管理利器 1. 集成化管理优势 1.1 数据一致性 无缝数据流转&#xff1a;集成平台确保数据在不同模块间无缝流转&#xff0c;避免因工具切换导致的数据错误和重复工作。案例&#xff1a;某汽车电子企业使用…

Cascadeur 技术浅析(二):物理模拟

Cascadeur 的物理模拟算法是其核心功能之一,旨在通过模拟真实世界的物理规律,使角色动画更加自然和逼真。 1. 刚体动力学(Rigid Body Dynamics) a. 基本原理 刚体动力学用于模拟角色的骨骼和关节运动,假设角色的每个部分都是刚体(即不会发生形变的物体)。通过应用牛顿…

点云处理入门--PointNetPointNet++论文与代码详解

基础知识 点云数据&#xff1a; 点云是一种通过三维扫描设备或计算机图形学技术获取的三维空间数据&#xff0c;通常由一系列点组成&#xff0c;每个点包含其在三维空间中的坐标&#xff08;如 x,y,z&#xff09;&#xff0c;有时还可能包含颜色、强度等附加信息。 介绍几种常…

Tomcat介绍

Tomcat是Apache 软件基金会&#xff08;Apache Software Foundation&#xff09;的Jakarta 项目中的一个核心项目&#xff0c;由Apache、Sun 和其他一些公司及个人共同开发而成。最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现&#xff0c;因为Tomcat 技术先进、性能稳定&…

DeepSeek-R1-Zero:基于基础模型的强化学习

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》&#xff08;人工智能科学与技术丛书&#xff09;【陈敬雷编著】【清华大学出版社】 文章目录 DeepSeek大模型技术系列四DeepSeek大模型技术系列四》DeepSeek-…

Redis初识

Redis是什么 Redis是一个在内存中存储数据的中间件&#xff0c;它可以用于作为数据库&#xff0c;用于作为数据的缓存&#xff0c;市面上作为数据缓存的不止Redis一家&#xff0c;但为啥我们要学习Redis呢&#xff1f;因为Redis有一些特性和优点&#xff0c;让Reids在市面上脱…

DeepSeek今日连开3源!针对优化的并行策略,梁文锋本人参与开发

DeepSeek开源周第四天&#xff0c;直接痛快「1日3连发」&#xff0c;且全都围绕一个主题&#xff1a; 优化并行策略。 DualPipe&#xff1a;一种创新的双向流水线并行算法&#xff0c;能够完全重叠前向和后向计算-通信阶段&#xff0c;并减少“流水线气泡”。它通过对称的微批…

打印九九乘法表

打印九九乘法表 package struct; ​ public class ForDemo04 {public static void main(String[] args) { ​for (int i 1; i < 9; i) {//System.out.println(1"*"i""(1*i));for (int j 1; j < i; j) {System.out.print(i"*"j"&qu…

机器学习的起点:线性回归Linear Regression

机器学习的起点&#xff1a;线性回归Linear Regression 作为机器学习的起点&#xff0c;线性回归是理解算法逻辑的绝佳入口。我们从定义、评估方法、应用场景到局限性&#xff0c;用生活化的案例和数学直觉为你构建知识框架。 回归算法 一、线性回归的定义与核心原理 定义&a…

DeepSeek 提示词:常见指令类型

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

查询NFT图片地址

前言 有人给我发了nft&#xff0c;但是没有图片&#xff0c;我就很纳闷为什么&#xff0c;所以想一探究竟 解决思路 先说下环境吧 Sepolia 测试网 metamask钱包 需要获取nft的合约地址和token id 钱包内 nft可以查得到 思路&#xff1a; 我的理解就是ERC721有标准的…

一个滑块可变色的Seekbar

因项目需要&#xff0c;做一个如下图的滑动条&#xff0c;要求如下&#xff1a; 1、滑块跟着进度条改变颜色 2、滑块有白色边和内部颜色组成 大体思路&#xff0c;就是背景需要UI按照需求提供&#xff0c;然后变色时&#xff0c;根据滑动回调动态设置对应的颜色。 直接上代码…

重大更新!锂电池剩余寿命预测新增 CALCE 数据集

往期精彩内容&#xff1a; 单步预测-风速预测模型代码全家桶-CSDN博客 半天入门&#xff01;锂电池剩余寿命预测&#xff08;Python&#xff09;-CSDN博客 超强预测模型&#xff1a;二次分解-组合预测-CSDN博客 VMD CEEMDAN 二次分解&#xff0c;BiLSTM-Attention预测模型…

实时时钟(RTC)/日历芯片PCF8563的I2C读写驱动(2):功能介绍

0 参考资料 PCF8563数据手册&#xff08;第 11 版——2015 年 10 月 26 日&#xff09;.pdf 1 功能介绍 1.1 实时时钟&#xff08;RTC&#xff09;/日历 &#xff08;1&#xff09;PCF8563支持实时时钟&#xff08;RTC&#xff09;&#xff0c;提供时、分、秒信息。对应寄存器…