Jak opublikować artefakty pakietu konfiguracji niestandardowej maszyny

Przed rozpoczęciem warto przeczytać stronę przeglądu konfiguracji maszyny.

Pakiety niestandardowe .zip konfiguracji maszyny muszą być przechowywane w lokalizacji dostępnej za pośrednictwem protokołu HTTPS przez zarządzane maszyny. Przykłady obejmują repozytoria GitHub, repozytoria platformy Azure, usługę Azure Storage lub serwer internetowy w prywatnym centrum danych.

Pakiety konfiguracji, które obsługują Audit i AuditandSet są publikowane w taki sam sposób. Nie ma potrzeby wykonywania żadnych specjalnych czynności podczas publikowania w oparciu o tryb pakietu.

Publikowanie pakietu konfiguracji

Preferowaną lokalizacją do przechowywania pakietu konfiguracji jest usługa Azure Blob Storage. Nie ma specjalnych wymagań dotyczących konta magazynu, ale dobrym pomysłem jest hostowanie pliku w regionie w pobliżu maszyn. Jeśli wolisz nie upublicznić pakietu, możesz dołączyć token SAS do adresu URL lub zaimplementować punkt końcowy usługi dla maszyn w sieci prywatnej.

Aby opublikować pakiet konfiguracji w usłudze Azure Blob Storage, możesz wykonać następujące kroki, korzystając z modułu Az.Storage .

Jeśli nie masz konta magazynu, użyj poniższego przykładu, aby go utworzyć.

# 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

Następnie uzyskaj kontekst konta magazynu, w którym chcesz przechowywać pakiet. Jeśli konto magazynu zostało utworzone we wcześniejszym przykładzie, możesz pobrać kontekst z obiektu kontenera magazynu zapisanego w zmiennej $container :

$context = $container.Context

Jeśli używasz istniejącego kontenera magazynu, możesz użyć parametry połączenia kontenera za New-AzStorageContext pomocą polecenia cmdlet :

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

Następnie dodaj pakiet konfiguracji do konta magazynu. W tym przykładzie plik ./MyConfig.zip zip jest przekazywany do kontenera machine-configurationobiektów blob.

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

Uwaga

Jeśli używasz tych przykładów w programie CloudShell, ale utworzono plik zip lokalnie, możesz przekazać plik do programu CloudShell.

Chociaż ten następny krok jest opcjonalny, należy dodać token sygnatury dostępu współdzielonego (SAS) w adresie URL, aby zapewnić bezpieczny dostęp do pakietu. Poniższy przykład generuje token SAS obiektu blob z dostępem do odczytu i zwraca pełny identyfikator URI obiektu blob z tokenem sygnatury dostępu współdzielonego. W tym przykładzie token ma limit czasu 3 lat.

$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

Ważne

Po utworzeniu tokenu SAS zanotuj zwrócony identyfikator URI. Nie można pobrać tokenu po jego utworzeniu. Można tworzyć tylko nowe tokeny. Aby uzyskać więcej informacji na temat tokenów SAS, zobacz Udzielanie ograniczonego dostępu do zasobów usługi Azure Storage przy użyciu sygnatur dostępu współdzielonego (SAS).

Następny krok