2015-12-31 3 views
0

Я немного поработал, и у меня не было последних документов для этого:Возможно ли развертывание на Azure Cloud Service, требующее запуска сценария без ccproj?

У меня есть решение .NET 4.6, состоящее из ряда проектов, которые я сейчас хочу развернуть в облаке - в частности как служба облачного облака.

Было бы предпочтительнее не создавать проект облачной службы как часть моего решения, потому что я считаю, что это детализация развертывания и, следовательно, не имеет никакого отношения к моему решению, которое может быть легко размещено на локальной машине IIS или даже IIS Express. Таким образом, все документы, которые я нашел, которые требуют добавления облачного сервиса для моего решения, просто чувствуют ... грязные.

У меня есть Дженкинс и Осьминог Развертывание для моих инструментов развертывания, и я хотел бы, если возможно, чтобы они разворачивали проект напрямую - что кажется, что Осьминог делает из коробки, за исключением одной детали, у меня есть сценарий запуска, который необходимо использовать в облачном сервисе Azure:

  • Для обеспечения правильной версии .NET Framework и при необходимости установите его.
  • Чтобы установить сертификат клиента SSL, который требуется для связи с одним из моих других серверов.

Для локальной или локальной установки IIS это не будет проблемой, так как Octopus Tentacle может запускать скрипт на сервере, чтобы обеспечить наличие правильной версии .NET Framework и установки сертификата SSL, но я не могу понять, как зеркалировать эту задачу в Azure Cloud Service.

ответ

0

Сначала вам нужно будет автоматизировать развертывание облачного сервиса из вашего скрипта осьминога. Например, в PowerShell, вы можете закодировать его таким образом:

function CreateNewDeployment() 
{ 
write-progress -id 3 -activity "Creating New Deployment" -Status "In progress" 
Write-Output "$(Get-Date –f $timeStampFormat) - Creating New Deployment: In progress" 

$opstat = New-AzureDeployment -Slot $slot -Package $packageLocation -Configuration $cloudConfigLocation -label $deploymentLabel -ServiceName $serviceName 

$completeDeployment = Get-AzureDeployment -ServiceName $serviceName -Slot $slot 
$completeDeploymentID = $completeDeployment.deploymentid 

write-progress -id 3 -activity "Creating New Deployment" -completed -Status "Complete" 
Write-Output "$(Get-Date –f $timeStampFormat) - Creating New Deployment: Complete, Deployment ID: $completeDeploymentID" 

#StartInstances 
} 

$packageLocation = "$currentDirectory/$packagefile" 
$cloudConfigLocation = "$currentDirectory/$cloudConfigFile" 

Import-AzurePublishSettingsFile $publishsettings 
Set-AzureSubscription -SubscriptionName $azureSubscription -CurrentStorageAccount $storageAccount 

CreateNewDeployment 

Во-вторых, вам придется настроить задачу запуска с повышенным контекстом выполнения для того, чтобы запустить сценарий запуска.

Задача запуска является уникальной особенностью облачных сервисов, которые позволяют выполнять изменения конфигурации виртуальной машины для экземпляра роли до начала роли
Задачи запуска определяются в определении облачных услуг (.csdef) файл с использованием элемента <Task> в элементе <WebRole> или <WorkerRole>. <Task> элемента содержит три свойства, которые можно использовать, чтобы повлиять на права и поведение для выполнения этой задачи, а именно:

  • CommandLine Определяет программу или скрипт, который вы хотите выполнить.
  • executeContext Устанавливает уровень разрешений, необходимый скрипту, а может быть ограничен или повышен. Изменения конфигурации, такие как , изменяющие настройки IIS, требуют, чтобы задача выполнялась в режиме повышенного уровня .
  • taskType Может быть простым, на переднем плане или background. Простая задача выполняется синхронно перед началом роли . Передние и фоновые задачи выполняются асинхронно параллельно с ролью. Задача переднего плана может поддерживать роль, выполняемую , и предотвращать ее отключение или переработку.Фоновая задача будет быть остановлена, если роль необходимо закрыть или быть переработаны

    Задача CommandLine = «Запуск \ STARTUP.CMD» ExecutionContext = «повышенный» TaskType = «простой»

Справочная документация is here https://azure.microsoft.com/en-us/documentation/articles/cloud-services-startup-tasks/ Надеюсь, это поможет С Новым годом! С уважением Stéphane

+0

Итак, если я правильно понимаю это, мне понадобится сценарий powershell развертывания (аналогичный приведенному вами примеру), файл пакета, .csdef-файл, файл настроек публикации (может ли это быть предоставлен Octopus из подписок «Окружающая среда/учетные записи/лазури»? Можно предположить, что Octopus установил, что это будет), и любые другие сценарии, которые csdef должен будет ссылаться. .. все, что работает, означает, что проект облачных сервисов по-прежнему остается правильным путем? – BenAlabaster

0

По сути, Cloud Service Project помогает вам создавать необходимые файлы, упаковывать решение и развертывать его. Эти шаги можно разбить на отдельные задачи, где часть разработки и развертывания описывается stephgou и Mr Lister.

Чтобы установить пакет, необходимо использовать CSPack.exe. https://azure.microsoft.com/en-us/documentation/articles/cloud-services-model-and-package/#servicepackagecspkg.

Также посмотрите здесь, чтобы понять процесс. PowerShell, предоставленный в другом ответе, заменит руководство GUI в этой статье: https://azure.microsoft.com/en-us/documentation/articles/cloud-services-how-to-create-deploy-portal/

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

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