首先对 Azure 管理资源的方式有个概念,好方便之後介绍 Azure 自动化。
在 Azure 我们有 5 种方式可以管理资源
Azure Portal
Azure PowerShell
Azure CLI
Azure SDK (C#、Java、Python)
Azure Rest API
90% 的需求依靠 Portal 都能解决,强调简单、人性化 ,非常适合尝试跟探索
。
但它不是部属应用
程序或需要重复执行
任务的最佳选择,所以会需要其他自动化技术。
以逻辑脚本方式部属 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 能做到的同样效果。
Mac 跟 Linux 使用者习惯的 Bash Shell 风格,又能跟 Power Shell、Bash 兼容使用
,达到完全跨平台
的命令行效果。
举例 : 创建群组
az group create --name "demo" --location eastasia
像是 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
这代表说任何支援 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)
上一篇看完了 AngularJS 与 Angular 的差异後,我们今天要集中火力来看看 Angul...
今天我们要来教一些常用到的基本设定、包括宽高、背景颜色、文字颜色,以及inline与block的区别...
注册的方式我想使用laravel的command来实作,原本想用form表单来实现,不过这样感觉主题...
书接上回[Day 08] tinyML开胃菜Arduino IDE上桌(上)。 单机版IDE Ard...
Routes 其实路经身为整个MVC中Controller的门面,却容易被轻忽对待,即使遵照着TDD...