英文:
How do I ensure a new Azure runbook with parameters is published on creation?
问题
我有一个 bicep 模板,用于创建一个自动化帐户,其中包含一个运行簿和计划任务。新的运行簿具有参数,用于引用它所影响的存储帐户并将这些参数传递给 PowerShell 脚本。目前,这个运行簿没有被创建为 "已发布",这意味着它无法使用,也无法与计划任务关联。
我如何确保运行簿已发布(并且已设置好 PowerShell 输入参数),以便运行簿和计划任务之间的关联工作,以便不需要在 Azure 门户中手动发布和关联它们?
以下是脚本的 bicep 模板:
param automationAccountName string
param location string
param runbookName string
param runbookContentUrl string
param scheduleName string
param storageAccountName string
param resourceGroupName string
param jobScheduleLinkName string
resource automationAccount 'Microsoft.Automation/automationAccounts@2022-08-08' = {
name: automationAccountName
location: location
identity: {
type: 'SystemAssigned'
}
properties: {
publicNetworkAccess: true
disableLocalAuth: false
sku: {
name: 'Basic'
}
encryption: {
keySource: 'Microsoft.Automation'
identity: {}
}
}
}
resource runbook 'Microsoft.Automation/automationAccounts/runbooks@2022-08-08' = {
parent: automationAccount
name: runbookName
location: location
properties: {
runbookType: 'PowerShell'
logVerbose: true
logProgress: true
logActivityTrace: 1
draft: {
inEdit: false
parameters: {
storageAccountName: {
type: 'string'
defaultValue: storageAccountName
}
resourceGroupName: {
type: 'string'
defaultValue: resourceGroupName
}
}
}
publishContentLink: {
uri: runbookContentUrl
version: '1.0.0.0'
}
}
}
resource runbookSchedule 'Microsoft.Automation/automationAccounts/schedules@2022-08-08' = {
parent: automationAccount
name: scheduleName
properties: {
frequency: 'Day'
interval: 1
startTime: '2023-06-08T00:00:00Z'
expiryTime: '9999-12-31T23:59:59Z'
timeZone: 'Europe/London'
}
}
resource jobScheduleLink 'Microsoft.Automation/automationAccounts/jobSchedules@2022-08-08' = {
parent: automationAccount
name: jobScheduleLinkName
properties: {
schedule: {
name: scheduleName
}
runbook: {
name: runbookName
}
}
dependsOn: [
runbook
runbookSchedule
]
}
output automationAccountId string = automationAccount.identity.principalId
我尝试单独添加 publishContentLink
,但它不允许 parameters
。我还尝试创建一个新的部署资源以部署/发布运行簿,但也无法使其工作。
英文:
I have a bicep template being used to create an automation account with a runbook and schedule inside it. The new runbook has parameters to reference the storage account it affects and pass these to the PowerShell script. Currently this runbook is not created as 'published' which means it can't be used nor can it be linked to the schedule.
How do I ensure the runbook is published (with the PowerShell input parameters in place) so that the linking between runbook and schedule works so that it doesn't need manually publishing and linking afterwards in Azure Portal?
Here is the bicep template for the script:
param automationAccountName string
param location string
param runbookName string
param runbookContentUrl string
param scheduleName string
param storageAccountName string
param resourceGroupName string
param jobScheduleLinkName string
resource automationAccount 'Microsoft.Automation/automationAccounts@2022-08-08' = {
name: automationAccountName
location: location
identity: {
type: 'SystemAssigned'
}
properties: {
publicNetworkAccess: true
disableLocalAuth: false
sku: {
name: 'Basic'
}
encryption: {
keySource: 'Microsoft.Automation'
identity: {}
}
}
}
resource runbook 'Microsoft.Automation/automationAccounts/runbooks@2022-08-08' = {
parent: automationAccount
name: runbookName
location: location
properties: {
runbookType: 'PowerShell'
logVerbose: true
logProgress: true
logActivityTrace: 1
draft: {
inEdit: false
parameters: {
storageAccountName: {
type: 'string'
defaultValue: storageAccountName
}
resourceGroupName: {
type: 'string'
defaultValue: resourceGroupName
}
}
}
publishContentLink: {
uri: runbookContentUrl
version: '1.0.0.0'
}
}
}
resource runbookSchedule 'Microsoft.Automation/automationAccounts/schedules@2022-08-08' = {
parent: automationAccount
name: scheduleName
properties: {
frequency: 'Day'
interval: 1
startTime: '2023-06-08T00:00:00Z'
expiryTime: '9999-12-31T23:59:59Z'
timeZone: 'Europe/London'
}
}
resource jobScheduleLink 'Microsoft.Automation/automationAccounts/jobSchedules@2022-08-08' = {
parent: automationAccount
name: jobScheduleLinkName
properties: {
schedule: {
name: scheduleName
}
runbook: {
name: runbookName
}
}
dependsOn: [
runbook
runbookSchedule
]
}
output automationAccountId string = automationAccount.identity.principalId
I tried adding publishContentLink
separately but it doesn't allow for parameters
.
I tried to create a new deployment resource to deploy/publish the runbook but couldn't get that to work either.
答案1
得分: 0
你需要传递一个带有键/值的 params 对象。
resource automationJobs 'Microsoft.Automation/automationAccounts/jobSchedules@2022-08-08' = {
parent: automationAccount
name: guid(automationAccount.id, runbook.name, job.schedule)
properties: {
schedule: {
name: runbookSchedule.name
}
runbook: {
name: runbook.name
}
parameters: {
ResourceGroupName : 'myRG'
AksClusterName : 'myVM'
Operation: 'start'
}
}
dependsOn: [runbookSchedule]
}
要获取更详细的示例,我正在为 Microsoft Bicep Registry 贡献一个自动化帐户模块。 PR
英文:
You'll need to pass a params object with the key/values.
resource automationJobs 'Microsoft.Automation/automationAccounts/jobSchedules@2022-08-08' = {
parent: automationAccount
name: guid(automationAccount.id, runbook.name, job.schedule)
properties: {
schedule: {
name: runbookSchedule.name
}
runbook: {
name: runbook.name
}
parameters: {
ResourceGroupName : 'myRG'
AksClusterName : 'myVM'
Operation: 'start'
}
}
dependsOn: [runbookSchedule]
}
For a fuller sample, I'm in the middle of contributing a Automation Account module to the Microsoft Bicep Registry. PR
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论