Skip to content

Commit f50e383

Browse files
author
radomarina
committed
feat: bump
1 parent 5399678 commit f50e383

File tree

9 files changed

+93
-42
lines changed

9 files changed

+93
-42
lines changed

README.md

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,48 @@ client_secret = ""
3939
tenant_id = ""
4040
subscription_id = ""
4141
```
42-
### Installation
42+
### Installation Discovered Subscriptions
43+
44+
```hcl-terraform
45+
46+
module "firefly_azure_integration" {
47+
source = "github.com/gofireflyio/terraform-firefly-azure-onboarding?ref=v1.1.0"
48+
49+
client_id = var.client_id
50+
client_secret = var.client_secret
51+
52+
tenant_id = var.tenant_id
53+
// firefly's landing subscription: eventgrid, storage_account and resource_group will be created here
54+
subscription_id = var.subscription_id
55+
56+
// firefly credentials
57+
firefly_access_key = var.firefly_access_key
58+
firefly_secret_key = var.firefly_secret_key
59+
60+
// custom settings
61+
location = var.location
62+
prefix = var.prefix
63+
tags = var.tags
64+
65+
// create resource provider registration
66+
create_resource_provider_registration = false
67+
68+
// enablew on all subscriptions that can be discovered
69+
eventdriven_auto_discover = true
70+
// enable eventdriven on subscription_id that was given
71+
eventdriven_enabled = true
72+
73+
// create integrations
74+
trigger_integrations = true
75+
}
76+
77+
```
78+
79+
### Installation Single Subscription
4380

4481
```hcl-terraform
4582
module "firefly_azure_integration_00000000-0000-0000-0000-000000000000" {
46-
source = "github.com/gofireflyio/terraform-firefly-azure-onboarding?ref=v1.0.0"
83+
source = "github.com/gofireflyio/terraform-firefly-azure-onboarding?ref=v1.1.0"
4784
client_id = var.client_id
4885
client_secret = var.client_secret
4986
tenant_id = var.tenant_id
@@ -69,7 +106,7 @@ output "firefly_subscription_id_00000000-0000-0000-0000-000000000000" {
69106
70107
71108
module "firefly_azure_integration_11111111-1111-1111-1111-111111111111" {
72-
source = "github.com/gofireflyio/terraform-firefly-azure-onboarding?ref=v1.0.0"
109+
source = "github.com/gofireflyio/terraform-firefly-azure-onboarding?ref=v1.1.0"
73110
client_id = var.client_id
74111
client_secret = var.client_secret
75112
tenant_id = var.tenant_id

data.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
data "azurerm_management_group" "current" {
22
name = var.tenant_id
33
}
4+
45
data "azurerm_subscriptions" "current" {}
56
data "azuread_client_config" "current" {}
7+
data "azurerm_subscription" "current" {
8+
subscription_id = var.subscription_id
9+
}
610
data "azuread_application_published_app_ids" "well_known" {}
711

812
resource "azuread_service_principal" "msgraph" {

eventdriven.tf

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ resource "azurerm_eventgrid_system_topic_event_subscription" "current" {
4545
}
4646

4747
resource "azurerm_role_definition" "FireflyStorageAccountBlobReader" {
48+
count = var.eventdriven_enabled ? 1 : 0
4849
name = "${var.prefix}FireflyStorageAccountBlobReader-${var.subscription_id}${var.suffix}"
4950
scope = "/subscriptions/${var.subscription_id}"
5051
description = "Firefly's requested permissions"
@@ -60,6 +61,7 @@ resource "azurerm_role_definition" "FireflyStorageAccountBlobReader" {
6061
}
6162

6263
resource "azurerm_role_assignment" "FireflyStorageAccountBlobReader" {
64+
count = var.eventdriven_enabled ? 1 : 0
6365
principal_id = azuread_service_principal.current.id
6466
role_definition_name = azurerm_role_definition.FireflyStorageAccountBlobReader.name
6567
scope = "/subscriptions/${var.subscription_id}"
@@ -83,7 +85,7 @@ EOT
8385
}
8486

8587
resource "azurerm_monitor_diagnostic_setting" "current" {
86-
for_each = local.kv_filtered_subscriptions
88+
for_each = var.eventdriven_enabled ? local.kv_filtered_subscriptions : {}
8789
name = "${var.prefix}firefly${each.key}${var.suffix}"
8890
target_resource_id = "/subscriptions/${each.key}"
8991
storage_account_id = azurerm_storage_account.current[0].id

integration.tf

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
data "http" "firefly_login" {
2-
count = var.firefly_secret_key != "" ? 1 : 0
2+
count = var.firefly_secret_key != "" ? 1 : 0
33
url = "${var.firefly_endpoint}/account/access_keys/login"
44
method = "POST"
55
request_headers = {
@@ -15,17 +15,16 @@ locals {
1515

1616
// Multi
1717
module "firefly_integrate" {
18-
for_each = local.kv_filtered_subscriptions
19-
firefly_endpoint = "https://api-eu.stag.firefly.ai/api"
20-
source = "./modules/firefly_azure_integration"
21-
#firefly_token = local.token
18+
for_each = var.trigger_integrations ? local.kv_filtered_subscriptions : {}
19+
firefly_endpoint = var.firefly_endpoint
20+
source = "./modules/firefly_azure_integration"
2221
firefly_token = local.token
2322
subscription_id = each.key
2423
subscription_name = each.value
2524
tenant_id = var.tenant_id
2625
application_id = azuread_service_principal.current.client_id
2726
client_secret = azuread_service_principal_password.current.value
28-
directory_domain = "firefly"
27+
directory_domain = var.directory_domain
2928
eventdriven_enabled = var.eventdriven_enabled
30-
iac_auto_discovery_disabled = true
29+
iac_auto_discovery_disabled = var.iac_auto_discovery_disabled
3130
}

locals.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
locals {
2-
filtered_subscriptions = [for subscription in data.azurerm_subscriptions.current.subscriptions : subscription if !contains(keys(subscription.tags), "disable_firefly_discovery") && subscription.state == "Enabled"]
3-
kv_filtered_subscriptions = var.trigger_integrations && length(local.filtered_subscriptions) > 0 ? { for subscription in local.filtered_subscriptions : subscription.subscription_id => subscription.display_name } : {}
2+
filtered_subscriptions = [for subscription in data.azurerm_subscriptions.current.subscriptions : subscription if !contains(keys(subscription.tags), "disable_firefly_discovery") && subscription.state == "Enabled"]
3+
kv_filtered_subscriptions = length(local.filtered_subscriptions) > 0 ? { for subscription in local.filtered_subscriptions : subscription.subscription_id => subscription.display_name } : { var.subscription_id = data.azurerm_subscription.current.display_name }
44

55
tags = merge(var.tags, {
66
"firefly" = "true"
Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
1-
data "http" "firefly_aws_integration_request" {
2-
url = "${var.firefly_endpoint}/integrations/azure/"
1+
data "http" "firefly_azure_integration_request" {
2+
url = "${var.firefly_endpoint}/integrations/azure/"
33
method = "POST"
44
request_headers = {
5-
Content-Type = "application/json"
5+
Content-Type = "application/json"
66
Authorization = "Bearer ${var.firefly_token}"
77
}
88
retry {
9-
attempts = 3
9+
attempts = 3
1010
max_delay_ms = 5000
1111
min_delay_ms = 5000
1212
}
1313
request_body = jsonencode(
1414
{
15-
"name"= var.subscription_name,
16-
"subscriptionId"= var.subscription_id,
17-
"tenantId"= var.tenant_id,
18-
"applicationId"= var.application_id,
19-
"clientSecret"= var.client_secret,
20-
"directoryDomain" = var.directory_domain,
21-
"isProd" = var.is_prod,
22-
"isEventDriven" = var.eventdriven_enabled,
23-
"isIacAutoDiscoveryDisabled" = var.iac_auto_discovery_disabled
15+
"name" = var.subscription_name,
16+
"subscriptionId" = var.subscription_id,
17+
"tenantId" = var.tenant_id,
18+
"applicationId" = var.application_id,
19+
"clientSecret" = var.client_secret,
20+
"directoryDomain" = var.directory_domain,
21+
"isProd" = var.is_prod,
22+
"isEventDriven" = var.eventdriven_enabled,
23+
"isIacAutoDiscoveryDisabled" = var.iac_auto_discovery_disabled
2424
}
2525
)
2626
}

modules/firefly_azure_integration/terraform.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
terraform {
22
required_providers {
33
http = {
4-
source = "hashicorp/http"
4+
source = "hashicorp/http"
55
version = "3.4.2"
66
}
77
}

modules/firefly_azure_integration/vars.tf

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ variable "subscription_name" {
44
}
55

66
variable "firefly_token" {
7-
type = string
7+
type = string
88
description = "Token returned as result of login request, if provided firefly_access_key and firefly_secret_key are ignored"
99
}
1010

@@ -17,7 +17,7 @@ variable "subscription_id" {
1717
variable "firefly_endpoint" {
1818
type = string
1919
description = "The Firefly endpoint to register account management"
20-
default = "https://prodapi.gofirefly.io/api"
20+
default = "https://prodapi.gofirefly.io/api"
2121
}
2222

2323
variable "is_prod" {
@@ -43,11 +43,11 @@ variable "directory_domain" {
4343
}
4444

4545
variable "eventdriven_enabled" {
46-
type = bool
46+
type = bool
4747
default = true
4848
}
4949

5050
variable "iac_auto_discovery_disabled" {
51-
type = bool
51+
type = bool
5252
default = false
5353
}

vars.tf

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
1-
variable "location" {
1+
variable "firefly_endpoint" {
22
type = string
3-
default = "eastus"
3+
default = "https://prodapi.firefly.io/api"
44
}
55

6-
variable "firefly_endpoint" {
7-
type = string
8-
default = "https://prodapi.firefly.io/api"
6+
variable "firefly_webhook_url" {
7+
type = string
8+
default = "https://azureevents.gofirefly.io"
99
}
1010

11-
1211
variable "trigger_integrations" {
12+
type = bool
13+
default = true
14+
}
15+
16+
variable "iac_auto_discovery_disabled" {
1317
type = bool
1418
default = true
1519
}
@@ -32,6 +36,16 @@ variable "firefly_secret_key" {
3236
}
3337
}
3438

39+
variable "directory_domain" {
40+
type = string
41+
}
42+
43+
variable "location" {
44+
type = string
45+
default = "eastus"
46+
}
47+
48+
3549
variable "prefix" {
3650
type = string
3751
default = ""
@@ -61,11 +75,6 @@ variable "tenant_id" {
6175
type = string
6276
}
6377

64-
variable "firefly_webhook_url" {
65-
type = string
66-
default = "https://azureevents.gofirefly.io"
67-
}
68-
6978
variable "subscription_id" {
7079
type = string
7180
}

0 commit comments

Comments
 (0)