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