Есть командный файл powershell для пользовательских расширений скриптов, похоже, поддерживает множество полезных параметров параметров, но API-интерфейс .net для расширений VM не имеет такого хорошего строго типизированного набора параметров для настройки и требует использования этих publicSettings/privateSettings вещи ... Каков правильный способ сделать это с .net API?Как создать Azure CustomScriptExtension с .net SDK?
0
A
ответ
0
Использование нового текучего SDK это моя лучшая попытка до сих пор ...:
var blobClient = new CloudBlobClient(
new Uri(tenantStorageAccount.EndPoints.Primary.Blob),
new StorageCredentials(tenantStorageAccount.Name, tenantStorageKeys.First().Value));
var scriptText = @"Write-Host ""Success!""
«;
var bootContainer = blobClient.GetContainerReference("boot");
await bootContainer.CreateIfNotExistsAsync();
var bootstrapBlob = bootContainer.GetBlockBlobReference("bootstrap.ps1");
await bootstrapBlob.UploadTextAsync(scriptText);
var sasToken = bootstrapBlob.GetSharedAccessSignature(
new SharedAccessBlobPolicy
{
SharedAccessExpiryTime = DateTime.UtcNow.AddYears(1),
Permissions = SharedAccessBlobPermissions.Read
});
string bootstrapBlobSasUri = bootstrapBlob.Uri + sasToken;
var extensionTasks = new List<Task<IVirtualMachine>>();
await vms.ForEachAsync(async vm =>
{
await vm.Update().DefineNewExtension("bootstrapper")
.WithPublisher("Microsoft.Compute")
.WithType("CustomScriptExtension")
.WithVersion("1.8")
.WithPublicSetting("fileUris", new string[] { bootstrapBlobSasUri })
.WithProtectedSetting("storageAccountName", tenantStorageAccount.Name)
.WithProtectedSetting("storageAccountKey", tenantStorageKeys[0])
.WithProtectedSetting("commandToExecute", "powershell -ExecutionPolicy Unrestricted -File bootstrap.ps1")
.Attach().ApplyAsync();
});