From 3fcccfc376a64df8b2fcbf95818442682e686a0e Mon Sep 17 00:00:00 2001 From: Mark Gray Date: Mon, 11 Apr 2022 15:09:07 -0700 Subject: [PATCH] Examples for documentation for AzAPI provider including resource and update_resource --- .../main-generic.tf | 28 +++++++++++++++ .../101-azapi-eventhub-network-rules/main.tf | 34 +++++++++++++++++++ .../providers.tf | 28 +++++++++++++++ .../101-azapi-lab-services/main-generic.tf | 25 ++++++++++++++ quickstart/101-azapi-lab-services/main.tf | 13 +++++++ .../101-azapi-lab-services/providers.tf | 23 +++++++++++++ 6 files changed, 151 insertions(+) create mode 100644 quickstart/101-azapi-eventhub-network-rules/main-generic.tf create mode 100644 quickstart/101-azapi-eventhub-network-rules/main.tf create mode 100644 quickstart/101-azapi-eventhub-network-rules/providers.tf create mode 100644 quickstart/101-azapi-lab-services/main-generic.tf create mode 100644 quickstart/101-azapi-lab-services/main.tf create mode 100644 quickstart/101-azapi-lab-services/providers.tf diff --git a/quickstart/101-azapi-eventhub-network-rules/main-generic.tf b/quickstart/101-azapi-eventhub-network-rules/main-generic.tf new file mode 100644 index 00000000..a8abfec4 --- /dev/null +++ b/quickstart/101-azapi-eventhub-network-rules/main-generic.tf @@ -0,0 +1,28 @@ +# AzAPI update resource is used to enable Network Rule sets on Event Hub namespace +resource "azapi_update_resource" "qs101" { + type = "Microsoft.EventHub/namespaces/networkRuleSets@2021-11-01" + name = "default" + parent_id = azurerm_eventhub_namespace.qs101.id + + body = jsonencode({ + properties = { + defaultAction = "Deny" + publicNetworkAccess = "Enabled" + virtualNetworkRules = [ + { + ignoreMissingVnetServiceEndpoint = false + subnet = { + # API bug, returned id replaced `resourceGroups` with `resourcegroups` + id = replace(azurerm_subnet.qs101.id, "resourceGroups", "resourcegroups") + } + } + ] + ipRules = [ + { + action = "Allow" + ipMask = "1.1.1.1" + } + ] + } + }) +} diff --git a/quickstart/101-azapi-eventhub-network-rules/main.tf b/quickstart/101-azapi-eventhub-network-rules/main.tf new file mode 100644 index 00000000..7c89bfdd --- /dev/null +++ b/quickstart/101-azapi-eventhub-network-rules/main.tf @@ -0,0 +1,34 @@ +resource "azurerm_resource_group" "qs101" { + name = "rg-qs101-eh-rules" + location = "westus2" +} + +resource "azurerm_virtual_network" "qs101" { + name = "myvnet" + location = azurerm_resource_group.qs101.location + resource_group_name = azurerm_resource_group.qs101.name + address_space = ["172.17.0.0/16"] + dns_servers = ["10.0.0.4", "10.0.0.5"] +} + +resource "azurerm_subnet" "qs101" { + name = "default" + resource_group_name = azurerm_resource_group.qs101.name + virtual_network_name = azurerm_virtual_network.qs101.name + address_prefixes = ["172.17.0.0/24"] + + service_endpoints = ["Microsoft.EventHub"] +} + +resource "random_pet" "qs101_namespace" { + length = 3 + separator = "" +} + +resource "azurerm_eventhub_namespace" "qs101" { + name = random_pet.qs101_namespace.id + location = azurerm_resource_group.qs101.location + resource_group_name = azurerm_resource_group.qs101.name + sku = "Standard" + capacity = 2 +} diff --git a/quickstart/101-azapi-eventhub-network-rules/providers.tf b/quickstart/101-azapi-eventhub-network-rules/providers.tf new file mode 100644 index 00000000..90d29434 --- /dev/null +++ b/quickstart/101-azapi-eventhub-network-rules/providers.tf @@ -0,0 +1,28 @@ +terraform { + required_providers { + azapi = { + source = "azure/azapi" + version = "=0.1.0" + } + + azurerm = { + source = "hashicorp/azurerm" + version = "=3.0.2" + } + + random = { + source = "hashicorp/random" + version = "=3.1.2" + } + } +} + +provider "azapi" { +} + +provider "azurerm" { + features {} +} + +provider "random" { +} diff --git a/quickstart/101-azapi-lab-services/main-generic.tf b/quickstart/101-azapi-lab-services/main-generic.tf new file mode 100644 index 00000000..0cb58b74 --- /dev/null +++ b/quickstart/101-azapi-lab-services/main-generic.tf @@ -0,0 +1,25 @@ +# Provision a Lab Service Account and a Lab that are in public preview +resource "azapi_resource" "qs101-account" { + type = "Microsoft.LabServices/labaccounts@2018-10-15" + name = "qs101LabAccount" + parent_id = azurerm_resource_group.qs101.id + + body = jsonencode({ + properties = { + enabledRegionSelection = false + } + }) +} + +resource "azapi_resource" "qs101-lab" { + type = "Microsoft.LabServices/labaccounts/labs@2018-10-15" + name = "qs101Lab" + parent_id = azapi_resource.qs101-account.id + + body = jsonencode({ + properties = { + maxUsersInLab = 10 + userAccessMode = "Restricted" + } + }) +} diff --git a/quickstart/101-azapi-lab-services/main.tf b/quickstart/101-azapi-lab-services/main.tf new file mode 100644 index 00000000..42a27ae5 --- /dev/null +++ b/quickstart/101-azapi-lab-services/main.tf @@ -0,0 +1,13 @@ +resource "azurerm_resource_group" "qs101" { + name = "rg-qs101" + location = "westus2" + + depends_on = [ + azurerm_resource_provider_registration.qs101 + ] +} + +# +resource "azurerm_resource_provider_registration" "qs101" { + name = "Microsoft.LabServices" +} diff --git a/quickstart/101-azapi-lab-services/providers.tf b/quickstart/101-azapi-lab-services/providers.tf new file mode 100644 index 00000000..27870d6e --- /dev/null +++ b/quickstart/101-azapi-lab-services/providers.tf @@ -0,0 +1,23 @@ +terraform { + required_providers { + azapi = { + source = "azure/azapi" + version = "=0.1.0" + } + azurerm = { + source = "hashicorp/azurerm" + version = "=3.0.2" + } + } +} + +provider "azapi" { + default_location = "eastus" + default_tags = { + team = "Azure deployments" + } +} + +provider "azurerm" { + features {} +}