Azure Automation Runbook Terraform module
Terraform module for creation Azure Automation Runbook
locals {
current_date_plus_one_day = substr(timeadd(timestamp(),"24h"),0,10)
automation_runbook = {
# Runbook Parameters
runbook : {
name = "VMStartStop"
description = "Example VM Start/Stop script"
content = templatefile("../scripts/vm_stop.tftpl", {
name = "VMStartStop"
vm_id = data.azurerm_virtual_machine.example.id
subscription_id = data.azurerm_client_config.current.subscription_id
})
}
# Parameters of Runbook's Schedules to create
schedules : [{
name = "StartVM"
start_time = format("%sT09:00:00Z", local.current_date_plus_one_day)
parameters = {
action = "start"
}
}, {
name = "StopVM"
start_time = format("%sT09:00:00Z", local.current_date_plus_one_day)
parameters = {
action = "stop"
}
}]
}
}
data "azurerm_virtual_machine" "example" {
name = "vm"
resource_group_name = "example"
}
data "azurerm_automation_account" "example" {
name = "example"
resource_group_name = "example"
}
module "automation-runbook" {
source = "data-platform-hq/automation-runbook/azurerm"
version = "~> 1.0"
project = var.project
env = var.env
location = var.location
resource_group = data.azurerm_automation_account.example.resource_group_name
automation_account_name = data.azurerm_automation_account.example.name
runbook = local.automation_runbook.runbook
schedule = local.automation_runbook.schedules
}
Name |
Description |
Type |
Default |
Required |
resource_group |
The name of the resource group |
string |
n/a |
yes |
location |
Azure location |
string |
n/a |
yes |
automation_account_name |
Automation Account name. |
string |
n/a |
yes |
runbook |
Objects with parameters to configure Runbook |
object({ name = optional(string), description = optional(string), script_path = optional(string), content = optional(string), log_verbose = optional(bool, true), log_progress = optional(bool, true), runbook_type = optional(string, "PowerShellWorkflow") }) |
n/a |
no |
schedules |
Set of objects with parameters to configure Schedules for Runbook. |
set(object({ name = optional(string), description = optional(string), frequency = optional(string, "Week"), interval = optional(string, "1"), start_time = optional(string, null), week_days = optional(list(string), ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]), parameters = optional(any, {}) })) |
[] |
no |
No modules.
Apache 2 Licensed. For more information please see LICENSE