當您的團隊開始配置更多的Windows Azure虛擬機器(VMs)時,您可能會厭倦不斷重複相同的工作。您需要自動化!在這篇文章中,我將逐步引導您開始使用Azure自訂腳本擴展在VM上執行腳本。
如果您的團隊處於Windows環境中,一個最佳的自動化服務器配置工具是PowerShell。通過使用Azure PowerShell模組,您的組織不僅可以自動化本地任務,還可以批量在Azure VM上運行命令,而不是逐個執行。
Microsoft提供給我們的一個功能稱為Azure自訂腳本擴展。自訂腳本擴展是一個Azure虛擬機器擴展,VM代理運行它以使用Azure API執行任意的PowerShell代碼,而不是進入VM或使用PowerShell遠程管理。
以這種方式運行命令有幾個好處。在Windows中使用Azure自訂擴展運行命令:
- 不需要打開用於PowerShell遠程管理的網絡端口,提供了更高的安全性
- 可輕鬆在VM啟動時執行PowerShell代碼
- 在配置過程中,自動將資源從Azure存儲傳輸到您的VM中。
- 在各種Azure儲存帳戶中運行PowerShell腳本的簡單方法
可以通過幾種方式啟用Windows的Azure自定義腳本擴展。在本文中,我們將重點介紹通過PowerShell啟用自定義腳本擴展,但您也可以通過Azure資源管理器(ARM)模板啟用擴展。
作為一個簡單的示例,假設您想要確保訂閱中的Azure虛擬機啟用了PowerShell遠程操作。為此,您需要在每個虛擬機上本地運行以下命令:
讓我們建立一個自定義腳本擴展來實現這一點。
使用Azure在虛擬機上運行腳本
首先,在本地計算機上創建一個名為Enable-PSRemoting.ps1的PowerShell腳本,其中包含上述命令。此腳本需要在Azure虛擬機上運行。為此,我們將創建另一個小型的PowerShell腳本,名為New-CustomScriptExtension.ps1,將其上傳到Azure並創建一個自定義腳本擴展來執行它。在進一步操作之前,您需要一些項目:
- 存儲腳本的Azure資源組和存儲帳戶名稱
- Azure存儲容器名稱
- 虛擬機名稱
- 虛擬機所在的Azure資源組名稱
此腳本可以分為兩部分;將小型PowerShell腳本上傳到Azure和創建自定義腳本擴展。其他所有內容都是將這兩個過程結合在一起所需的。
將PowerShell腳本上傳到Azure
首先,我們將上傳 Enable-PSRemoting.ps1 腳本到 Azure 儲存帳戶 ($StorageAccountName
) 內的容器 ($ContainerName
) 中,並放置在資源群組 ($ResourceGroupName
) 中。
執行自訂腳本擴充功能
執行 New-CustomScriptExtension.ps1 時,此腳本將上傳指定的 Enable-PSRemoting.ps1 腳本至 Azure 儲存帳戶。
現在,腳本已儲存在 Azure 中,您可以透過自訂腳本擴充功能來執行它:
- 名稱:
$VMName
- 資源群組:
$rgName
- 儲存帳戶:
$saName
- 儲存容器:
$scName
開啟文字編輯器以編輯 New-CustomScriptExtension.ps1,並貼上以下範例。執行此腳本將會執行 Azure 的 Windows 自訂腳本擴充功能,並執行您先前上傳的 Enable-PSRemoting.ps1 PowerShell 腳本。
摘要
腳本執行完成後,您可以驗證 Enable-PSRemoting.ps1 已在虛擬機上執行並成功啟用 PowerShell 遠程管理。您現在應該能夠使用 Invoke-Command
來對您的 Azure 虛擬機進行操作。
通過在 Windows 中利用 Azure 自訂腳本擴展,您現在可以遠程運行任何類型的 PowerShell 腳本在您的 Azure 虛擬機上。
Source:
https://adamtheautomator.com/azure-run-script-on-vm/