Azure 管理资源方式比较差异

Azure 管理资源方式比较差异

首先对 Azure 管理资源的方式有个概念,好方便之後介绍 Azure 自动化。


在 Azure 我们有 5 种方式可以管理资源

  1. Azure Portal

  2. Azure PowerShell

  3. Azure CLI

  4. Azure SDK (C#、Java、Python)

  5. Azure Rest API

一. Azure Portal

90% 的需求依靠 Portal 都能解决,强调简单、人性化 ,非常适合尝试跟探索

但它不是部属应用程序或需要重复执行任务的最佳选择,所以会需要其他自动化技术。

二. Azure PowerShell

以逻辑脚本方式部属 Azure 资源,并且 Powershell 比起 bash 有更多的逻辑工具,在 windows 上面的整合度比较好 (毕竟是微软的亲孩子)。

举例 : 可以使用 forloop 批量创建资源群组

foreach($i in 1..5){
	$guid = [System.guid]::NewGuid().toString("N");
	$group = New-AzResourceGroup -Name $guid -Location "eastasia" | select-Object  ResourceGroupName,Location ;
	Write-Host("创建 group $group");
}

但,对 Linux 工程师来说需要额外安装 PowerShell Core才能使用,使用者会想我都有 python,干嘛要浪费空间安装,还需要另外记一套语法、规则做 Azure CLI 能做到的同样效果。

三. Azure CLI

Mac 跟 Linux 使用者习惯的 Bash Shell 风格,又能跟 Power Shell、Bash 兼容使用,达到完全跨平台的命令行效果。

举例 : 创建群组

az group create --name "demo" --location eastasia

四. Azure SDK

像是 Azure CLI 其实就是 Python + Azure Python SDK 编写,它也有开源在 Github

假如是一个开发团队,做复杂的专案时推荐使用,在开发时可以有智能提示,像 Java、C# SDK,又支援强型别编译前的检查

举例 : 使用 C# SDK 取得验证动作

		var credentials = SdkContext.AzureCredentialsFactory
						.FromServicePrincipal("clientId", "secretKey", "tenantId",
						AzureEnvironment.AzureGlobalCloud);
		var restClient = RestClient
							.Configure()
							.WithEnvironment(AzureEnvironment.AzureGlobalCloud)
							.WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
							.WithCredentials(credentials)
							.Build();

		using (var computeManagementClient = new ComputeManagementClient(restClient))
		{
			await computeManagementClient.VirtualMachines
				.BeginDeallocateWithHttpMessagesAsync("resource-group-name", "vm-name");
		}

拿来做 Azure Function 排程器管理资源,会是一个好选择。

五. Azure Rest API

前面介绍了几种方式,它们其实底层都有个共同点 : 都在後台调用 Azure REST API

这代表说任何支援 HTTP 请求的语言只要调用 Azure REST API,就能完成 Azure 大部分的功能。

举例 : 取用 token 创建 Azure 群组

curl -X POST -d 'grant_type=client_credentials&client_id=[APP_ID]&client_secret=[PASSWORD]&resource=https%3A%2F%2Fmanagement.azure.com%2F' https://login.microsoftonline.com/[TENANT_ID]/oauth2/token

curl -X PUT  -H "Accept=application/json" -H "Content-Type: application/json" -H "Authorization: Bearer <<token>>" --data '{"location": "eastasia"}' https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}?api-version=2020-06-01 

总结

笔者个人总结比较,提供参考 :

使用场景 优点 缺点
Azure Portal 日常管理、尝试跟探索 可视化 自动化部属
Azure PowerShell 编写复杂自动化脚本 1. 在 windows 相容性好2. 比起 bash 更多功能 1. 在 linux 环境要特别安装 PowerShell Core才能使用2. 对非 windows 工程师需要额外记一套语法
Azure CLI 编写跨平台自动化脚本 跨平台、简单
Azure SDK 团队开发特定语言 APP 工具 能支援智能提示、编译前检查、强类型检查
Azure Rest API 团队开发跨平台、跨语言管理 APP 开发 跨平台,能支援 TCP 的环境都能使用因为是底层,所以文档也是最全面 需要编写更多代码或脚本

<<:  Day30:每天一个小练习 - JS30-15-LocalStorage

>>:  [Day30] AWS Elastic Load Balancing (ELB)

Day 06:Angular 的主要特色与优点简介

上一篇看完了 AngularJS 与 Angular 的差异後,我们今天要集中火力来看看 Angul...

Day14 CSS基础设定_4

今天我们要来教一些常用到的基本设定、包括宽高、背景颜色、文字颜色,以及inline与block的区别...

Day7 跟着官方文件学习Laravel-开始学习Command用法

注册的方式我想使用laravel的command来实作,原本想用form表单来实现,不过这样感觉主题...

[Day 09] tinyML开胃菜Arduino IDE上桌(下)

书接上回[Day 08] tinyML开胃菜Arduino IDE上桌(上)。 单机版IDE Ard...

D-5.Rails route scope

Routes 其实路经身为整个MVC中Controller的门面,却容易被轻忽对待,即使遵照着TDD...