rename folder
This commit is contained in:
165
quickstart/201-iot-hub-with-device-provisioning-service/main.tf
Normal file
165
quickstart/201-iot-hub-with-device-provisioning-service/main.tf
Normal file
@ -0,0 +1,165 @@
|
||||
resource "random_pet" "rg_name" {
|
||||
prefix = var.resource_group_name_prefix
|
||||
}
|
||||
|
||||
resource "azurerm_resource_group" "rg" {
|
||||
location = var.resource_group_location
|
||||
name = random_pet.rg_name.id
|
||||
}
|
||||
|
||||
# Create storage account & container
|
||||
resource "random_string" "sa_name" {
|
||||
length = 12
|
||||
special = false
|
||||
upper = false
|
||||
}
|
||||
|
||||
resource "azurerm_storage_account" "sa" {
|
||||
name = random_string.sa_name.id
|
||||
resource_group_name = azurerm_resource_group.rg.name
|
||||
location = azurerm_resource_group.rg.location
|
||||
account_tier = "Standard"
|
||||
account_replication_type = "LRS"
|
||||
}
|
||||
|
||||
resource "azurerm_storage_container" "my_terraform_container" {
|
||||
name = "mycontainer"
|
||||
storage_account_name = azurerm_storage_account.sa.name
|
||||
container_access_type = "private"
|
||||
}
|
||||
|
||||
|
||||
# Create an Event Hub & Authorization Rule
|
||||
resource "random_pet" "eventhubnamespace_name" {
|
||||
prefix = var.eventhub_namespace_name_prefix
|
||||
}
|
||||
|
||||
resource "azurerm_eventhub_namespace" "namespace" {
|
||||
name = random_pet.eventhubnamespace_name.id
|
||||
resource_group_name = azurerm_resource_group.rg.name
|
||||
location = azurerm_resource_group.rg.location
|
||||
sku = "Basic"
|
||||
}
|
||||
|
||||
resource "azurerm_eventhub" "my_terraform_eventhub" {
|
||||
name = "myEventHub"
|
||||
resource_group_name = azurerm_resource_group.rg.name
|
||||
namespace_name = azurerm_eventhub_namespace.namespace.name
|
||||
partition_count = 2
|
||||
message_retention = 1
|
||||
}
|
||||
|
||||
resource "azurerm_eventhub_authorization_rule" "my_terraform_authorization_rule" {
|
||||
resource_group_name = azurerm_resource_group.rg.name
|
||||
namespace_name = azurerm_eventhub_namespace.namespace.name
|
||||
eventhub_name = azurerm_eventhub.my_terraform_eventhub.name
|
||||
name = "acctest"
|
||||
send = true
|
||||
}
|
||||
|
||||
|
||||
# Create an IoT Hub
|
||||
resource "random_pet" "iothub_name" {
|
||||
prefix = var.iothub_name_prefix
|
||||
length = 1
|
||||
}
|
||||
|
||||
resource "azurerm_iothub" "iothub" {
|
||||
name = random_pet.iothub_name.id
|
||||
resource_group_name = azurerm_resource_group.rg.name
|
||||
location = azurerm_resource_group.rg.location
|
||||
|
||||
sku {
|
||||
name = "S1"
|
||||
capacity = "1"
|
||||
}
|
||||
|
||||
endpoint {
|
||||
type = "AzureIotHub.StorageContainer"
|
||||
connection_string = azurerm_storage_account.sa.primary_blob_connection_string
|
||||
name = "export"
|
||||
batch_frequency_in_seconds = 60
|
||||
max_chunk_size_in_bytes = 10485760
|
||||
container_name = azurerm_storage_container.my_terraform_container.name
|
||||
encoding = "Avro"
|
||||
file_name_format = "{iothub}/{partition}_{YYYY}_{MM}_{DD}_{HH}_{mm}"
|
||||
}
|
||||
|
||||
endpoint {
|
||||
type = "AzureIotHub.EventHub"
|
||||
connection_string = azurerm_eventhub_authorization_rule.my_terraform_authorization_rule.primary_connection_string
|
||||
name = "export2"
|
||||
}
|
||||
|
||||
route {
|
||||
name = "export"
|
||||
source = "DeviceMessages"
|
||||
condition = "true"
|
||||
endpoint_names = ["export"]
|
||||
enabled = true
|
||||
}
|
||||
|
||||
route {
|
||||
name = "export2"
|
||||
source = "DeviceMessages"
|
||||
condition = "true"
|
||||
endpoint_names = ["export2"]
|
||||
enabled = true
|
||||
}
|
||||
|
||||
enrichment {
|
||||
key = "tenant"
|
||||
value = "$twin.tags.Tenant"
|
||||
endpoint_names = ["export", "export2"]
|
||||
}
|
||||
|
||||
cloud_to_device {
|
||||
max_delivery_count = 30
|
||||
default_ttl = "PT1H"
|
||||
feedback {
|
||||
time_to_live = "PT1H10M"
|
||||
max_delivery_count = 15
|
||||
lock_duration = "PT30S"
|
||||
}
|
||||
}
|
||||
|
||||
tags = {
|
||||
purpose = "testing"
|
||||
}
|
||||
}
|
||||
|
||||
#Create IoT Hub Access Policy
|
||||
resource "azurerm_iothub_shared_access_policy" "hubaccesspolicy" {
|
||||
name = "terraform-policy"
|
||||
resource_group_name = azurerm_resource_group.rg.name
|
||||
iothub_name = azurerm_iothub.iothub.name
|
||||
|
||||
registry_read = true
|
||||
registry_write = true
|
||||
service_connect = true
|
||||
}
|
||||
|
||||
# Create IoT Hub DPS
|
||||
resource "random_pet" "dps_name" {
|
||||
prefix = var.dps_name_prefix
|
||||
length = 1
|
||||
}
|
||||
|
||||
resource "azurerm_iothub_dps" "dps" {
|
||||
name = random_pet.dps_name.id
|
||||
resource_group_name = azurerm_resource_group.rg.name
|
||||
location = azurerm_resource_group.rg.location
|
||||
allocation_policy = "Hashed"
|
||||
|
||||
sku {
|
||||
name = "S1"
|
||||
capacity = "1"
|
||||
}
|
||||
|
||||
linked_hub {
|
||||
connection_string = azurerm_iothub_shared_access_policy.hubaccesspolicy.primary_connection_string
|
||||
location = azurerm_resource_group.rg.location
|
||||
allocation_weight = 150
|
||||
apply_allocation_policy = true
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user