|
| 1 | +# Create/Delete Pagerduty Source |
| 2 | +resource "sumologic_http_source" "pagerduty" { |
| 3 | + name = "Pagerduty" |
| 4 | + category = var.source_category |
| 5 | + collector_id = var.collector_id |
| 6 | +} |
| 7 | + |
| 8 | +data "pagerduty_extension_schema" "webhook" { |
| 9 | + name = "Generic V2 Webhook" |
| 10 | +} |
| 11 | + |
| 12 | +# Create Webhook in Pagerduty |
| 13 | +resource "pagerduty_extension" "sumologic_extension" { |
| 14 | + count = length(var.pagerduty_services_pagerduty_webhooks) > 0 ? length(var.pagerduty_services_pagerduty_webhooks) : 0 |
| 15 | + name = "Sumo Logic Webhook" |
| 16 | + endpoint_url = sumologic_http_source.pagerduty.url |
| 17 | + extension_schema = data.pagerduty_extension_schema.webhook.id |
| 18 | + extension_objects = [var.pagerduty_services_pagerduty_webhooks[count.index]] |
| 19 | +} |
| 20 | + |
| 21 | +data "pagerduty_vendor" "sumologic" { |
| 22 | + name = "Sumo Logic" |
| 23 | +} |
| 24 | + |
| 25 | +# Generate timestamp to add to the folder name. |
| 26 | +locals { |
| 27 | + time_stamp = formatdate("DD-MMM-YYYY hh:mm:ss", timestamp()) |
| 28 | +} |
| 29 | + |
| 30 | +# Install Pagerduty App |
| 31 | +resource "null_resource" "install_pagerduty_app" { |
| 32 | + depends_on = [sumologic_http_source.pagerduty] |
| 33 | + triggers = { |
| 34 | + version = var.app_version |
| 35 | + } |
| 36 | + |
| 37 | + provisioner "local-exec" { |
| 38 | + command = <<EOT |
| 39 | + curl -s --request POST '${var.sumo_api_endpoint}/v1/apps/589857e0-e4c1-4165-8212-f656899a3b95/install' \ |
| 40 | + --header 'Accept: application/json' \ |
| 41 | + --header 'Content-Type: application/json' \ |
| 42 | + -u ${var.sumo_access_id}:${var.sumo_access_key} \ |
| 43 | + --data-raw '{ "name": "Pagerduty V2 - ${local.time_stamp}", "description": "The Sumo Logic App for PagerDuty V2 collects incident messages from your PagerDuty account via a webhook, and displays that incident data in pre-configured Dashboards, so you can monitor and analyze the activity of your PagerDuty account and Services.", "destinationFolderId": "${var.folder_id}","dataSourceValues": {"logsrcpd": "_sourceCategory = ${var.source_category}"}}' |
| 44 | + EOT |
| 45 | + } |
| 46 | +} |
0 commit comments