2017-02-15 24 views
0

Есть командный файл powershell для пользовательских расширений скриптов, похоже, поддерживает множество полезных параметров параметров, но API-интерфейс .net для расширений VM не имеет такого хорошего строго типизированного набора параметров для настройки и требует использования этих publicSettings/privateSettings вещи ... Каков правильный способ сделать это с .net API?Как создать Azure CustomScriptExtension с .net SDK?

ответ

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(); 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^