2015-12-11 3 views
3

Мой сценарий:ARM Шаблон создания и публикации Azure Runbook

У меня есть три (A, неизбежное, В и С), размещенных в GitHub (AURI, Buri, Кури). Я работаю над шаблоном ARM, чтобы создать учетную запись автоматизации, учетные данные, три книги, а затем создать работу, используя одну из них (runbook C).

Runbook С является основной, и А и В называют внутри С.

Проблема заключается в том, что для А и В должны быть вызваны из C, они должны быть опубликованы в первую очередь.

Есть ли способ опубликовать их непосредственно через мой текущий шаблон ARM?

Обходным решением будет сжать весь мой код в рабочей книге C, но я предпочитаю держать их отдельно.

код до сих пор:

{ 
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": { 
    ....... 
    }, 
    "variables": { 
    ........ 
    }, 
    "resources": [ 
    { 
    "name": "[parameters('accountName')]", 
    "apiVersion": "2015-10-31", 
    "type": "Microsoft.Automation/AutomationAccounts", 
    "location": "westeurope", 
    "properties": { 
    "sku": { 
     "name": "Basic" 
    } 
    }, 
    "resources": [ 
    { 
     "apiVersion": "2015-10-31", 
     "dependsOn": [ 
     "[concat('Microsoft.Automation/automationAccounts/', parameters('accountName'))]" 
     ], 
     "location": "westeurope", 
     "name": "[variables('A')]", 
     "properties": { 
     "runbookType": "Script", 
     "logProgress": "false", 
     "logVerbose": "false", 
     "description": "[variables('runbookDescription')]", 
     "publishContentLink": { 
      "uri": "[variables('AUri')]", 
      "version": "1.0.0.0" 
     } 
     }, 
     "type": "runbooks" 
    }, 

    { 
     "apiVersion": "2015-10-31", 
     "dependsOn": [ 
     "[concat('Microsoft.Automation/automationAccounts/', parameters('accountName'))]" 
     ], 
     "location": "westeurope", 
     "name": "[variables('B')]", 
     "properties": { 
     "runbookType": "Script", 
     "logProgress": "false", 
     "logVerbose": "false", 
     "description": "[variables('runbookDescription')]", 
     "publishContentLink": { 
      "uri": "[variables('BUri')]", 
      "version": "1.0.0.0" 
     } 
     }, 
     "type": "runbooks" 
    }, 

    { 
     "apiVersion": "2015-10-31", 
     "dependsOn": [ 
     "[concat('Microsoft.Automation/automationAccounts/', parameters('accountName'))]" 
     ], 
     "location": "westeurope", 
     "name": "[variables('C')]", 
     "properties": { 
     "runbookType": "Script", 
     "logProgress": "false", 
     "logVerbose": "false", 
     "description": "[variables('runbookDescription')]", 
     "publishContentLink": { 
      "uri": "[variables('CUri')]", 
      "version": "1.0.0.0" 
     } 
     }, 
     "type": "runbooks" 
    }, 

    { 
     "name": "[parameters('credentialName')]", 
     "type": "credentials", 
     "apiVersion": "2015-10-31", 
     "location": "westeurope", 
     "dependsOn": [ 
     "[concat('Microsoft.Automation/automationAccounts/', parameters('accountName'))]" 
     ], 
     "tags": { }, 
     "properties": { 
     "userName": "[parameters('userName')]", 
     "password": "[parameters('password')]" 
     } 
    } 
    //optional code that runs the runbook created, yo need unique Guid value for "name" key 
    , 
    { 
     "name": "Unique GUID Here", 
     "type": "jobs", 
     "apiVersion": "2015-10-31", 
     "location": "westeurope", 
     "dependsOn": [ 
     "[concat('Microsoft.Automation/automationAccounts/', parameters('accountName'))]", 
     "[concat('Microsoft.Automation/automationAccounts/', parameters('accountName'), '/credentials/', parameters('credentialName'))]", 
     "[concat('Microsoft.Automation/automationAccounts/', parameters('accountName'), '/runbooks/',variables('A'))]", 
     "[concat('Microsoft.Automation/automationAccounts/', parameters('accountName'), '/runbooks/',variables('B'))]", 
     "[concat('Microsoft.Automation/automationAccounts/', parameters('accountName'), '/runbooks/',variables('C'))]" 
     ], 
     "tags": { 
     "key": "value" 
     }, 
     "properties": { 
     "runbook": { 
      "name": "[variables('C')]" 
     } 
     } 
    } ] 
} 

ответ

1

Похоже, вы уже опубликовав правильно с помощью, неизбежными в шаблоне, так как вы предоставляете publishContentLink. Вероятность вашей проблемы заключается в том, что вы не отмечаете runbook C как зависящую от runbook A и B, поэтому C может быть опубликован до A и B и в настоящее время в Azure Automation, всякий раз, когда публикуется рабочая книга, любые детские книги, на которых это зависит, должны публиковать сначала по крайней мере один раз.

Решение сделать C runbook в dependsOn поле выглядит следующим образом:

"dependsOn": [ "[concat('Microsoft.Automation/automationAccounts/', parameters('accountName'))]", "[concat('Microsoft.Automation/automationAccounts/', parameters('accountName'), '/runbooks/', variables('B'))]", "[concat('Microsoft.Automation/automationAccounts/', parameters('accountName'), '/runbooks/', variables('A'))]" ]

+0

Спасибо, это сработало. Я добавил зависимость в задании, использующем runbook C в A и B, но не добавил их в Runbook C, как вы указали. Также добавлено '' state ":« Опубликовано »в каждую рабочую книгу. Есть ли обширная документация относительно создания графика, например? – Milen

+1

По расписанию см. Https://github.com/azureautomation/automation-packs/tree/master/000-base-automation-resource-templates/deploy-schedule – Joe

+0

Теперь я посмотрю, спасибо Джо! – Milen

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