iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 29
1

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 的環境都能使用因為是底層,所以文檔也是最全面 需要編寫更多代碼或腳本

上一篇
Azure CLI 本質 Restful API
系列文
深入 Azure 雲端服務15
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言