Share via


如何發佈自訂機器設定套件成品

開始之前,建議您先閱讀機器設定的概觀頁面。

機器設定自訂 .zip 套件必須儲存在受控機器可透過 HTTPS 存取的位置。 範例包括 GitHub 存放庫、Azure 存放庫、Azure 儲存體或私人資料中心內的 Web 伺服器。

支援 AuditAuditandSet 的設定套件會以相同方式發佈。 根據套件模式發佈期間,不需要執行任何特殊動作。

發佈設定套件

儲存設定套件的慣用位置是 Azure Blob 儲存體。 儲存體帳戶沒有特殊需求,但最好將檔案託管在機器附近的區域中。 如果您想要將套件設為不公用,您可以在 URL 中包含 SAS 權杖,或為私人網路中的機器實作服務端點

若要將設定套件發佈至 Azure Blob 儲存體,您可以遵循下列步驟,以使用 Az.Storage 模組。

如果您沒有儲存體帳戶,請使用下列範例來進行建立。

# Creates a new resource group, storage account, and container
$ResourceGroup = '<resource-group-name>'
$Location      = '<location-id>'
New-AzResourceGroup -Name $ResourceGroup -Location $Location

$newAccountParams = @{
    ResourceGroupname = $ResourceGroup
    Location          = $Location
    Name              = '<storage-account-name>'
    SkuName           = 'Standard_LRS'
}
$container = New-AzStorageAccount @newAccountParams |
    New-AzStorageContainer -Name machine-configuration -Permission Blob

接下來,取得您要儲存套件的儲存體帳戶內容。 如果您在先前的範例中建立儲存體帳戶,則可以從儲存在 $container 變數中的儲存體容器物件取得內容:

$context = $container.Context

如果您使用現有的儲存體容器,可以使用容器的連接字串搭配 New-AzStorageContext Cmdlet:

$connectionString = @(
    'DefaultEndPointsProtocol=https'
    'AccountName=<storage-account-name>'
    'AccountKey=<storage-key-for-the-account>' # ends with '=='
) -join ';'
$context = New-AzStorageContext -ConnectionString $connectionString

接下來,將設定套件新增至儲存體帳戶。 此範例會將 zip 檔案 ./MyConfig.zip 上傳到 blob 的容器 machine-configuration

$setParams = @{
    Container = 'machine-configuration'
    File      = './MyConfig.zip'
    Context   = $context
}
$blob = Set-AzStorageBlobContent @setParams
$contentUri = $blob.ICloudBlob.Uri.AbsoluteUri

注意

如果您在 Cloudshell 中執行這些範例,但在本機建立 zip 檔案,則可以將檔案上傳至 Cloudshell

雖然下一個步驟是選擇性的,但您應該在 URL 中新增共用存取簽章 (SAS) 權杖,以確保安全存取套件。 下列範例會產生具有讀取權限的 Blob SAS 權杖,並傳回具有共用存取簽章權杖的完整 Blob URI。 在此範例中,權杖的時間限制為三年。

$startTime = Get-Date
$endTime   = $startTime.AddYears(3)

$tokenParams = @{
    StartTime  = $startTime
    ExpiryTime = $endTime
    Container  = 'machine-configuration'
    Blob       = 'MyConfig.zip'
    Permission = 'r'
    Context    = $context
    FullUri    = $true
}
$contentUri = New-AzStorageBlobSASToken @tokenParams

重要

建立 SAS 權杖之後,請記下傳回的 URI。 建立權杖之後,即無法擷取權杖。 您只能建立新的權杖。 如需關於 SAS 權杖的詳細資訊,請參閱使用共用存取簽章 (SAS) 對 Azure 儲存體資源授與有限存取權

後續步驟