2014-12-08 4 views
2

Я пытаюсь написать сценарий, который я могу автоматизировать на Azure, чтобы создать новый экземпляр облачной службы. У меня возникли проблемы с работой командлета New-AzureDeployment.Использование Azure Automation для создания экземпляра облачной службы с использованием Powershell

Файлы CSPKG и CSCFG хранятся на Azure под одной учетной записью хранения, но в разных контейнерах. Они были загружены с помощью CloudBerry.

param(
    [parameter(Mandatory=$False)] 
    [string] $StorageAccount = 'storageaccount', 

    [parameter(Mandatory=$False)] 
    [string] $ServiceName = 'cloudservicesdev', 

    [parameter(Mandatory=$False)] 
    [string] $Slot = 'Production', 

    [parameter(Mandatory=$False)] 
    [string] $Label = 'BASE' 
) 

Write-Output "Start of workflow" 

$cert = Get-AutomationCertificate -Name 'Credential' 
$subID = 'subId' 

Set-AzureSubscription -SubscriptionName "SubName" -CurrentStorageAccountName $StorageAccount -Certificate $cert -SubscriptionId $subID 

Select-AzureSubscription "SubName" 

$package = (Get-AzureStorageBlob -blob "package.cspkg" -Container "package").ICloudBlob.uri.AbsoluteUri 

$config = (Get-AzureStorageBlob -blob "Config - Dev.cscfg" -Container "config").ICloudBlob.uri.AbsoluteUri 

New-AzureDeployment -ServiceName "$ServiceName" -Slot "$Slot" -Package "$package" -Configuration "$config" -Label "$Label" 

Я получаю следующую ошибку

2014-12-08 05:57:57 PM, Error: New-AzureDeployment : The given path's format is not supported. 
At Create_New_Cloud_Service_Instance:40 char:40 
+ 
+ CategoryInfo   : NotSpecified: (:) [New-AzureDeployment], NotSupportedException 
+ FullyQualifiedErrorId : 
System.NotSupportedException,Microsoft.WindowsAzure.Commands.ServiceManagement.HostedServices.NewAzureDeploymentCommand 

Я проверил оба $ пакета и $ переменных конфигурации и они указывают на расположение файлов я бы ожидать (https://storageaccount.blob.core.windows.net/package/package.cspkg и https://storageaccount.blob.core.windows.net/config/Config%20-%20Dev.cscfg соответственно). Они соответствуют URL-адресам, которые я вижу при навигации по файлам под их контейнерами в хранилище.

Это похоже на примеры, которые я видел. Что я сделал не так?

Это новый код, который я использовал основанный на ответ Джо ниже

Я также использовал этот пример сценария https://gallery.technet.microsoft.com/scriptcenter/Continuous-Deployment-of-A-eeebf3a6, чтобы помочь с помощью изолированной программной среде Azure автоматизации

param(
    [parameter(Mandatory=$False)] 
    [string] $StorageAccount = 'storageaccount', 

    [parameter(Mandatory=$False)] 
    [string] $ServiceName = 'cloudservicesdev', 

    [parameter(Mandatory=$False)] 
    [string] $Slot = 'Production', 

    [parameter(Mandatory=$False)] 
    [string] $Label = 'BASE' 
) 

Write-Output "Start of workflow" 

$cert = Get-AutomationCertificate -Name 'Credential' 
$subID = 'subId' 

Set-AzureSubscription -SubscriptionName "SubName" -CurrentStorageAccountName $StorageAccount -Certificate $cert -SubscriptionId $subID 

Select-AzureSubscription "SubName" 

$package = (Get-AzureStorageBlob -blob "package.cspkg" -Container "package").ICloudBlob.uri.AbsoluteUri 
$TempFileLocation = "C:\temp\Config - Dev.cscfg" 
$config = (Get-AzureStorageBlobContent -blob "Config - Dev.cscfg" -Container "config" -Destination $TempFileLocation -Force) 

New-AzureDeployment -ServiceName "$ServiceName" -Slot "$Slot" -Package "$package" -Configuration $TempFileLocation -Label "$Label" 
+0

Почему путь конфигурации содержит% 20? Вы пытались избежать пробелов в имени файла? Во-вторых - (не уверен, требуется ли это, но) вы пытались сделать контейнеры blob (пакет, config) общедоступными? –

ответ

3

В -package параметр of New-AzureDeployment должен быть передан URI хранилища, как вы это делаете, но параметр -Configuration ожидает локальный файл. См. http://msdn.microsoft.com/en-us/library/azure/dn495143.aspx для получения более подробной информации.

Поэтому в рабочей книге загрузите файл в $ config URI в изолированную программную среду Azure Automation, а затем передайте локальный путь этого файла в New-AzureDeployment.

+0

В этом была проблема. Спасибо Джо. – Tom