Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ARM模板创建和发布Azure Runbook_Azure_Azure Resource Manager_Azure Automation - Fatal编程技术网

ARM模板创建和发布Azure Runbook

ARM模板创建和发布Azure Runbook,azure,azure-resource-manager,azure-automation,Azure,Azure Resource Manager,Azure Automation,我的设想: 我有三个运行手册(A、B和C)托管在github中(AUri、BUri、CUri)。我正在使用ARM模板创建自动化帐户、凭证和三个运行手册,然后使用其中一个(运行手册C)创建作业 Runbook C是主要的,A和B在C中被调用 问题是,要从C调用A和B,必须先发布它们 有没有办法通过我当前的ARM模板直接发布它们? 一个解决办法是将我所有的代码压缩到runbook C中,但我更喜欢将它们分开 迄今为止的守则: { "$schema": "http://schema.managem

我的设想:

我有三个运行手册(A、B和C)托管在github中(AUri、BUri、CUri)。我正在使用ARM模板创建自动化帐户、凭证和三个运行手册,然后使用其中一个(运行手册C)创建作业

Runbook C是主要的,A和B在C中被调用

问题是,要从C调用A和B,必须先发布它们

有没有办法通过我当前的ARM模板直接发布它们?

一个解决办法是将我所有的代码压缩到runbook 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')]"
        }
      }
    } ]
}

看起来您已经通过模板正确发布了Runbook,因为您提供了一个
publishContentLink
。您的问题很可能是您没有将runbook C标记为依赖于runbook A和B,因此C可能在A和B之前发布,并且当前在Azure Automation中,每当发布runbook时,它所依赖的任何子runbook都必须首先发布至少一次

解决方案是使C runbook的dependsOn字段如下所示:

“dependsOn”:[
“[concat('Microsoft.Automation/automationAccounts/',parameters('accountName'))]”,
“[concat('Microsoft.Automation/automationAccounts/',参数('accountName'),'/runbooks/',变量('B'))]”,
[concat('Microsoft.Automation/automationAccounts/',参数('accountName'),'/runbooks/',变量('A'))]

]

谢谢,它成功了。我在使用runbook C的作业中为A和B添加了依赖项,但没有像您指出的那样在runbook C中添加这些依赖项。还向每个runbook添加了
“状态”:“已发布”
。是否有关于创建计划的详细文档?例如,关于计划,请参阅感谢@Joe,我可以从ARM模板中传递@{Param1=value1,等等..}?是否尝试设置计划启动作业时传递给作业的参数值?如果是,可以这样做,请参见否,只要子runbook在父runbook发布之前至少发布过一次,则不需要重新发布父runbook。这只是第一次。