Автоматизация развертывания приложений в Azure с помощью LocalResource

В настоящее время я пытаюсь автоматизировать развертывание приложения в рабочей роли Azure, загружая файл в роль из хранилища BLOB-объектов и работая с ним с помощью пакетного сценария, который также находится в хранилище BLOB-объектов. Я использую onStart для этого. Вот сокращенная версия моего метода onStart:

Подготовка к извлечению файлов:

public override bool OnStart()
        {
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));

CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");

container.CreateIfNotExist();

CloudBlob file = container.GetBlobReference("file.bat");

Собственно получение файлов в роли:

LocalResource localResource = RoleEnvironment.GetLocalResource("localStore");
            string filePath = System.IO.Path.Combine(localResource.RootPath, "file.bat");

using (var fileStream = System.IO.File.OpenWrite(@filePath)) 
            {
                file.DownloadToStream(fileStream);
            }

Вот как я получаю пакетный файл и зависимости в роль. Теперь моя проблема заключается в том, что изначально я создал пакетный файл с предположением, что другие файлы будут удалены прямо на C:\. Например - C:\installer.exe, C:\archive.zip и т.д. Но теперь файлы лежат в localStorage.

Я думаю, что могу либо А) каким-то образом сообщить командному файлу, где находится localStorage, динамически написав скрипт onStart, либо Б) изменить localStorage, чтобы использовать C:\.

Я не уверен, как это сделать, или что лучше всего сделать здесь. Мысли?


person SB2055    schedule 06.08.2012    source источник
comment
Другой возможностью было бы передать путь к локальному хранилищу в качестве входных данных для пакетного файла. например если у меня есть пакетный файл с именем mycmd.bat, как показано ниже: ============= ECHO %1 ============= Если я вызываю mycmd.bat C:\Program Files, он просто напечатает C:\Program Files на консоли.   -  person Gaurav Mantri    schedule 06.08.2012


Ответы (1)


Я бы не стал менять LocalStorage на использование C: (как бы вы это сделали в любом случае?). Взгляните на сообщение в блоге Стива: Использование Ресурс локального хранилища из задачи запуска. Он объясняет, как вы можете получить LocalResource с помощью powershell (и даже вызвать этот скрипт из пакетного файла).

А почему бы не использовать загрузчик Windows Azure? Это небольшой инструмент, который может помочь вам с настройкой вашей роли без необходимости писать какой-либо код, вы просто вызываете его из задачи запуска, и он может загружать файлы (также из хранилища больших двоичных объектов, как вы делаете), работать с локальными Ресурсы, ...

bootstrapper.exe -get http://download.microsoft.com/download/F/3/1/F31EF055-3C46-4E35-AB7B-3261A303A3B6/AspNetMVC3ToolsUpdateSetup.exe -lr $lr(temp) -run $lr(temp)\AspNetMVC3ToolsUpdateSetup.exe -args /q 

Примечание. Вместо использования абсолютных ссылок в пакетном файле используйте относительные пути, используя %~dp0.

person Sandrino Di Mattia    schedule 06.08.2012