From ecc14c6b0e8a66808fb601bbcb1f1dccc0f24cd4 Mon Sep 17 00:00:00 2001 From: pulumi-bot Date: Tue, 4 Feb 2025 11:14:31 +0000 Subject: [PATCH 1/2] make tfgen --- examples/go.mod | 4 ++++ examples/go.sum | 8 ++++---- .../cmd/pulumi-resource-azure/schema.json | 20 +++++++++---------- provider/go.mod | 4 ++++ provider/go.sum | 8 ++++---- sdk/go.mod | 4 ++++ sdk/go.sum | 4 ++-- 7 files changed, 32 insertions(+), 20 deletions(-) diff --git a/examples/go.mod b/examples/go.mod index 3de96b28b5..3a01c9b268 100644 --- a/examples/go.mod +++ b/examples/go.mod @@ -181,3 +181,7 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/frand v1.4.2 // indirect ) + +replace github.com/pulumi/pulumi/pkg/v3 => github.com/pulumi/pulumi/pkg/v3 v3.147.1-0.20250204110054-ef37ccd6ccc6 + +replace github.com/pulumi/pulumi/sdk/v3 => github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250204110054-ef37ccd6ccc6 diff --git a/examples/go.sum b/examples/go.sum index d9d0459843..635d59df23 100644 --- a/examples/go.sum +++ b/examples/go.sum @@ -337,10 +337,10 @@ github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435 github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= github.com/pulumi/esc v0.10.0 h1:jzBKzkLVW0mePeanDRfqSQoCJ5yrkux0jIwAkUxpRKE= github.com/pulumi/esc v0.10.0/go.mod h1:2Bfa+FWj/xl8CKqRTWbWgDX0SOD4opdQgvYSURTGK2c= -github.com/pulumi/pulumi/pkg/v3 v3.147.0 h1:aFzP2kXBL/nPPDao625xIkjAhqT5GKe3XfPXbG07oFA= -github.com/pulumi/pulumi/pkg/v3 v3.147.0/go.mod h1:WqLJy8lfzbGTEqz5Rukd+GrqBYNBf8Y3dJ+Wde+G6g4= -github.com/pulumi/pulumi/sdk/v3 v3.147.0 h1:8ZDZnEsCZa6shw1dwIDUssbYMooYyebhpmx5feuZCqM= -github.com/pulumi/pulumi/sdk/v3 v3.147.0/go.mod h1:+WC9aIDo8fMgd2g0jCHuZU2S/VYNLRAZ3QXt6YVgwaA= +github.com/pulumi/pulumi/pkg/v3 v3.147.1-0.20250204110054-ef37ccd6ccc6 h1:Owln0Gvs3xRM4wiN8e7g2LMiyw8bB78MIicni1DqS6M= +github.com/pulumi/pulumi/pkg/v3 v3.147.1-0.20250204110054-ef37ccd6ccc6/go.mod h1:WqLJy8lfzbGTEqz5Rukd+GrqBYNBf8Y3dJ+Wde+G6g4= +github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250204110054-ef37ccd6ccc6 h1:UDC+mokojDo66CQQltNMcbnYsHb8g3TBuxQJIpyeesA= +github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250204110054-ef37ccd6ccc6/go.mod h1:+WC9aIDo8fMgd2g0jCHuZU2S/VYNLRAZ3QXt6YVgwaA= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= diff --git a/provider/cmd/pulumi-resource-azure/schema.json b/provider/cmd/pulumi-resource-azure/schema.json index ebda67b6d5..16145f7bdc 100644 --- a/provider/cmd/pulumi-resource-azure/schema.json +++ b/provider/cmd/pulumi-resource-azure/schema.json @@ -123076,7 +123076,7 @@ } }, "azure:appservice/slotVirtualNetworkSwiftConnection:SlotVirtualNetworkSwiftConnection": { - "description": "Manages an App Service Slot's Virtual Network Association (this is for the [Regional VNet Integration](https://docs.microsoft.com/azure/app-service/web-sites-integrate-with-vnet#regional-vnet-integration) which is still in preview).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleVirtualNetwork = new azure.network.VirtualNetwork(\"example\", {\n name: \"example-virtual-network\",\n addressSpaces: [\"10.0.0.0/16\"],\n location: example.location,\n resourceGroupName: example.name,\n});\nconst exampleSubnet = new azure.network.Subnet(\"example\", {\n name: \"example-subnet\",\n resourceGroupName: example.name,\n virtualNetworkName: exampleVirtualNetwork.name,\n addressPrefixes: [\"10.0.1.0/24\"],\n delegations: [{\n name: \"example-delegation\",\n serviceDelegation: {\n name: \"Microsoft.Web/serverFarms\",\n actions: [\"Microsoft.Network/virtualNetworks/subnets/action\"],\n },\n }],\n});\nconst examplePlan = new azure.appservice.Plan(\"example\", {\n name: \"example-service-plan\",\n location: example.location,\n resourceGroupName: example.name,\n sku: {\n tier: \"Standard\",\n size: \"S1\",\n },\n});\nconst exampleAppService = new azure.appservice.AppService(\"example\", {\n name: \"example-app-service\",\n location: example.location,\n resourceGroupName: example.name,\n appServicePlanId: examplePlan.id,\n});\nconst example_staging = new azure.appservice.Slot(\"example-staging\", {\n name: \"staging\",\n appServiceName: exampleAppService.name,\n location: example.location,\n resourceGroupName: example.name,\n appServicePlanId: examplePlan.id,\n});\nconst exampleSlotVirtualNetworkSwiftConnection = new azure.appservice.SlotVirtualNetworkSwiftConnection(\"example\", {\n slotName: example_staging.name,\n appServiceId: exampleAppService.id,\n subnetId: exampleSubnet.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_virtual_network = azure.network.VirtualNetwork(\"example\",\n name=\"example-virtual-network\",\n address_spaces=[\"10.0.0.0/16\"],\n location=example.location,\n resource_group_name=example.name)\nexample_subnet = azure.network.Subnet(\"example\",\n name=\"example-subnet\",\n resource_group_name=example.name,\n virtual_network_name=example_virtual_network.name,\n address_prefixes=[\"10.0.1.0/24\"],\n delegations=[{\n \"name\": \"example-delegation\",\n \"service_delegation\": {\n \"name\": \"Microsoft.Web/serverFarms\",\n \"actions\": [\"Microsoft.Network/virtualNetworks/subnets/action\"],\n },\n }])\nexample_plan = azure.appservice.Plan(\"example\",\n name=\"example-service-plan\",\n location=example.location,\n resource_group_name=example.name,\n sku={\n \"tier\": \"Standard\",\n \"size\": \"S1\",\n })\nexample_app_service = azure.appservice.AppService(\"example\",\n name=\"example-app-service\",\n location=example.location,\n resource_group_name=example.name,\n app_service_plan_id=example_plan.id)\nexample_staging = azure.appservice.Slot(\"example-staging\",\n name=\"staging\",\n app_service_name=example_app_service.name,\n location=example.location,\n resource_group_name=example.name,\n app_service_plan_id=example_plan.id)\nexample_slot_virtual_network_swift_connection = azure.appservice.SlotVirtualNetworkSwiftConnection(\"example\",\n slot_name=example_staging.name,\n app_service_id=example_app_service.id,\n subnet_id=example_subnet.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleVirtualNetwork = new Azure.Network.VirtualNetwork(\"example\", new()\n {\n Name = \"example-virtual-network\",\n AddressSpaces = new[]\n {\n \"10.0.0.0/16\",\n },\n Location = example.Location,\n ResourceGroupName = example.Name,\n });\n\n var exampleSubnet = new Azure.Network.Subnet(\"example\", new()\n {\n Name = \"example-subnet\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = exampleVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"10.0.1.0/24\",\n },\n Delegations = new[]\n {\n new Azure.Network.Inputs.SubnetDelegationArgs\n {\n Name = \"example-delegation\",\n ServiceDelegation = new Azure.Network.Inputs.SubnetDelegationServiceDelegationArgs\n {\n Name = \"Microsoft.Web/serverFarms\",\n Actions = new[]\n {\n \"Microsoft.Network/virtualNetworks/subnets/action\",\n },\n },\n },\n },\n });\n\n var examplePlan = new Azure.AppService.Plan(\"example\", new()\n {\n Name = \"example-service-plan\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n Sku = new Azure.AppService.Inputs.PlanSkuArgs\n {\n Tier = \"Standard\",\n Size = \"S1\",\n },\n });\n\n var exampleAppService = new Azure.AppService.AppService(\"example\", new()\n {\n Name = \"example-app-service\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AppServicePlanId = examplePlan.Id,\n });\n\n var example_staging = new Azure.AppService.Slot(\"example-staging\", new()\n {\n Name = \"staging\",\n AppServiceName = exampleAppService.Name,\n Location = example.Location,\n ResourceGroupName = example.Name,\n AppServicePlanId = examplePlan.Id,\n });\n\n var exampleSlotVirtualNetworkSwiftConnection = new Azure.AppService.SlotVirtualNetworkSwiftConnection(\"example\", new()\n {\n SlotName = example_staging.Name,\n AppServiceId = exampleAppService.Id,\n SubnetId = exampleSubnet.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/appservice\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"example\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"example-virtual-network\"),\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleSubnet, err := network.NewSubnet(ctx, \"example\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"example-subnet\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: exampleVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.1.0/24\"),\n\t\t\t},\n\t\t\tDelegations: network.SubnetDelegationArray{\n\t\t\t\t\u0026network.SubnetDelegationArgs{\n\t\t\t\t\tName: pulumi.String(\"example-delegation\"),\n\t\t\t\t\tServiceDelegation: \u0026network.SubnetDelegationServiceDelegationArgs{\n\t\t\t\t\t\tName: pulumi.String(\"Microsoft.Web/serverFarms\"),\n\t\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"Microsoft.Network/virtualNetworks/subnets/action\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texamplePlan, err := appservice.NewPlan(ctx, \"example\", \u0026appservice.PlanArgs{\n\t\t\tName: pulumi.String(\"example-service-plan\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tSku: \u0026appservice.PlanSkuArgs{\n\t\t\t\tTier: pulumi.String(\"Standard\"),\n\t\t\t\tSize: pulumi.String(\"S1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAppService, err := appservice.NewAppService(ctx, \"example\", \u0026appservice.AppServiceArgs{\n\t\t\tName: pulumi.String(\"example-app-service\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAppServicePlanId: examplePlan.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appservice.NewSlot(ctx, \"example-staging\", \u0026appservice.SlotArgs{\n\t\t\tName: pulumi.String(\"staging\"),\n\t\t\tAppServiceName: exampleAppService.Name,\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAppServicePlanId: examplePlan.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appservice.NewSlotVirtualNetworkSwiftConnection(ctx, \"example\", \u0026appservice.SlotVirtualNetworkSwiftConnectionArgs{\n\t\t\tSlotName: example_staging.Name,\n\t\t\tAppServiceId: exampleAppService.ID(),\n\t\t\tSubnetId: exampleSubnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.Subnet;\nimport com.pulumi.azure.network.SubnetArgs;\nimport com.pulumi.azure.network.inputs.SubnetDelegationArgs;\nimport com.pulumi.azure.network.inputs.SubnetDelegationServiceDelegationArgs;\nimport com.pulumi.azure.appservice.Plan;\nimport com.pulumi.azure.appservice.PlanArgs;\nimport com.pulumi.azure.appservice.inputs.PlanSkuArgs;\nimport com.pulumi.azure.appservice.AppService;\nimport com.pulumi.azure.appservice.AppServiceArgs;\nimport com.pulumi.azure.appservice.Slot;\nimport com.pulumi.azure.appservice.SlotArgs;\nimport com.pulumi.azure.appservice.SlotVirtualNetworkSwiftConnection;\nimport com.pulumi.azure.appservice.SlotVirtualNetworkSwiftConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleVirtualNetwork = new VirtualNetwork(\"exampleVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"example-virtual-network\")\n .addressSpaces(\"10.0.0.0/16\")\n .location(example.location())\n .resourceGroupName(example.name())\n .build());\n\n var exampleSubnet = new Subnet(\"exampleSubnet\", SubnetArgs.builder()\n .name(\"example-subnet\")\n .resourceGroupName(example.name())\n .virtualNetworkName(exampleVirtualNetwork.name())\n .addressPrefixes(\"10.0.1.0/24\")\n .delegations(SubnetDelegationArgs.builder()\n .name(\"example-delegation\")\n .serviceDelegation(SubnetDelegationServiceDelegationArgs.builder()\n .name(\"Microsoft.Web/serverFarms\")\n .actions(\"Microsoft.Network/virtualNetworks/subnets/action\")\n .build())\n .build())\n .build());\n\n var examplePlan = new Plan(\"examplePlan\", PlanArgs.builder()\n .name(\"example-service-plan\")\n .location(example.location())\n .resourceGroupName(example.name())\n .sku(PlanSkuArgs.builder()\n .tier(\"Standard\")\n .size(\"S1\")\n .build())\n .build());\n\n var exampleAppService = new AppService(\"exampleAppService\", AppServiceArgs.builder()\n .name(\"example-app-service\")\n .location(example.location())\n .resourceGroupName(example.name())\n .appServicePlanId(examplePlan.id())\n .build());\n\n var example_staging = new Slot(\"example-staging\", SlotArgs.builder()\n .name(\"staging\")\n .appServiceName(exampleAppService.name())\n .location(example.location())\n .resourceGroupName(example.name())\n .appServicePlanId(examplePlan.id())\n .build());\n\n var exampleSlotVirtualNetworkSwiftConnection = new SlotVirtualNetworkSwiftConnection(\"exampleSlotVirtualNetworkSwiftConnection\", SlotVirtualNetworkSwiftConnectionArgs.builder()\n .slotName(example_staging.name())\n .appServiceId(exampleAppService.id())\n .subnetId(exampleSubnet.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleVirtualNetwork:\n type: azure:network:VirtualNetwork\n name: example\n properties:\n name: example-virtual-network\n addressSpaces:\n - 10.0.0.0/16\n location: ${example.location}\n resourceGroupName: ${example.name}\n exampleSubnet:\n type: azure:network:Subnet\n name: example\n properties:\n name: example-subnet\n resourceGroupName: ${example.name}\n virtualNetworkName: ${exampleVirtualNetwork.name}\n addressPrefixes:\n - 10.0.1.0/24\n delegations:\n - name: example-delegation\n serviceDelegation:\n name: Microsoft.Web/serverFarms\n actions:\n - Microsoft.Network/virtualNetworks/subnets/action\n examplePlan:\n type: azure:appservice:Plan\n name: example\n properties:\n name: example-service-plan\n location: ${example.location}\n resourceGroupName: ${example.name}\n sku:\n tier: Standard\n size: S1\n exampleAppService:\n type: azure:appservice:AppService\n name: example\n properties:\n name: example-app-service\n location: ${example.location}\n resourceGroupName: ${example.name}\n appServicePlanId: ${examplePlan.id}\n example-staging:\n type: azure:appservice:Slot\n properties:\n name: staging\n appServiceName: ${exampleAppService.name}\n location: ${example.location}\n resourceGroupName: ${example.name}\n appServicePlanId: ${examplePlan.id}\n exampleSlotVirtualNetworkSwiftConnection:\n type: azure:appservice:SlotVirtualNetworkSwiftConnection\n name: example\n properties:\n slotName: ${[\"example-staging\"].name}\n appServiceId: ${exampleAppService.id}\n subnetId: ${exampleSubnet.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nApp Service Slot Virtual Network Associations can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:appservice/slotVirtualNetworkSwiftConnection:SlotVirtualNetworkSwiftConnection myassociation /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Web/sites/instance1/slots/staging/config/virtualNetwork\n```\n\n", + "description": "Manages an App Service Slot's Virtual Network Association (this is for the [Regional VNet Integration](https://docs.microsoft.com/azure/app-service/web-sites-integrate-with-vnet#regional-vnet-integration) which is still in preview).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleVirtualNetwork = new azure.network.VirtualNetwork(\"example\", {\n name: \"example-virtual-network\",\n addressSpaces: [\"10.0.0.0/16\"],\n location: example.location,\n resourceGroupName: example.name,\n});\nconst exampleSubnet = new azure.network.Subnet(\"example\", {\n name: \"example-subnet\",\n resourceGroupName: example.name,\n virtualNetworkName: exampleVirtualNetwork.name,\n addressPrefixes: [\"10.0.1.0/24\"],\n delegations: [{\n name: \"example-delegation\",\n serviceDelegation: {\n name: \"Microsoft.Web/serverFarms\",\n actions: [\"Microsoft.Network/virtualNetworks/subnets/action\"],\n },\n }],\n});\nconst examplePlan = new azure.appservice.Plan(\"example\", {\n name: \"example-service-plan\",\n location: example.location,\n resourceGroupName: example.name,\n sku: {\n tier: \"Standard\",\n size: \"S1\",\n },\n});\nconst exampleAppService = new azure.appservice.AppService(\"example\", {\n name: \"example-app-service\",\n location: example.location,\n resourceGroupName: example.name,\n appServicePlanId: examplePlan.id,\n});\nconst example_staging = new azure.appservice.Slot(\"example-staging\", {\n name: \"staging\",\n appServiceName: exampleAppService.name,\n location: example.location,\n resourceGroupName: example.name,\n appServicePlanId: examplePlan.id,\n});\nconst exampleSlotVirtualNetworkSwiftConnection = new azure.appservice.SlotVirtualNetworkSwiftConnection(\"example\", {\n slotName: example_staging.name,\n appServiceId: exampleAppService.id,\n subnetId: exampleSubnet.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_virtual_network = azure.network.VirtualNetwork(\"example\",\n name=\"example-virtual-network\",\n address_spaces=[\"10.0.0.0/16\"],\n location=example.location,\n resource_group_name=example.name)\nexample_subnet = azure.network.Subnet(\"example\",\n name=\"example-subnet\",\n resource_group_name=example.name,\n virtual_network_name=example_virtual_network.name,\n address_prefixes=[\"10.0.1.0/24\"],\n delegations=[{\n \"name\": \"example-delegation\",\n \"service_delegation\": {\n \"name\": \"Microsoft.Web/serverFarms\",\n \"actions\": [\"Microsoft.Network/virtualNetworks/subnets/action\"],\n },\n }])\nexample_plan = azure.appservice.Plan(\"example\",\n name=\"example-service-plan\",\n location=example.location,\n resource_group_name=example.name,\n sku={\n \"tier\": \"Standard\",\n \"size\": \"S1\",\n })\nexample_app_service = azure.appservice.AppService(\"example\",\n name=\"example-app-service\",\n location=example.location,\n resource_group_name=example.name,\n app_service_plan_id=example_plan.id)\nexample_staging = azure.appservice.Slot(\"example-staging\",\n name=\"staging\",\n app_service_name=example_app_service.name,\n location=example.location,\n resource_group_name=example.name,\n app_service_plan_id=example_plan.id)\nexample_slot_virtual_network_swift_connection = azure.appservice.SlotVirtualNetworkSwiftConnection(\"example\",\n slot_name=example_staging.name,\n app_service_id=example_app_service.id,\n subnet_id=example_subnet.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleVirtualNetwork = new Azure.Network.VirtualNetwork(\"example\", new()\n {\n Name = \"example-virtual-network\",\n AddressSpaces = new[]\n {\n \"10.0.0.0/16\",\n },\n Location = example.Location,\n ResourceGroupName = example.Name,\n });\n\n var exampleSubnet = new Azure.Network.Subnet(\"example\", new()\n {\n Name = \"example-subnet\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = exampleVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"10.0.1.0/24\",\n },\n Delegations = new[]\n {\n new Azure.Network.Inputs.SubnetDelegationArgs\n {\n Name = \"example-delegation\",\n ServiceDelegation = new Azure.Network.Inputs.SubnetDelegationServiceDelegationArgs\n {\n Name = \"Microsoft.Web/serverFarms\",\n Actions = new[]\n {\n \"Microsoft.Network/virtualNetworks/subnets/action\",\n },\n },\n },\n },\n });\n\n var examplePlan = new Azure.AppService.Plan(\"example\", new()\n {\n Name = \"example-service-plan\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n Sku = new Azure.AppService.Inputs.PlanSkuArgs\n {\n Tier = \"Standard\",\n Size = \"S1\",\n },\n });\n\n var exampleAppService = new Azure.AppService.AppService(\"example\", new()\n {\n Name = \"example-app-service\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AppServicePlanId = examplePlan.Id,\n });\n\n var example_staging = new Azure.AppService.Slot(\"example-staging\", new()\n {\n Name = \"staging\",\n AppServiceName = exampleAppService.Name,\n Location = example.Location,\n ResourceGroupName = example.Name,\n AppServicePlanId = examplePlan.Id,\n });\n\n var exampleSlotVirtualNetworkSwiftConnection = new Azure.AppService.SlotVirtualNetworkSwiftConnection(\"example\", new()\n {\n SlotName = example_staging.Name,\n AppServiceId = exampleAppService.Id,\n SubnetId = exampleSubnet.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/appservice\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"example\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"example-virtual-network\"),\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleSubnet, err := network.NewSubnet(ctx, \"example\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"example-subnet\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: exampleVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.1.0/24\"),\n\t\t\t},\n\t\t\tDelegations: network.SubnetDelegationArray{\n\t\t\t\t\u0026network.SubnetDelegationArgs{\n\t\t\t\t\tName: pulumi.String(\"example-delegation\"),\n\t\t\t\t\tServiceDelegation: \u0026network.SubnetDelegationServiceDelegationArgs{\n\t\t\t\t\t\tName: pulumi.String(\"Microsoft.Web/serverFarms\"),\n\t\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"Microsoft.Network/virtualNetworks/subnets/action\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texamplePlan, err := appservice.NewPlan(ctx, \"example\", \u0026appservice.PlanArgs{\n\t\t\tName: pulumi.String(\"example-service-plan\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tSku: \u0026appservice.PlanSkuArgs{\n\t\t\t\tTier: pulumi.String(\"Standard\"),\n\t\t\t\tSize: pulumi.String(\"S1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAppService, err := appservice.NewAppService(ctx, \"example\", \u0026appservice.AppServiceArgs{\n\t\t\tName: pulumi.String(\"example-app-service\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAppServicePlanId: examplePlan.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_staging, err := appservice.NewSlot(ctx, \"example-staging\", \u0026appservice.SlotArgs{\n\t\t\tName: pulumi.String(\"staging\"),\n\t\t\tAppServiceName: exampleAppService.Name,\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAppServicePlanId: examplePlan.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = appservice.NewSlotVirtualNetworkSwiftConnection(ctx, \"example\", \u0026appservice.SlotVirtualNetworkSwiftConnectionArgs{\n\t\t\tSlotName: example_staging.Name,\n\t\t\tAppServiceId: exampleAppService.ID(),\n\t\t\tSubnetId: exampleSubnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.Subnet;\nimport com.pulumi.azure.network.SubnetArgs;\nimport com.pulumi.azure.network.inputs.SubnetDelegationArgs;\nimport com.pulumi.azure.network.inputs.SubnetDelegationServiceDelegationArgs;\nimport com.pulumi.azure.appservice.Plan;\nimport com.pulumi.azure.appservice.PlanArgs;\nimport com.pulumi.azure.appservice.inputs.PlanSkuArgs;\nimport com.pulumi.azure.appservice.AppService;\nimport com.pulumi.azure.appservice.AppServiceArgs;\nimport com.pulumi.azure.appservice.Slot;\nimport com.pulumi.azure.appservice.SlotArgs;\nimport com.pulumi.azure.appservice.SlotVirtualNetworkSwiftConnection;\nimport com.pulumi.azure.appservice.SlotVirtualNetworkSwiftConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleVirtualNetwork = new VirtualNetwork(\"exampleVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"example-virtual-network\")\n .addressSpaces(\"10.0.0.0/16\")\n .location(example.location())\n .resourceGroupName(example.name())\n .build());\n\n var exampleSubnet = new Subnet(\"exampleSubnet\", SubnetArgs.builder()\n .name(\"example-subnet\")\n .resourceGroupName(example.name())\n .virtualNetworkName(exampleVirtualNetwork.name())\n .addressPrefixes(\"10.0.1.0/24\")\n .delegations(SubnetDelegationArgs.builder()\n .name(\"example-delegation\")\n .serviceDelegation(SubnetDelegationServiceDelegationArgs.builder()\n .name(\"Microsoft.Web/serverFarms\")\n .actions(\"Microsoft.Network/virtualNetworks/subnets/action\")\n .build())\n .build())\n .build());\n\n var examplePlan = new Plan(\"examplePlan\", PlanArgs.builder()\n .name(\"example-service-plan\")\n .location(example.location())\n .resourceGroupName(example.name())\n .sku(PlanSkuArgs.builder()\n .tier(\"Standard\")\n .size(\"S1\")\n .build())\n .build());\n\n var exampleAppService = new AppService(\"exampleAppService\", AppServiceArgs.builder()\n .name(\"example-app-service\")\n .location(example.location())\n .resourceGroupName(example.name())\n .appServicePlanId(examplePlan.id())\n .build());\n\n var example_staging = new Slot(\"example-staging\", SlotArgs.builder()\n .name(\"staging\")\n .appServiceName(exampleAppService.name())\n .location(example.location())\n .resourceGroupName(example.name())\n .appServicePlanId(examplePlan.id())\n .build());\n\n var exampleSlotVirtualNetworkSwiftConnection = new SlotVirtualNetworkSwiftConnection(\"exampleSlotVirtualNetworkSwiftConnection\", SlotVirtualNetworkSwiftConnectionArgs.builder()\n .slotName(example_staging.name())\n .appServiceId(exampleAppService.id())\n .subnetId(exampleSubnet.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleVirtualNetwork:\n type: azure:network:VirtualNetwork\n name: example\n properties:\n name: example-virtual-network\n addressSpaces:\n - 10.0.0.0/16\n location: ${example.location}\n resourceGroupName: ${example.name}\n exampleSubnet:\n type: azure:network:Subnet\n name: example\n properties:\n name: example-subnet\n resourceGroupName: ${example.name}\n virtualNetworkName: ${exampleVirtualNetwork.name}\n addressPrefixes:\n - 10.0.1.0/24\n delegations:\n - name: example-delegation\n serviceDelegation:\n name: Microsoft.Web/serverFarms\n actions:\n - Microsoft.Network/virtualNetworks/subnets/action\n examplePlan:\n type: azure:appservice:Plan\n name: example\n properties:\n name: example-service-plan\n location: ${example.location}\n resourceGroupName: ${example.name}\n sku:\n tier: Standard\n size: S1\n exampleAppService:\n type: azure:appservice:AppService\n name: example\n properties:\n name: example-app-service\n location: ${example.location}\n resourceGroupName: ${example.name}\n appServicePlanId: ${examplePlan.id}\n example-staging:\n type: azure:appservice:Slot\n properties:\n name: staging\n appServiceName: ${exampleAppService.name}\n location: ${example.location}\n resourceGroupName: ${example.name}\n appServicePlanId: ${examplePlan.id}\n exampleSlotVirtualNetworkSwiftConnection:\n type: azure:appservice:SlotVirtualNetworkSwiftConnection\n name: example\n properties:\n slotName: ${[\"example-staging\"].name}\n appServiceId: ${exampleAppService.id}\n subnetId: ${exampleSubnet.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nApp Service Slot Virtual Network Associations can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:appservice/slotVirtualNetworkSwiftConnection:SlotVirtualNetworkSwiftConnection myassociation /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Web/sites/instance1/slots/staging/config/virtualNetwork\n```\n\n", "properties": { "appServiceId": { "type": "string", @@ -133179,7 +133179,7 @@ } }, "azure:backup/protectedFileShare:ProtectedFileShare": { - "description": "Manages an Azure Backup Protected File Share to enable backups for file shares within an Azure Storage Account\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"tfex-recovery_vault\",\n location: \"West Europe\",\n});\nconst vault = new azure.recoveryservices.Vault(\"vault\", {\n name: \"tfex-recovery-vault\",\n location: example.location,\n resourceGroupName: example.name,\n sku: \"Standard\",\n});\nconst sa = new azure.storage.Account(\"sa\", {\n name: \"examplesa\",\n location: example.location,\n resourceGroupName: example.name,\n accountTier: \"Standard\",\n accountReplicationType: \"LRS\",\n});\nconst exampleShare = new azure.storage.Share(\"example\", {\n name: \"example-share\",\n storageAccountName: sa.name,\n quota: 1,\n});\nconst protection_container = new azure.backup.ContainerStorageAccount(\"protection-container\", {\n resourceGroupName: example.name,\n recoveryVaultName: vault.name,\n storageAccountId: sa.id,\n});\nconst examplePolicyFileShare = new azure.backup.PolicyFileShare(\"example\", {\n name: \"tfex-recovery-vault-policy\",\n resourceGroupName: example.name,\n recoveryVaultName: vault.name,\n backup: {\n frequency: \"Daily\",\n time: \"23:00\",\n },\n retentionDaily: {\n count: 10,\n },\n});\nconst share1 = new azure.backup.ProtectedFileShare(\"share1\", {\n resourceGroupName: example.name,\n recoveryVaultName: vault.name,\n sourceStorageAccountId: protection_container.storageAccountId,\n sourceFileShareName: exampleShare.name,\n backupPolicyId: examplePolicyFileShare.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nexample = azure.core.ResourceGroup(\"example\",\n name=\"tfex-recovery_vault\",\n location=\"West Europe\")\nvault = azure.recoveryservices.Vault(\"vault\",\n name=\"tfex-recovery-vault\",\n location=example.location,\n resource_group_name=example.name,\n sku=\"Standard\")\nsa = azure.storage.Account(\"sa\",\n name=\"examplesa\",\n location=example.location,\n resource_group_name=example.name,\n account_tier=\"Standard\",\n account_replication_type=\"LRS\")\nexample_share = azure.storage.Share(\"example\",\n name=\"example-share\",\n storage_account_name=sa.name,\n quota=1)\nprotection_container = azure.backup.ContainerStorageAccount(\"protection-container\",\n resource_group_name=example.name,\n recovery_vault_name=vault.name,\n storage_account_id=sa.id)\nexample_policy_file_share = azure.backup.PolicyFileShare(\"example\",\n name=\"tfex-recovery-vault-policy\",\n resource_group_name=example.name,\n recovery_vault_name=vault.name,\n backup={\n \"frequency\": \"Daily\",\n \"time\": \"23:00\",\n },\n retention_daily={\n \"count\": 10,\n })\nshare1 = azure.backup.ProtectedFileShare(\"share1\",\n resource_group_name=example.name,\n recovery_vault_name=vault.name,\n source_storage_account_id=protection_container.storage_account_id,\n source_file_share_name=example_share.name,\n backup_policy_id=example_policy_file_share.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"tfex-recovery_vault\",\n Location = \"West Europe\",\n });\n\n var vault = new Azure.RecoveryServices.Vault(\"vault\", new()\n {\n Name = \"tfex-recovery-vault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n Sku = \"Standard\",\n });\n\n var sa = new Azure.Storage.Account(\"sa\", new()\n {\n Name = \"examplesa\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"LRS\",\n });\n\n var exampleShare = new Azure.Storage.Share(\"example\", new()\n {\n Name = \"example-share\",\n StorageAccountName = sa.Name,\n Quota = 1,\n });\n\n var protection_container = new Azure.Backup.ContainerStorageAccount(\"protection-container\", new()\n {\n ResourceGroupName = example.Name,\n RecoveryVaultName = vault.Name,\n StorageAccountId = sa.Id,\n });\n\n var examplePolicyFileShare = new Azure.Backup.PolicyFileShare(\"example\", new()\n {\n Name = \"tfex-recovery-vault-policy\",\n ResourceGroupName = example.Name,\n RecoveryVaultName = vault.Name,\n Backup = new Azure.Backup.Inputs.PolicyFileShareBackupArgs\n {\n Frequency = \"Daily\",\n Time = \"23:00\",\n },\n RetentionDaily = new Azure.Backup.Inputs.PolicyFileShareRetentionDailyArgs\n {\n Count = 10,\n },\n });\n\n var share1 = new Azure.Backup.ProtectedFileShare(\"share1\", new()\n {\n ResourceGroupName = example.Name,\n RecoveryVaultName = vault.Name,\n SourceStorageAccountId = protection_container.StorageAccountId,\n SourceFileShareName = exampleShare.Name,\n BackupPolicyId = examplePolicyFileShare.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/backup\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/recoveryservices\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-recovery_vault\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvault, err := recoveryservices.NewVault(ctx, \"vault\", \u0026recoveryservices.VaultArgs{\n\t\t\tName: pulumi.String(\"tfex-recovery-vault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tSku: pulumi.String(\"Standard\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := storage.NewAccount(ctx, \"sa\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"examplesa\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"LRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleShare, err := storage.NewShare(ctx, \"example\", \u0026storage.ShareArgs{\n\t\t\tName: pulumi.String(\"example-share\"),\n\t\t\tStorageAccountName: sa.Name,\n\t\t\tQuota: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = backup.NewContainerStorageAccount(ctx, \"protection-container\", \u0026backup.ContainerStorageAccountArgs{\n\t\t\tResourceGroupName: example.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tStorageAccountId: sa.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texamplePolicyFileShare, err := backup.NewPolicyFileShare(ctx, \"example\", \u0026backup.PolicyFileShareArgs{\n\t\t\tName: pulumi.String(\"tfex-recovery-vault-policy\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tBackup: \u0026backup.PolicyFileShareBackupArgs{\n\t\t\t\tFrequency: pulumi.String(\"Daily\"),\n\t\t\t\tTime: pulumi.String(\"23:00\"),\n\t\t\t},\n\t\t\tRetentionDaily: \u0026backup.PolicyFileShareRetentionDailyArgs{\n\t\t\t\tCount: pulumi.Int(10),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = backup.NewProtectedFileShare(ctx, \"share1\", \u0026backup.ProtectedFileShareArgs{\n\t\t\tResourceGroupName: example.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceStorageAccountId: protection_container.StorageAccountId,\n\t\t\tSourceFileShareName: exampleShare.Name,\n\t\t\tBackupPolicyId: examplePolicyFileShare.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.recoveryservices.Vault;\nimport com.pulumi.azure.recoveryservices.VaultArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.storage.Share;\nimport com.pulumi.azure.storage.ShareArgs;\nimport com.pulumi.azure.backup.ContainerStorageAccount;\nimport com.pulumi.azure.backup.ContainerStorageAccountArgs;\nimport com.pulumi.azure.backup.PolicyFileShare;\nimport com.pulumi.azure.backup.PolicyFileShareArgs;\nimport com.pulumi.azure.backup.inputs.PolicyFileShareBackupArgs;\nimport com.pulumi.azure.backup.inputs.PolicyFileShareRetentionDailyArgs;\nimport com.pulumi.azure.backup.ProtectedFileShare;\nimport com.pulumi.azure.backup.ProtectedFileShareArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"tfex-recovery_vault\")\n .location(\"West Europe\")\n .build());\n\n var vault = new Vault(\"vault\", VaultArgs.builder()\n .name(\"tfex-recovery-vault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .sku(\"Standard\")\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .name(\"examplesa\")\n .location(example.location())\n .resourceGroupName(example.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"LRS\")\n .build());\n\n var exampleShare = new Share(\"exampleShare\", ShareArgs.builder()\n .name(\"example-share\")\n .storageAccountName(sa.name())\n .quota(1)\n .build());\n\n var protection_container = new ContainerStorageAccount(\"protection-container\", ContainerStorageAccountArgs.builder()\n .resourceGroupName(example.name())\n .recoveryVaultName(vault.name())\n .storageAccountId(sa.id())\n .build());\n\n var examplePolicyFileShare = new PolicyFileShare(\"examplePolicyFileShare\", PolicyFileShareArgs.builder()\n .name(\"tfex-recovery-vault-policy\")\n .resourceGroupName(example.name())\n .recoveryVaultName(vault.name())\n .backup(PolicyFileShareBackupArgs.builder()\n .frequency(\"Daily\")\n .time(\"23:00\")\n .build())\n .retentionDaily(PolicyFileShareRetentionDailyArgs.builder()\n .count(10)\n .build())\n .build());\n\n var share1 = new ProtectedFileShare(\"share1\", ProtectedFileShareArgs.builder()\n .resourceGroupName(example.name())\n .recoveryVaultName(vault.name())\n .sourceStorageAccountId(protection_container.storageAccountId())\n .sourceFileShareName(exampleShare.name())\n .backupPolicyId(examplePolicyFileShare.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: tfex-recovery_vault\n location: West Europe\n vault:\n type: azure:recoveryservices:Vault\n properties:\n name: tfex-recovery-vault\n location: ${example.location}\n resourceGroupName: ${example.name}\n sku: Standard\n sa:\n type: azure:storage:Account\n properties:\n name: examplesa\n location: ${example.location}\n resourceGroupName: ${example.name}\n accountTier: Standard\n accountReplicationType: LRS\n exampleShare:\n type: azure:storage:Share\n name: example\n properties:\n name: example-share\n storageAccountName: ${sa.name}\n quota: 1\n protection-container:\n type: azure:backup:ContainerStorageAccount\n properties:\n resourceGroupName: ${example.name}\n recoveryVaultName: ${vault.name}\n storageAccountId: ${sa.id}\n examplePolicyFileShare:\n type: azure:backup:PolicyFileShare\n name: example\n properties:\n name: tfex-recovery-vault-policy\n resourceGroupName: ${example.name}\n recoveryVaultName: ${vault.name}\n backup:\n frequency: Daily\n time: 23:00\n retentionDaily:\n count: 10\n share1:\n type: azure:backup:ProtectedFileShare\n properties:\n resourceGroupName: ${example.name}\n recoveryVaultName: ${vault.name}\n sourceStorageAccountId: ${[\"protection-container\"].storageAccountId}\n sourceFileShareName: ${exampleShare.name}\n backupPolicyId: ${examplePolicyFileShare.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAzure Backup Protected File Shares can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:backup/protectedFileShare:ProtectedFileShare item1 \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.RecoveryServices/vaults/example-recovery-vault/backupFabrics/Azure/protectionContainers/StorageContainer;storage;group2;example-storage-account/protectedItems/AzureFileShare;3f6e3108a45793581bcbd1c61c87a3b2ceeb4ff4bc02a95ce9d1022b23722935\"\n```\n\n-\u003e **NOTE** The ID requires quoting as there are semicolons. This user unfriendly ID can be found in the Deployments of the used resourcegroup, look for an Deployment which starts with `ConfigureAFSProtection-`, click then `Go to resource`.\n\n", + "description": "Manages an Azure Backup Protected File Share to enable backups for file shares within an Azure Storage Account\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"tfex-recovery_vault\",\n location: \"West Europe\",\n});\nconst vault = new azure.recoveryservices.Vault(\"vault\", {\n name: \"tfex-recovery-vault\",\n location: example.location,\n resourceGroupName: example.name,\n sku: \"Standard\",\n});\nconst sa = new azure.storage.Account(\"sa\", {\n name: \"examplesa\",\n location: example.location,\n resourceGroupName: example.name,\n accountTier: \"Standard\",\n accountReplicationType: \"LRS\",\n});\nconst exampleShare = new azure.storage.Share(\"example\", {\n name: \"example-share\",\n storageAccountName: sa.name,\n quota: 1,\n});\nconst protection_container = new azure.backup.ContainerStorageAccount(\"protection-container\", {\n resourceGroupName: example.name,\n recoveryVaultName: vault.name,\n storageAccountId: sa.id,\n});\nconst examplePolicyFileShare = new azure.backup.PolicyFileShare(\"example\", {\n name: \"tfex-recovery-vault-policy\",\n resourceGroupName: example.name,\n recoveryVaultName: vault.name,\n backup: {\n frequency: \"Daily\",\n time: \"23:00\",\n },\n retentionDaily: {\n count: 10,\n },\n});\nconst share1 = new azure.backup.ProtectedFileShare(\"share1\", {\n resourceGroupName: example.name,\n recoveryVaultName: vault.name,\n sourceStorageAccountId: protection_container.storageAccountId,\n sourceFileShareName: exampleShare.name,\n backupPolicyId: examplePolicyFileShare.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nexample = azure.core.ResourceGroup(\"example\",\n name=\"tfex-recovery_vault\",\n location=\"West Europe\")\nvault = azure.recoveryservices.Vault(\"vault\",\n name=\"tfex-recovery-vault\",\n location=example.location,\n resource_group_name=example.name,\n sku=\"Standard\")\nsa = azure.storage.Account(\"sa\",\n name=\"examplesa\",\n location=example.location,\n resource_group_name=example.name,\n account_tier=\"Standard\",\n account_replication_type=\"LRS\")\nexample_share = azure.storage.Share(\"example\",\n name=\"example-share\",\n storage_account_name=sa.name,\n quota=1)\nprotection_container = azure.backup.ContainerStorageAccount(\"protection-container\",\n resource_group_name=example.name,\n recovery_vault_name=vault.name,\n storage_account_id=sa.id)\nexample_policy_file_share = azure.backup.PolicyFileShare(\"example\",\n name=\"tfex-recovery-vault-policy\",\n resource_group_name=example.name,\n recovery_vault_name=vault.name,\n backup={\n \"frequency\": \"Daily\",\n \"time\": \"23:00\",\n },\n retention_daily={\n \"count\": 10,\n })\nshare1 = azure.backup.ProtectedFileShare(\"share1\",\n resource_group_name=example.name,\n recovery_vault_name=vault.name,\n source_storage_account_id=protection_container.storage_account_id,\n source_file_share_name=example_share.name,\n backup_policy_id=example_policy_file_share.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"tfex-recovery_vault\",\n Location = \"West Europe\",\n });\n\n var vault = new Azure.RecoveryServices.Vault(\"vault\", new()\n {\n Name = \"tfex-recovery-vault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n Sku = \"Standard\",\n });\n\n var sa = new Azure.Storage.Account(\"sa\", new()\n {\n Name = \"examplesa\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"LRS\",\n });\n\n var exampleShare = new Azure.Storage.Share(\"example\", new()\n {\n Name = \"example-share\",\n StorageAccountName = sa.Name,\n Quota = 1,\n });\n\n var protection_container = new Azure.Backup.ContainerStorageAccount(\"protection-container\", new()\n {\n ResourceGroupName = example.Name,\n RecoveryVaultName = vault.Name,\n StorageAccountId = sa.Id,\n });\n\n var examplePolicyFileShare = new Azure.Backup.PolicyFileShare(\"example\", new()\n {\n Name = \"tfex-recovery-vault-policy\",\n ResourceGroupName = example.Name,\n RecoveryVaultName = vault.Name,\n Backup = new Azure.Backup.Inputs.PolicyFileShareBackupArgs\n {\n Frequency = \"Daily\",\n Time = \"23:00\",\n },\n RetentionDaily = new Azure.Backup.Inputs.PolicyFileShareRetentionDailyArgs\n {\n Count = 10,\n },\n });\n\n var share1 = new Azure.Backup.ProtectedFileShare(\"share1\", new()\n {\n ResourceGroupName = example.Name,\n RecoveryVaultName = vault.Name,\n SourceStorageAccountId = protection_container.StorageAccountId,\n SourceFileShareName = exampleShare.Name,\n BackupPolicyId = examplePolicyFileShare.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/backup\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/recoveryservices\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-recovery_vault\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvault, err := recoveryservices.NewVault(ctx, \"vault\", \u0026recoveryservices.VaultArgs{\n\t\t\tName: pulumi.String(\"tfex-recovery-vault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tSku: pulumi.String(\"Standard\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := storage.NewAccount(ctx, \"sa\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"examplesa\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"LRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleShare, err := storage.NewShare(ctx, \"example\", \u0026storage.ShareArgs{\n\t\t\tName: pulumi.String(\"example-share\"),\n\t\t\tStorageAccountName: sa.Name,\n\t\t\tQuota: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprotection_container, err := backup.NewContainerStorageAccount(ctx, \"protection-container\", \u0026backup.ContainerStorageAccountArgs{\n\t\t\tResourceGroupName: example.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tStorageAccountId: sa.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texamplePolicyFileShare, err := backup.NewPolicyFileShare(ctx, \"example\", \u0026backup.PolicyFileShareArgs{\n\t\t\tName: pulumi.String(\"tfex-recovery-vault-policy\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tBackup: \u0026backup.PolicyFileShareBackupArgs{\n\t\t\t\tFrequency: pulumi.String(\"Daily\"),\n\t\t\t\tTime: pulumi.String(\"23:00\"),\n\t\t\t},\n\t\t\tRetentionDaily: \u0026backup.PolicyFileShareRetentionDailyArgs{\n\t\t\t\tCount: pulumi.Int(10),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = backup.NewProtectedFileShare(ctx, \"share1\", \u0026backup.ProtectedFileShareArgs{\n\t\t\tResourceGroupName: example.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceStorageAccountId: protection_container.StorageAccountId,\n\t\t\tSourceFileShareName: exampleShare.Name,\n\t\t\tBackupPolicyId: examplePolicyFileShare.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.recoveryservices.Vault;\nimport com.pulumi.azure.recoveryservices.VaultArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.storage.Share;\nimport com.pulumi.azure.storage.ShareArgs;\nimport com.pulumi.azure.backup.ContainerStorageAccount;\nimport com.pulumi.azure.backup.ContainerStorageAccountArgs;\nimport com.pulumi.azure.backup.PolicyFileShare;\nimport com.pulumi.azure.backup.PolicyFileShareArgs;\nimport com.pulumi.azure.backup.inputs.PolicyFileShareBackupArgs;\nimport com.pulumi.azure.backup.inputs.PolicyFileShareRetentionDailyArgs;\nimport com.pulumi.azure.backup.ProtectedFileShare;\nimport com.pulumi.azure.backup.ProtectedFileShareArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"tfex-recovery_vault\")\n .location(\"West Europe\")\n .build());\n\n var vault = new Vault(\"vault\", VaultArgs.builder()\n .name(\"tfex-recovery-vault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .sku(\"Standard\")\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .name(\"examplesa\")\n .location(example.location())\n .resourceGroupName(example.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"LRS\")\n .build());\n\n var exampleShare = new Share(\"exampleShare\", ShareArgs.builder()\n .name(\"example-share\")\n .storageAccountName(sa.name())\n .quota(1)\n .build());\n\n var protection_container = new ContainerStorageAccount(\"protection-container\", ContainerStorageAccountArgs.builder()\n .resourceGroupName(example.name())\n .recoveryVaultName(vault.name())\n .storageAccountId(sa.id())\n .build());\n\n var examplePolicyFileShare = new PolicyFileShare(\"examplePolicyFileShare\", PolicyFileShareArgs.builder()\n .name(\"tfex-recovery-vault-policy\")\n .resourceGroupName(example.name())\n .recoveryVaultName(vault.name())\n .backup(PolicyFileShareBackupArgs.builder()\n .frequency(\"Daily\")\n .time(\"23:00\")\n .build())\n .retentionDaily(PolicyFileShareRetentionDailyArgs.builder()\n .count(10)\n .build())\n .build());\n\n var share1 = new ProtectedFileShare(\"share1\", ProtectedFileShareArgs.builder()\n .resourceGroupName(example.name())\n .recoveryVaultName(vault.name())\n .sourceStorageAccountId(protection_container.storageAccountId())\n .sourceFileShareName(exampleShare.name())\n .backupPolicyId(examplePolicyFileShare.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: tfex-recovery_vault\n location: West Europe\n vault:\n type: azure:recoveryservices:Vault\n properties:\n name: tfex-recovery-vault\n location: ${example.location}\n resourceGroupName: ${example.name}\n sku: Standard\n sa:\n type: azure:storage:Account\n properties:\n name: examplesa\n location: ${example.location}\n resourceGroupName: ${example.name}\n accountTier: Standard\n accountReplicationType: LRS\n exampleShare:\n type: azure:storage:Share\n name: example\n properties:\n name: example-share\n storageAccountName: ${sa.name}\n quota: 1\n protection-container:\n type: azure:backup:ContainerStorageAccount\n properties:\n resourceGroupName: ${example.name}\n recoveryVaultName: ${vault.name}\n storageAccountId: ${sa.id}\n examplePolicyFileShare:\n type: azure:backup:PolicyFileShare\n name: example\n properties:\n name: tfex-recovery-vault-policy\n resourceGroupName: ${example.name}\n recoveryVaultName: ${vault.name}\n backup:\n frequency: Daily\n time: 23:00\n retentionDaily:\n count: 10\n share1:\n type: azure:backup:ProtectedFileShare\n properties:\n resourceGroupName: ${example.name}\n recoveryVaultName: ${vault.name}\n sourceStorageAccountId: ${[\"protection-container\"].storageAccountId}\n sourceFileShareName: ${exampleShare.name}\n backupPolicyId: ${examplePolicyFileShare.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAzure Backup Protected File Shares can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:backup/protectedFileShare:ProtectedFileShare item1 \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.RecoveryServices/vaults/example-recovery-vault/backupFabrics/Azure/protectionContainers/StorageContainer;storage;group2;example-storage-account/protectedItems/AzureFileShare;3f6e3108a45793581bcbd1c61c87a3b2ceeb4ff4bc02a95ce9d1022b23722935\"\n```\n\n-\u003e **NOTE** The ID requires quoting as there are semicolons. This user unfriendly ID can be found in the Deployments of the used resourcegroup, look for an Deployment which starts with `ConfigureAFSProtection-`, click then `Go to resource`.\n\n", "properties": { "backupPolicyId": { "type": "string", @@ -141561,7 +141561,7 @@ } }, "azure:compute/diskEncryptionSet:DiskEncryptionSet": { - "description": "Manages a Disk Encryption Set.\n\n\u003e **NOTE:** At this time the Key Vault used to store the Active Key for this Disk Encryption Set must have both Soft Delete \u0026 Purge Protection enabled - which are not yet supported by this provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"des-example-keyvault\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n enabledForDiskEncryption: true,\n purgeProtectionEnabled: true,\n});\nconst example_user = new azure.keyvault.AccessPolicy(\"example-user\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: current.then(current =\u003e current.objectId),\n keyPermissions: [\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n ],\n});\nconst exampleKey = new azure.keyvault.Key(\"example\", {\n name: \"des-example-key\",\n keyVaultId: exampleKeyVault.id,\n keyType: \"RSA\",\n keySize: 2048,\n keyOpts: [\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n}, {\n dependsOn: [example_user],\n});\nconst exampleDiskEncryptionSet = new azure.compute.DiskEncryptionSet(\"example\", {\n name: \"des\",\n resourceGroupName: example.name,\n location: example.location,\n keyVaultKeyId: exampleKey.id,\n identity: {\n type: \"SystemAssigned\",\n },\n});\nconst example_disk = new azure.keyvault.AccessPolicy(\"example-disk\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.tenantId),\n objectId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.principalId),\n keyPermissions: [\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n ],\n});\nconst example_diskAssignment = new azure.authorization.Assignment(\"example-disk\", {\n scope: exampleKeyVault.id,\n roleDefinitionName: \"Key Vault Crypto Service Encryption User\",\n principalId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.principalId),\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"des-example-keyvault\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\",\n enabled_for_disk_encryption=True,\n purge_protection_enabled=True)\nexample_user = azure.keyvault.AccessPolicy(\"example-user\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=current.object_id,\n key_permissions=[\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n ])\nexample_key = azure.keyvault.Key(\"example\",\n name=\"des-example-key\",\n key_vault_id=example_key_vault.id,\n key_type=\"RSA\",\n key_size=2048,\n key_opts=[\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[example_user]))\nexample_disk_encryption_set = azure.compute.DiskEncryptionSet(\"example\",\n name=\"des\",\n resource_group_name=example.name,\n location=example.location,\n key_vault_key_id=example_key.id,\n identity={\n \"type\": \"SystemAssigned\",\n })\nexample_disk = azure.keyvault.AccessPolicy(\"example-disk\",\n key_vault_id=example_key_vault.id,\n tenant_id=example_disk_encryption_set.identity.tenant_id,\n object_id=example_disk_encryption_set.identity.principal_id,\n key_permissions=[\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n ])\nexample_disk_assignment = azure.authorization.Assignment(\"example-disk\",\n scope=example_key_vault.id,\n role_definition_name=\"Key Vault Crypto Service Encryption User\",\n principal_id=example_disk_encryption_set.identity.principal_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"des-example-keyvault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n EnabledForDiskEncryption = true,\n PurgeProtectionEnabled = true,\n });\n\n var example_user = new Azure.KeyVault.AccessPolicy(\"example-user\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n },\n });\n\n var exampleKey = new Azure.KeyVault.Key(\"example\", new()\n {\n Name = \"des-example-key\",\n KeyVaultId = exampleKeyVault.Id,\n KeyType = \"RSA\",\n KeySize = 2048,\n KeyOpts = new[]\n {\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example_user,\n },\n });\n\n var exampleDiskEncryptionSet = new Azure.Compute.DiskEncryptionSet(\"example\", new()\n {\n Name = \"des\",\n ResourceGroupName = example.Name,\n Location = example.Location,\n KeyVaultKeyId = exampleKey.Id,\n Identity = new Azure.Compute.Inputs.DiskEncryptionSetIdentityArgs\n {\n Type = \"SystemAssigned\",\n },\n });\n\n var example_disk = new Azure.KeyVault.AccessPolicy(\"example-disk\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.TenantId),\n ObjectId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.PrincipalId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n },\n });\n\n var example_diskAssignment = new Azure.Authorization.Assignment(\"example-disk\", new()\n {\n Scope = exampleKeyVault.Id,\n RoleDefinitionName = \"Key Vault Crypto Service Encryption User\",\n PrincipalId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.PrincipalId),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/compute\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"des-example-keyvault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t\tEnabledForDiskEncryption: pulumi.Bool(true),\n\t\t\tPurgeProtectionEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-user\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(current.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Decrypt\"),\n\t\t\t\tpulumi.String(\"Sign\"),\n\t\t\t\tpulumi.String(\"GetRotationPolicy\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKey, err := keyvault.NewKey(ctx, \"example\", \u0026keyvault.KeyArgs{\n\t\t\tName: pulumi.String(\"des-example-key\"),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tKeyType: pulumi.String(\"RSA\"),\n\t\t\tKeySize: pulumi.Int(2048),\n\t\t\tKeyOpts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"decrypt\"),\n\t\t\t\tpulumi.String(\"encrypt\"),\n\t\t\t\tpulumi.String(\"sign\"),\n\t\t\t\tpulumi.String(\"unwrapKey\"),\n\t\t\t\tpulumi.String(\"verify\"),\n\t\t\t\tpulumi.String(\"wrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample_user,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDiskEncryptionSet, err := compute.NewDiskEncryptionSet(ctx, \"example\", \u0026compute.DiskEncryptionSetArgs{\n\t\t\tName: pulumi.String(\"des\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tLocation: example.Location,\n\t\t\tKeyVaultKeyId: exampleKey.ID(),\n\t\t\tIdentity: \u0026compute.DiskEncryptionSetIdentityArgs{\n\t\t\t\tType: pulumi.String(\"SystemAssigned\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-disk\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.TenantId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tObjectId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.PrincipalId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Decrypt\"),\n\t\t\t\tpulumi.String(\"Sign\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = authorization.NewAssignment(ctx, \"example-disk\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleKeyVault.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Key Vault Crypto Service Encryption User\"),\n\t\t\tPrincipalId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.PrincipalId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.keyvault.AccessPolicy;\nimport com.pulumi.azure.keyvault.AccessPolicyArgs;\nimport com.pulumi.azure.keyvault.Key;\nimport com.pulumi.azure.keyvault.KeyArgs;\nimport com.pulumi.azure.compute.DiskEncryptionSet;\nimport com.pulumi.azure.compute.DiskEncryptionSetArgs;\nimport com.pulumi.azure.compute.inputs.DiskEncryptionSetIdentityArgs;\nimport com.pulumi.azure.authorization.Assignment;\nimport com.pulumi.azure.authorization.AssignmentArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"des-example-keyvault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .enabledForDiskEncryption(true)\n .purgeProtectionEnabled(true)\n .build());\n\n var example_user = new AccessPolicy(\"example-user\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .keyPermissions( \n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\")\n .build());\n\n var exampleKey = new Key(\"exampleKey\", KeyArgs.builder()\n .name(\"des-example-key\")\n .keyVaultId(exampleKeyVault.id())\n .keyType(\"RSA\")\n .keySize(2048)\n .keyOpts( \n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(example_user)\n .build());\n\n var exampleDiskEncryptionSet = new DiskEncryptionSet(\"exampleDiskEncryptionSet\", DiskEncryptionSetArgs.builder()\n .name(\"des\")\n .resourceGroupName(example.name())\n .location(example.location())\n .keyVaultKeyId(exampleKey.id())\n .identity(DiskEncryptionSetIdentityArgs.builder()\n .type(\"SystemAssigned\")\n .build())\n .build());\n\n var example_disk = new AccessPolicy(\"example-disk\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.tenantId()))\n .objectId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.principalId()))\n .keyPermissions( \n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\")\n .build());\n\n var example_diskAssignment = new Assignment(\"example-diskAssignment\", AssignmentArgs.builder()\n .scope(exampleKeyVault.id())\n .roleDefinitionName(\"Key Vault Crypto Service Encryption User\")\n .principalId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.principalId()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: des-example-keyvault\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n enabledForDiskEncryption: true\n purgeProtectionEnabled: true\n exampleKey:\n type: azure:keyvault:Key\n name: example\n properties:\n name: des-example-key\n keyVaultId: ${exampleKeyVault.id}\n keyType: RSA\n keySize: 2048\n keyOpts:\n - decrypt\n - encrypt\n - sign\n - unwrapKey\n - verify\n - wrapKey\n options:\n dependsOn:\n - ${[\"example-user\"]}\n exampleDiskEncryptionSet:\n type: azure:compute:DiskEncryptionSet\n name: example\n properties:\n name: des\n resourceGroupName: ${example.name}\n location: ${example.location}\n keyVaultKeyId: ${exampleKey.id}\n identity:\n type: SystemAssigned\n example-disk:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${exampleDiskEncryptionSet.identity.tenantId}\n objectId: ${exampleDiskEncryptionSet.identity.principalId}\n keyPermissions:\n - Create\n - Delete\n - Get\n - Purge\n - Recover\n - Update\n - List\n - Decrypt\n - Sign\n example-user:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${current.objectId}\n keyPermissions:\n - Create\n - Delete\n - Get\n - Purge\n - Recover\n - Update\n - List\n - Decrypt\n - Sign\n - GetRotationPolicy\n example-diskAssignment:\n type: azure:authorization:Assignment\n name: example-disk\n properties:\n scope: ${exampleKeyVault.id}\n roleDefinitionName: Key Vault Crypto Service Encryption User\n principalId: ${exampleDiskEncryptionSet.identity.principalId}\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Automatic Key Rotation Enabled\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"des-example-keyvault\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n enabledForDiskEncryption: true,\n purgeProtectionEnabled: true,\n});\nconst example_user = new azure.keyvault.AccessPolicy(\"example-user\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: current.then(current =\u003e current.objectId),\n keyPermissions: [\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n ],\n});\nconst exampleKey = new azure.keyvault.Key(\"example\", {\n name: \"des-example-key\",\n keyVaultId: exampleKeyVault.id,\n keyType: \"RSA\",\n keySize: 2048,\n keyOpts: [\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n}, {\n dependsOn: [example_user],\n});\nconst exampleDiskEncryptionSet = new azure.compute.DiskEncryptionSet(\"example\", {\n name: \"des\",\n resourceGroupName: example.name,\n location: example.location,\n keyVaultKeyId: exampleKey.versionlessId,\n autoKeyRotationEnabled: true,\n identity: {\n type: \"SystemAssigned\",\n },\n});\nconst example_disk = new azure.keyvault.AccessPolicy(\"example-disk\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.tenantId),\n objectId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.principalId),\n keyPermissions: [\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n ],\n});\nconst example_diskAssignment = new azure.authorization.Assignment(\"example-disk\", {\n scope: exampleKeyVault.id,\n roleDefinitionName: \"Key Vault Crypto Service Encryption User\",\n principalId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.principalId),\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"des-example-keyvault\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\",\n enabled_for_disk_encryption=True,\n purge_protection_enabled=True)\nexample_user = azure.keyvault.AccessPolicy(\"example-user\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=current.object_id,\n key_permissions=[\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n ])\nexample_key = azure.keyvault.Key(\"example\",\n name=\"des-example-key\",\n key_vault_id=example_key_vault.id,\n key_type=\"RSA\",\n key_size=2048,\n key_opts=[\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[example_user]))\nexample_disk_encryption_set = azure.compute.DiskEncryptionSet(\"example\",\n name=\"des\",\n resource_group_name=example.name,\n location=example.location,\n key_vault_key_id=example_key.versionless_id,\n auto_key_rotation_enabled=True,\n identity={\n \"type\": \"SystemAssigned\",\n })\nexample_disk = azure.keyvault.AccessPolicy(\"example-disk\",\n key_vault_id=example_key_vault.id,\n tenant_id=example_disk_encryption_set.identity.tenant_id,\n object_id=example_disk_encryption_set.identity.principal_id,\n key_permissions=[\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n ])\nexample_disk_assignment = azure.authorization.Assignment(\"example-disk\",\n scope=example_key_vault.id,\n role_definition_name=\"Key Vault Crypto Service Encryption User\",\n principal_id=example_disk_encryption_set.identity.principal_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"des-example-keyvault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n EnabledForDiskEncryption = true,\n PurgeProtectionEnabled = true,\n });\n\n var example_user = new Azure.KeyVault.AccessPolicy(\"example-user\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n },\n });\n\n var exampleKey = new Azure.KeyVault.Key(\"example\", new()\n {\n Name = \"des-example-key\",\n KeyVaultId = exampleKeyVault.Id,\n KeyType = \"RSA\",\n KeySize = 2048,\n KeyOpts = new[]\n {\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example_user,\n },\n });\n\n var exampleDiskEncryptionSet = new Azure.Compute.DiskEncryptionSet(\"example\", new()\n {\n Name = \"des\",\n ResourceGroupName = example.Name,\n Location = example.Location,\n KeyVaultKeyId = exampleKey.VersionlessId,\n AutoKeyRotationEnabled = true,\n Identity = new Azure.Compute.Inputs.DiskEncryptionSetIdentityArgs\n {\n Type = \"SystemAssigned\",\n },\n });\n\n var example_disk = new Azure.KeyVault.AccessPolicy(\"example-disk\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.TenantId),\n ObjectId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.PrincipalId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n },\n });\n\n var example_diskAssignment = new Azure.Authorization.Assignment(\"example-disk\", new()\n {\n Scope = exampleKeyVault.Id,\n RoleDefinitionName = \"Key Vault Crypto Service Encryption User\",\n PrincipalId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.PrincipalId),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/compute\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"des-example-keyvault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t\tEnabledForDiskEncryption: pulumi.Bool(true),\n\t\t\tPurgeProtectionEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-user\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(current.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Decrypt\"),\n\t\t\t\tpulumi.String(\"Sign\"),\n\t\t\t\tpulumi.String(\"GetRotationPolicy\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKey, err := keyvault.NewKey(ctx, \"example\", \u0026keyvault.KeyArgs{\n\t\t\tName: pulumi.String(\"des-example-key\"),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tKeyType: pulumi.String(\"RSA\"),\n\t\t\tKeySize: pulumi.Int(2048),\n\t\t\tKeyOpts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"decrypt\"),\n\t\t\t\tpulumi.String(\"encrypt\"),\n\t\t\t\tpulumi.String(\"sign\"),\n\t\t\t\tpulumi.String(\"unwrapKey\"),\n\t\t\t\tpulumi.String(\"verify\"),\n\t\t\t\tpulumi.String(\"wrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample_user,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDiskEncryptionSet, err := compute.NewDiskEncryptionSet(ctx, \"example\", \u0026compute.DiskEncryptionSetArgs{\n\t\t\tName: pulumi.String(\"des\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tLocation: example.Location,\n\t\t\tKeyVaultKeyId: exampleKey.VersionlessId,\n\t\t\tAutoKeyRotationEnabled: pulumi.Bool(true),\n\t\t\tIdentity: \u0026compute.DiskEncryptionSetIdentityArgs{\n\t\t\t\tType: pulumi.String(\"SystemAssigned\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-disk\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.TenantId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tObjectId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.PrincipalId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Decrypt\"),\n\t\t\t\tpulumi.String(\"Sign\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = authorization.NewAssignment(ctx, \"example-disk\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleKeyVault.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Key Vault Crypto Service Encryption User\"),\n\t\t\tPrincipalId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.PrincipalId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.keyvault.AccessPolicy;\nimport com.pulumi.azure.keyvault.AccessPolicyArgs;\nimport com.pulumi.azure.keyvault.Key;\nimport com.pulumi.azure.keyvault.KeyArgs;\nimport com.pulumi.azure.compute.DiskEncryptionSet;\nimport com.pulumi.azure.compute.DiskEncryptionSetArgs;\nimport com.pulumi.azure.compute.inputs.DiskEncryptionSetIdentityArgs;\nimport com.pulumi.azure.authorization.Assignment;\nimport com.pulumi.azure.authorization.AssignmentArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"des-example-keyvault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .enabledForDiskEncryption(true)\n .purgeProtectionEnabled(true)\n .build());\n\n var example_user = new AccessPolicy(\"example-user\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .keyPermissions( \n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\")\n .build());\n\n var exampleKey = new Key(\"exampleKey\", KeyArgs.builder()\n .name(\"des-example-key\")\n .keyVaultId(exampleKeyVault.id())\n .keyType(\"RSA\")\n .keySize(2048)\n .keyOpts( \n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(example_user)\n .build());\n\n var exampleDiskEncryptionSet = new DiskEncryptionSet(\"exampleDiskEncryptionSet\", DiskEncryptionSetArgs.builder()\n .name(\"des\")\n .resourceGroupName(example.name())\n .location(example.location())\n .keyVaultKeyId(exampleKey.versionlessId())\n .autoKeyRotationEnabled(true)\n .identity(DiskEncryptionSetIdentityArgs.builder()\n .type(\"SystemAssigned\")\n .build())\n .build());\n\n var example_disk = new AccessPolicy(\"example-disk\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.tenantId()))\n .objectId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.principalId()))\n .keyPermissions( \n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\")\n .build());\n\n var example_diskAssignment = new Assignment(\"example-diskAssignment\", AssignmentArgs.builder()\n .scope(exampleKeyVault.id())\n .roleDefinitionName(\"Key Vault Crypto Service Encryption User\")\n .principalId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.principalId()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: des-example-keyvault\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n enabledForDiskEncryption: true\n purgeProtectionEnabled: true\n exampleKey:\n type: azure:keyvault:Key\n name: example\n properties:\n name: des-example-key\n keyVaultId: ${exampleKeyVault.id}\n keyType: RSA\n keySize: 2048\n keyOpts:\n - decrypt\n - encrypt\n - sign\n - unwrapKey\n - verify\n - wrapKey\n options:\n dependsOn:\n - ${[\"example-user\"]}\n exampleDiskEncryptionSet:\n type: azure:compute:DiskEncryptionSet\n name: example\n properties:\n name: des\n resourceGroupName: ${example.name}\n location: ${example.location}\n keyVaultKeyId: ${exampleKey.versionlessId}\n autoKeyRotationEnabled: true\n identity:\n type: SystemAssigned\n example-disk:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${exampleDiskEncryptionSet.identity.tenantId}\n objectId: ${exampleDiskEncryptionSet.identity.principalId}\n keyPermissions:\n - Create\n - Delete\n - Get\n - Purge\n - Recover\n - Update\n - List\n - Decrypt\n - Sign\n example-user:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${current.objectId}\n keyPermissions:\n - Create\n - Delete\n - Get\n - Purge\n - Recover\n - Update\n - List\n - Decrypt\n - Sign\n - GetRotationPolicy\n example-diskAssignment:\n type: azure:authorization:Assignment\n name: example-disk\n properties:\n scope: ${exampleKeyVault.id}\n roleDefinitionName: Key Vault Crypto Service Encryption User\n principalId: ${exampleDiskEncryptionSet.identity.principalId}\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDisk Encryption Sets can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:compute/diskEncryptionSet:DiskEncryptionSet example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.Compute/diskEncryptionSets/encryptionSet1\n```\n\n", + "description": "Manages a Disk Encryption Set.\n\n\u003e **NOTE:** At this time the Key Vault used to store the Active Key for this Disk Encryption Set must have both Soft Delete \u0026 Purge Protection enabled - which are not yet supported by this provider.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"des-example-keyvault\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n enabledForDiskEncryption: true,\n purgeProtectionEnabled: true,\n});\nconst example_user = new azure.keyvault.AccessPolicy(\"example-user\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: current.then(current =\u003e current.objectId),\n keyPermissions: [\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n ],\n});\nconst exampleKey = new azure.keyvault.Key(\"example\", {\n name: \"des-example-key\",\n keyVaultId: exampleKeyVault.id,\n keyType: \"RSA\",\n keySize: 2048,\n keyOpts: [\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n}, {\n dependsOn: [example_user],\n});\nconst exampleDiskEncryptionSet = new azure.compute.DiskEncryptionSet(\"example\", {\n name: \"des\",\n resourceGroupName: example.name,\n location: example.location,\n keyVaultKeyId: exampleKey.id,\n identity: {\n type: \"SystemAssigned\",\n },\n});\nconst example_disk = new azure.keyvault.AccessPolicy(\"example-disk\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.tenantId),\n objectId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.principalId),\n keyPermissions: [\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n ],\n});\nconst example_diskAssignment = new azure.authorization.Assignment(\"example-disk\", {\n scope: exampleKeyVault.id,\n roleDefinitionName: \"Key Vault Crypto Service Encryption User\",\n principalId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.principalId),\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"des-example-keyvault\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\",\n enabled_for_disk_encryption=True,\n purge_protection_enabled=True)\nexample_user = azure.keyvault.AccessPolicy(\"example-user\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=current.object_id,\n key_permissions=[\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n ])\nexample_key = azure.keyvault.Key(\"example\",\n name=\"des-example-key\",\n key_vault_id=example_key_vault.id,\n key_type=\"RSA\",\n key_size=2048,\n key_opts=[\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[example_user]))\nexample_disk_encryption_set = azure.compute.DiskEncryptionSet(\"example\",\n name=\"des\",\n resource_group_name=example.name,\n location=example.location,\n key_vault_key_id=example_key.id,\n identity={\n \"type\": \"SystemAssigned\",\n })\nexample_disk = azure.keyvault.AccessPolicy(\"example-disk\",\n key_vault_id=example_key_vault.id,\n tenant_id=example_disk_encryption_set.identity.tenant_id,\n object_id=example_disk_encryption_set.identity.principal_id,\n key_permissions=[\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n ])\nexample_disk_assignment = azure.authorization.Assignment(\"example-disk\",\n scope=example_key_vault.id,\n role_definition_name=\"Key Vault Crypto Service Encryption User\",\n principal_id=example_disk_encryption_set.identity.principal_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"des-example-keyvault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n EnabledForDiskEncryption = true,\n PurgeProtectionEnabled = true,\n });\n\n var example_user = new Azure.KeyVault.AccessPolicy(\"example-user\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n },\n });\n\n var exampleKey = new Azure.KeyVault.Key(\"example\", new()\n {\n Name = \"des-example-key\",\n KeyVaultId = exampleKeyVault.Id,\n KeyType = \"RSA\",\n KeySize = 2048,\n KeyOpts = new[]\n {\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example_user,\n },\n });\n\n var exampleDiskEncryptionSet = new Azure.Compute.DiskEncryptionSet(\"example\", new()\n {\n Name = \"des\",\n ResourceGroupName = example.Name,\n Location = example.Location,\n KeyVaultKeyId = exampleKey.Id,\n Identity = new Azure.Compute.Inputs.DiskEncryptionSetIdentityArgs\n {\n Type = \"SystemAssigned\",\n },\n });\n\n var example_disk = new Azure.KeyVault.AccessPolicy(\"example-disk\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.TenantId),\n ObjectId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.PrincipalId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n },\n });\n\n var example_diskAssignment = new Azure.Authorization.Assignment(\"example-disk\", new()\n {\n Scope = exampleKeyVault.Id,\n RoleDefinitionName = \"Key Vault Crypto Service Encryption User\",\n PrincipalId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.PrincipalId),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/compute\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"des-example-keyvault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t\tEnabledForDiskEncryption: pulumi.Bool(true),\n\t\t\tPurgeProtectionEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_user, err := keyvault.NewAccessPolicy(ctx, \"example-user\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(current.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Decrypt\"),\n\t\t\t\tpulumi.String(\"Sign\"),\n\t\t\t\tpulumi.String(\"GetRotationPolicy\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKey, err := keyvault.NewKey(ctx, \"example\", \u0026keyvault.KeyArgs{\n\t\t\tName: pulumi.String(\"des-example-key\"),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tKeyType: pulumi.String(\"RSA\"),\n\t\t\tKeySize: pulumi.Int(2048),\n\t\t\tKeyOpts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"decrypt\"),\n\t\t\t\tpulumi.String(\"encrypt\"),\n\t\t\t\tpulumi.String(\"sign\"),\n\t\t\t\tpulumi.String(\"unwrapKey\"),\n\t\t\t\tpulumi.String(\"verify\"),\n\t\t\t\tpulumi.String(\"wrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample_user,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDiskEncryptionSet, err := compute.NewDiskEncryptionSet(ctx, \"example\", \u0026compute.DiskEncryptionSetArgs{\n\t\t\tName: pulumi.String(\"des\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tLocation: example.Location,\n\t\t\tKeyVaultKeyId: exampleKey.ID(),\n\t\t\tIdentity: \u0026compute.DiskEncryptionSetIdentityArgs{\n\t\t\t\tType: pulumi.String(\"SystemAssigned\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-disk\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.TenantId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tObjectId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.PrincipalId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Decrypt\"),\n\t\t\t\tpulumi.String(\"Sign\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = authorization.NewAssignment(ctx, \"example-disk\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleKeyVault.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Key Vault Crypto Service Encryption User\"),\n\t\t\tPrincipalId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.PrincipalId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.keyvault.AccessPolicy;\nimport com.pulumi.azure.keyvault.AccessPolicyArgs;\nimport com.pulumi.azure.keyvault.Key;\nimport com.pulumi.azure.keyvault.KeyArgs;\nimport com.pulumi.azure.compute.DiskEncryptionSet;\nimport com.pulumi.azure.compute.DiskEncryptionSetArgs;\nimport com.pulumi.azure.compute.inputs.DiskEncryptionSetIdentityArgs;\nimport com.pulumi.azure.authorization.Assignment;\nimport com.pulumi.azure.authorization.AssignmentArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"des-example-keyvault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .enabledForDiskEncryption(true)\n .purgeProtectionEnabled(true)\n .build());\n\n var example_user = new AccessPolicy(\"example-user\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .keyPermissions( \n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\")\n .build());\n\n var exampleKey = new Key(\"exampleKey\", KeyArgs.builder()\n .name(\"des-example-key\")\n .keyVaultId(exampleKeyVault.id())\n .keyType(\"RSA\")\n .keySize(2048)\n .keyOpts( \n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(example_user)\n .build());\n\n var exampleDiskEncryptionSet = new DiskEncryptionSet(\"exampleDiskEncryptionSet\", DiskEncryptionSetArgs.builder()\n .name(\"des\")\n .resourceGroupName(example.name())\n .location(example.location())\n .keyVaultKeyId(exampleKey.id())\n .identity(DiskEncryptionSetIdentityArgs.builder()\n .type(\"SystemAssigned\")\n .build())\n .build());\n\n var example_disk = new AccessPolicy(\"example-disk\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.tenantId()))\n .objectId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.principalId()))\n .keyPermissions( \n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\")\n .build());\n\n var example_diskAssignment = new Assignment(\"example-diskAssignment\", AssignmentArgs.builder()\n .scope(exampleKeyVault.id())\n .roleDefinitionName(\"Key Vault Crypto Service Encryption User\")\n .principalId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.principalId()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: des-example-keyvault\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n enabledForDiskEncryption: true\n purgeProtectionEnabled: true\n exampleKey:\n type: azure:keyvault:Key\n name: example\n properties:\n name: des-example-key\n keyVaultId: ${exampleKeyVault.id}\n keyType: RSA\n keySize: 2048\n keyOpts:\n - decrypt\n - encrypt\n - sign\n - unwrapKey\n - verify\n - wrapKey\n options:\n dependsOn:\n - ${[\"example-user\"]}\n exampleDiskEncryptionSet:\n type: azure:compute:DiskEncryptionSet\n name: example\n properties:\n name: des\n resourceGroupName: ${example.name}\n location: ${example.location}\n keyVaultKeyId: ${exampleKey.id}\n identity:\n type: SystemAssigned\n example-disk:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${exampleDiskEncryptionSet.identity.tenantId}\n objectId: ${exampleDiskEncryptionSet.identity.principalId}\n keyPermissions:\n - Create\n - Delete\n - Get\n - Purge\n - Recover\n - Update\n - List\n - Decrypt\n - Sign\n example-user:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${current.objectId}\n keyPermissions:\n - Create\n - Delete\n - Get\n - Purge\n - Recover\n - Update\n - List\n - Decrypt\n - Sign\n - GetRotationPolicy\n example-diskAssignment:\n type: azure:authorization:Assignment\n name: example-disk\n properties:\n scope: ${exampleKeyVault.id}\n roleDefinitionName: Key Vault Crypto Service Encryption User\n principalId: ${exampleDiskEncryptionSet.identity.principalId}\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Automatic Key Rotation Enabled\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"des-example-keyvault\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n enabledForDiskEncryption: true,\n purgeProtectionEnabled: true,\n});\nconst example_user = new azure.keyvault.AccessPolicy(\"example-user\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: current.then(current =\u003e current.objectId),\n keyPermissions: [\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n ],\n});\nconst exampleKey = new azure.keyvault.Key(\"example\", {\n name: \"des-example-key\",\n keyVaultId: exampleKeyVault.id,\n keyType: \"RSA\",\n keySize: 2048,\n keyOpts: [\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n}, {\n dependsOn: [example_user],\n});\nconst exampleDiskEncryptionSet = new azure.compute.DiskEncryptionSet(\"example\", {\n name: \"des\",\n resourceGroupName: example.name,\n location: example.location,\n keyVaultKeyId: exampleKey.versionlessId,\n autoKeyRotationEnabled: true,\n identity: {\n type: \"SystemAssigned\",\n },\n});\nconst example_disk = new azure.keyvault.AccessPolicy(\"example-disk\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.tenantId),\n objectId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.principalId),\n keyPermissions: [\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n ],\n});\nconst example_diskAssignment = new azure.authorization.Assignment(\"example-disk\", {\n scope: exampleKeyVault.id,\n roleDefinitionName: \"Key Vault Crypto Service Encryption User\",\n principalId: exampleDiskEncryptionSet.identity.apply(identity =\u003e identity.principalId),\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"des-example-keyvault\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\",\n enabled_for_disk_encryption=True,\n purge_protection_enabled=True)\nexample_user = azure.keyvault.AccessPolicy(\"example-user\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=current.object_id,\n key_permissions=[\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n ])\nexample_key = azure.keyvault.Key(\"example\",\n name=\"des-example-key\",\n key_vault_id=example_key_vault.id,\n key_type=\"RSA\",\n key_size=2048,\n key_opts=[\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[example_user]))\nexample_disk_encryption_set = azure.compute.DiskEncryptionSet(\"example\",\n name=\"des\",\n resource_group_name=example.name,\n location=example.location,\n key_vault_key_id=example_key.versionless_id,\n auto_key_rotation_enabled=True,\n identity={\n \"type\": \"SystemAssigned\",\n })\nexample_disk = azure.keyvault.AccessPolicy(\"example-disk\",\n key_vault_id=example_key_vault.id,\n tenant_id=example_disk_encryption_set.identity.tenant_id,\n object_id=example_disk_encryption_set.identity.principal_id,\n key_permissions=[\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n ])\nexample_disk_assignment = azure.authorization.Assignment(\"example-disk\",\n scope=example_key_vault.id,\n role_definition_name=\"Key Vault Crypto Service Encryption User\",\n principal_id=example_disk_encryption_set.identity.principal_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"des-example-keyvault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n EnabledForDiskEncryption = true,\n PurgeProtectionEnabled = true,\n });\n\n var example_user = new Azure.KeyVault.AccessPolicy(\"example-user\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\",\n },\n });\n\n var exampleKey = new Azure.KeyVault.Key(\"example\", new()\n {\n Name = \"des-example-key\",\n KeyVaultId = exampleKeyVault.Id,\n KeyType = \"RSA\",\n KeySize = 2048,\n KeyOpts = new[]\n {\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example_user,\n },\n });\n\n var exampleDiskEncryptionSet = new Azure.Compute.DiskEncryptionSet(\"example\", new()\n {\n Name = \"des\",\n ResourceGroupName = example.Name,\n Location = example.Location,\n KeyVaultKeyId = exampleKey.VersionlessId,\n AutoKeyRotationEnabled = true,\n Identity = new Azure.Compute.Inputs.DiskEncryptionSetIdentityArgs\n {\n Type = \"SystemAssigned\",\n },\n });\n\n var example_disk = new Azure.KeyVault.AccessPolicy(\"example-disk\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.TenantId),\n ObjectId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.PrincipalId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n },\n });\n\n var example_diskAssignment = new Azure.Authorization.Assignment(\"example-disk\", new()\n {\n Scope = exampleKeyVault.Id,\n RoleDefinitionName = \"Key Vault Crypto Service Encryption User\",\n PrincipalId = exampleDiskEncryptionSet.Identity.Apply(identity =\u003e identity.PrincipalId),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/compute\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"des-example-keyvault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t\tEnabledForDiskEncryption: pulumi.Bool(true),\n\t\t\tPurgeProtectionEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_user, err := keyvault.NewAccessPolicy(ctx, \"example-user\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(current.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Decrypt\"),\n\t\t\t\tpulumi.String(\"Sign\"),\n\t\t\t\tpulumi.String(\"GetRotationPolicy\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKey, err := keyvault.NewKey(ctx, \"example\", \u0026keyvault.KeyArgs{\n\t\t\tName: pulumi.String(\"des-example-key\"),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tKeyType: pulumi.String(\"RSA\"),\n\t\t\tKeySize: pulumi.Int(2048),\n\t\t\tKeyOpts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"decrypt\"),\n\t\t\t\tpulumi.String(\"encrypt\"),\n\t\t\t\tpulumi.String(\"sign\"),\n\t\t\t\tpulumi.String(\"unwrapKey\"),\n\t\t\t\tpulumi.String(\"verify\"),\n\t\t\t\tpulumi.String(\"wrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample_user,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDiskEncryptionSet, err := compute.NewDiskEncryptionSet(ctx, \"example\", \u0026compute.DiskEncryptionSetArgs{\n\t\t\tName: pulumi.String(\"des\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tLocation: example.Location,\n\t\t\tKeyVaultKeyId: exampleKey.VersionlessId,\n\t\t\tAutoKeyRotationEnabled: pulumi.Bool(true),\n\t\t\tIdentity: \u0026compute.DiskEncryptionSetIdentityArgs{\n\t\t\t\tType: pulumi.String(\"SystemAssigned\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-disk\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.TenantId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tObjectId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.PrincipalId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Decrypt\"),\n\t\t\t\tpulumi.String(\"Sign\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = authorization.NewAssignment(ctx, \"example-disk\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleKeyVault.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Key Vault Crypto Service Encryption User\"),\n\t\t\tPrincipalId: pulumi.String(exampleDiskEncryptionSet.Identity.ApplyT(func(identity compute.DiskEncryptionSetIdentity) (*string, error) {\n\t\t\t\treturn \u0026identity.PrincipalId, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.keyvault.AccessPolicy;\nimport com.pulumi.azure.keyvault.AccessPolicyArgs;\nimport com.pulumi.azure.keyvault.Key;\nimport com.pulumi.azure.keyvault.KeyArgs;\nimport com.pulumi.azure.compute.DiskEncryptionSet;\nimport com.pulumi.azure.compute.DiskEncryptionSetArgs;\nimport com.pulumi.azure.compute.inputs.DiskEncryptionSetIdentityArgs;\nimport com.pulumi.azure.authorization.Assignment;\nimport com.pulumi.azure.authorization.AssignmentArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"des-example-keyvault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .enabledForDiskEncryption(true)\n .purgeProtectionEnabled(true)\n .build());\n\n var example_user = new AccessPolicy(\"example-user\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .keyPermissions( \n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\",\n \"GetRotationPolicy\")\n .build());\n\n var exampleKey = new Key(\"exampleKey\", KeyArgs.builder()\n .name(\"des-example-key\")\n .keyVaultId(exampleKeyVault.id())\n .keyType(\"RSA\")\n .keySize(2048)\n .keyOpts( \n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(example_user)\n .build());\n\n var exampleDiskEncryptionSet = new DiskEncryptionSet(\"exampleDiskEncryptionSet\", DiskEncryptionSetArgs.builder()\n .name(\"des\")\n .resourceGroupName(example.name())\n .location(example.location())\n .keyVaultKeyId(exampleKey.versionlessId())\n .autoKeyRotationEnabled(true)\n .identity(DiskEncryptionSetIdentityArgs.builder()\n .type(\"SystemAssigned\")\n .build())\n .build());\n\n var example_disk = new AccessPolicy(\"example-disk\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.tenantId()))\n .objectId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.principalId()))\n .keyPermissions( \n \"Create\",\n \"Delete\",\n \"Get\",\n \"Purge\",\n \"Recover\",\n \"Update\",\n \"List\",\n \"Decrypt\",\n \"Sign\")\n .build());\n\n var example_diskAssignment = new Assignment(\"example-diskAssignment\", AssignmentArgs.builder()\n .scope(exampleKeyVault.id())\n .roleDefinitionName(\"Key Vault Crypto Service Encryption User\")\n .principalId(exampleDiskEncryptionSet.identity().applyValue(identity -\u003e identity.principalId()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: des-example-keyvault\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n enabledForDiskEncryption: true\n purgeProtectionEnabled: true\n exampleKey:\n type: azure:keyvault:Key\n name: example\n properties:\n name: des-example-key\n keyVaultId: ${exampleKeyVault.id}\n keyType: RSA\n keySize: 2048\n keyOpts:\n - decrypt\n - encrypt\n - sign\n - unwrapKey\n - verify\n - wrapKey\n options:\n dependsOn:\n - ${[\"example-user\"]}\n exampleDiskEncryptionSet:\n type: azure:compute:DiskEncryptionSet\n name: example\n properties:\n name: des\n resourceGroupName: ${example.name}\n location: ${example.location}\n keyVaultKeyId: ${exampleKey.versionlessId}\n autoKeyRotationEnabled: true\n identity:\n type: SystemAssigned\n example-disk:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${exampleDiskEncryptionSet.identity.tenantId}\n objectId: ${exampleDiskEncryptionSet.identity.principalId}\n keyPermissions:\n - Create\n - Delete\n - Get\n - Purge\n - Recover\n - Update\n - List\n - Decrypt\n - Sign\n example-user:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${current.objectId}\n keyPermissions:\n - Create\n - Delete\n - Get\n - Purge\n - Recover\n - Update\n - List\n - Decrypt\n - Sign\n - GetRotationPolicy\n example-diskAssignment:\n type: azure:authorization:Assignment\n name: example-disk\n properties:\n scope: ${exampleKeyVault.id}\n roleDefinitionName: Key Vault Crypto Service Encryption User\n principalId: ${exampleDiskEncryptionSet.identity.principalId}\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDisk Encryption Sets can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:compute/diskEncryptionSet:DiskEncryptionSet example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.Compute/diskEncryptionSets/encryptionSet1\n```\n\n", "properties": { "autoKeyRotationEnabled": { "type": "boolean" @@ -202209,7 +202209,7 @@ } }, "azure:lb/backendAddressPoolAddress:BackendAddressPoolAddress": { - "description": "Manages a Backend Address within a Backend Address Pool.\n\n\u003e **Note:** Backend Addresses can only be added to a `Standard` SKU Load Balancer.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst example = azure.network.getVirtualNetwork({\n name: \"example-network\",\n resourceGroupName: \"example-resources\",\n});\nconst exampleGetLB = azure.lb.getLB({\n name: \"example-lb\",\n resourceGroupName: \"example-resources\",\n});\nconst exampleGetBackendAddressPool = exampleGetLB.then(exampleGetLB =\u003e azure.lb.getBackendAddressPool({\n name: \"first\",\n loadbalancerId: exampleGetLB.id,\n}));\nconst exampleBackendAddressPoolAddress = new azure.lb.BackendAddressPoolAddress(\"example\", {\n name: \"example\",\n backendAddressPoolId: exampleGetBackendAddressPool.then(exampleGetBackendAddressPool =\u003e exampleGetBackendAddressPool.id),\n virtualNetworkId: example.then(example =\u003e example.id),\n ipAddress: \"10.0.0.1\",\n});\nconst backend-pool-cr = exampleGetLB.then(exampleGetLB =\u003e azure.lb.getBackendAddressPool({\n name: \"globalLBBackendPool\",\n loadbalancerId: exampleGetLB.id,\n}));\nconst example_1 = new azure.lb.BackendAddressPoolAddress(\"example-1\", {\n name: \"address1\",\n backendAddressPoolId: backend_pool_cr.then(backend_pool_cr =\u003e backend_pool_cr.id),\n backendAddressIpConfigurationId: backend_lb_R1.frontendIpConfiguration[0].id,\n});\nconst example_2 = new azure.lb.BackendAddressPoolAddress(\"example-2\", {\n name: \"address2\",\n backendAddressPoolId: backend_pool_cr.then(backend_pool_cr =\u003e backend_pool_cr.id),\n backendAddressIpConfigurationId: backend_lb_R2.frontendIpConfiguration[0].id,\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nexample = azure.network.get_virtual_network(name=\"example-network\",\n resource_group_name=\"example-resources\")\nexample_get_lb = azure.lb.get_lb(name=\"example-lb\",\n resource_group_name=\"example-resources\")\nexample_get_backend_address_pool = azure.lb.get_backend_address_pool(name=\"first\",\n loadbalancer_id=example_get_lb.id)\nexample_backend_address_pool_address = azure.lb.BackendAddressPoolAddress(\"example\",\n name=\"example\",\n backend_address_pool_id=example_get_backend_address_pool.id,\n virtual_network_id=example.id,\n ip_address=\"10.0.0.1\")\nbackend_pool_cr = azure.lb.get_backend_address_pool(name=\"globalLBBackendPool\",\n loadbalancer_id=example_get_lb.id)\nexample_1 = azure.lb.BackendAddressPoolAddress(\"example-1\",\n name=\"address1\",\n backend_address_pool_id=backend_pool_cr.id,\n backend_address_ip_configuration_id=backend_lb__r1[\"frontendIpConfiguration\"][0][\"id\"])\nexample_2 = azure.lb.BackendAddressPoolAddress(\"example-2\",\n name=\"address2\",\n backend_address_pool_id=backend_pool_cr.id,\n backend_address_ip_configuration_id=backend_lb__r2[\"frontendIpConfiguration\"][0][\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Azure.Network.GetVirtualNetwork.Invoke(new()\n {\n Name = \"example-network\",\n ResourceGroupName = \"example-resources\",\n });\n\n var exampleGetLB = Azure.Lb.GetLB.Invoke(new()\n {\n Name = \"example-lb\",\n ResourceGroupName = \"example-resources\",\n });\n\n var exampleGetBackendAddressPool = Azure.Lb.GetBackendAddressPool.Invoke(new()\n {\n Name = \"first\",\n LoadbalancerId = exampleGetLB.Apply(getLBResult =\u003e getLBResult.Id),\n });\n\n var exampleBackendAddressPoolAddress = new Azure.Lb.BackendAddressPoolAddress(\"example\", new()\n {\n Name = \"example\",\n BackendAddressPoolId = exampleGetBackendAddressPool.Apply(getBackendAddressPoolResult =\u003e getBackendAddressPoolResult.Id),\n VirtualNetworkId = example.Apply(getVirtualNetworkResult =\u003e getVirtualNetworkResult.Id),\n IpAddress = \"10.0.0.1\",\n });\n\n var backend_pool_cr = Azure.Lb.GetBackendAddressPool.Invoke(new()\n {\n Name = \"globalLBBackendPool\",\n LoadbalancerId = exampleGetLB.Apply(getLBResult =\u003e getLBResult.Id),\n });\n\n var example_1 = new Azure.Lb.BackendAddressPoolAddress(\"example-1\", new()\n {\n Name = \"address1\",\n BackendAddressPoolId = backend_pool_cr.Apply(backend_pool_cr =\u003e backend_pool_cr.Apply(getBackendAddressPoolResult =\u003e getBackendAddressPoolResult.Id)),\n BackendAddressIpConfigurationId = backend_lb_R1.FrontendIpConfiguration[0].Id,\n });\n\n var example_2 = new Azure.Lb.BackendAddressPoolAddress(\"example-2\", new()\n {\n Name = \"address2\",\n BackendAddressPoolId = backend_pool_cr.Apply(backend_pool_cr =\u003e backend_pool_cr.Apply(getBackendAddressPoolResult =\u003e getBackendAddressPoolResult.Id)),\n BackendAddressIpConfigurationId = backend_lb_R2.FrontendIpConfiguration[0].Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/lb\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := network.LookupVirtualNetwork(ctx, \u0026network.LookupVirtualNetworkArgs{\n\t\t\tName: \"example-network\",\n\t\t\tResourceGroupName: \"example-resources\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleGetLB, err := lb.GetLB(ctx, \u0026lb.GetLBArgs{\n\t\t\tName: \"example-lb\",\n\t\t\tResourceGroupName: \"example-resources\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleGetBackendAddressPool, err := lb.LookupBackendAddressPool(ctx, \u0026lb.LookupBackendAddressPoolArgs{\n\t\t\tName: \"first\",\n\t\t\tLoadbalancerId: exampleGetLB.Id,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewBackendAddressPoolAddress(ctx, \"example\", \u0026lb.BackendAddressPoolAddressArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tBackendAddressPoolId: pulumi.String(exampleGetBackendAddressPool.Id),\n\t\t\tVirtualNetworkId: pulumi.String(example.Id),\n\t\t\tIpAddress: pulumi.String(\"10.0.0.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackend_pool_cr, err := lb.LookupBackendAddressPool(ctx, \u0026lb.LookupBackendAddressPoolArgs{\n\t\t\tName: \"globalLBBackendPool\",\n\t\t\tLoadbalancerId: exampleGetLB.Id,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewBackendAddressPoolAddress(ctx, \"example-1\", \u0026lb.BackendAddressPoolAddressArgs{\n\t\t\tName: pulumi.String(\"address1\"),\n\t\t\tBackendAddressPoolId: pulumi.String(backend_pool_cr.Id),\n\t\t\tBackendAddressIpConfigurationId: pulumi.Any(backend_lb_R1.FrontendIpConfiguration[0].Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewBackendAddressPoolAddress(ctx, \"example-2\", \u0026lb.BackendAddressPoolAddressArgs{\n\t\t\tName: pulumi.String(\"address2\"),\n\t\t\tBackendAddressPoolId: pulumi.String(backend_pool_cr.Id),\n\t\t\tBackendAddressIpConfigurationId: pulumi.Any(backend_lb_R2.FrontendIpConfiguration[0].Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.network.NetworkFunctions;\nimport com.pulumi.azure.network.inputs.GetVirtualNetworkArgs;\nimport com.pulumi.azure.lb.LbFunctions;\nimport com.pulumi.azure.lb.inputs.GetLBArgs;\nimport com.pulumi.azure.lb.inputs.GetBackendAddressPoolArgs;\nimport com.pulumi.azure.lb.BackendAddressPoolAddress;\nimport com.pulumi.azure.lb.BackendAddressPoolAddressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = NetworkFunctions.getVirtualNetwork(GetVirtualNetworkArgs.builder()\n .name(\"example-network\")\n .resourceGroupName(\"example-resources\")\n .build());\n\n final var exampleGetLB = LbFunctions.getLB(GetLBArgs.builder()\n .name(\"example-lb\")\n .resourceGroupName(\"example-resources\")\n .build());\n\n final var exampleGetBackendAddressPool = LbFunctions.getBackendAddressPool(GetBackendAddressPoolArgs.builder()\n .name(\"first\")\n .loadbalancerId(exampleGetLB.applyValue(getLBResult -\u003e getLBResult.id()))\n .build());\n\n var exampleBackendAddressPoolAddress = new BackendAddressPoolAddress(\"exampleBackendAddressPoolAddress\", BackendAddressPoolAddressArgs.builder()\n .name(\"example\")\n .backendAddressPoolId(exampleGetBackendAddressPool.applyValue(getBackendAddressPoolResult -\u003e getBackendAddressPoolResult.id()))\n .virtualNetworkId(example.applyValue(getVirtualNetworkResult -\u003e getVirtualNetworkResult.id()))\n .ipAddress(\"10.0.0.1\")\n .build());\n\n final var backend-pool-cr = LbFunctions.getBackendAddressPool(GetBackendAddressPoolArgs.builder()\n .name(\"globalLBBackendPool\")\n .loadbalancerId(exampleGetLB.applyValue(getLBResult -\u003e getLBResult.id()))\n .build());\n\n var example_1 = new BackendAddressPoolAddress(\"example-1\", BackendAddressPoolAddressArgs.builder()\n .name(\"address1\")\n .backendAddressPoolId(backend_pool_cr.id())\n .backendAddressIpConfigurationId(backend_lb_R1.frontendIpConfiguration()[0].id())\n .build());\n\n var example_2 = new BackendAddressPoolAddress(\"example-2\", BackendAddressPoolAddressArgs.builder()\n .name(\"address2\")\n .backendAddressPoolId(backend_pool_cr.id())\n .backendAddressIpConfigurationId(backend_lb_R2.frontendIpConfiguration()[0].id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBackendAddressPoolAddress:\n type: azure:lb:BackendAddressPoolAddress\n name: example\n properties:\n name: example\n backendAddressPoolId: ${exampleGetBackendAddressPool.id}\n virtualNetworkId: ${example.id}\n ipAddress: 10.0.0.1\n example-1:\n type: azure:lb:BackendAddressPoolAddress\n properties:\n name: address1\n backendAddressPoolId: ${[\"backend-pool-cr\"].id}\n backendAddressIpConfigurationId: ${[\"backend-lb-R1\"].frontendIpConfiguration[0].id}\n example-2:\n type: azure:lb:BackendAddressPoolAddress\n properties:\n name: address2\n backendAddressPoolId: ${[\"backend-pool-cr\"].id}\n backendAddressIpConfigurationId: ${[\"backend-lb-R2\"].frontendIpConfiguration[0].id}\nvariables:\n example:\n fn::invoke:\n function: azure:network:getVirtualNetwork\n arguments:\n name: example-network\n resourceGroupName: example-resources\n exampleGetLB:\n fn::invoke:\n function: azure:lb:getLB\n arguments:\n name: example-lb\n resourceGroupName: example-resources\n exampleGetBackendAddressPool:\n fn::invoke:\n function: azure:lb:getBackendAddressPool\n arguments:\n name: first\n loadbalancerId: ${exampleGetLB.id}\n backend-pool-cr:\n fn::invoke:\n function: azure:lb:getBackendAddressPool\n arguments:\n name: globalLBBackendPool\n loadbalancerId: ${exampleGetLB.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackend Address Pool Addresses can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:lb/backendAddressPoolAddress:BackendAddressPoolAddress example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.Network/loadBalancers/loadBalancer1/backendAddressPools/backendAddressPool1/addresses/address1\n```\n\n", + "description": "Manages a Backend Address within a Backend Address Pool.\n\n\u003e **Note:** Backend Addresses can only be added to a `Standard` SKU Load Balancer.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst example = azure.network.getVirtualNetwork({\n name: \"example-network\",\n resourceGroupName: \"example-resources\",\n});\nconst exampleGetLB = azure.lb.getLB({\n name: \"example-lb\",\n resourceGroupName: \"example-resources\",\n});\nconst exampleGetBackendAddressPool = exampleGetLB.then(exampleGetLB =\u003e azure.lb.getBackendAddressPool({\n name: \"first\",\n loadbalancerId: exampleGetLB.id,\n}));\nconst exampleBackendAddressPoolAddress = new azure.lb.BackendAddressPoolAddress(\"example\", {\n name: \"example\",\n backendAddressPoolId: exampleGetBackendAddressPool.then(exampleGetBackendAddressPool =\u003e exampleGetBackendAddressPool.id),\n virtualNetworkId: example.then(example =\u003e example.id),\n ipAddress: \"10.0.0.1\",\n});\nconst backend_pool_cr = exampleGetLB.then(exampleGetLB =\u003e azure.lb.getBackendAddressPool({\n name: \"globalLBBackendPool\",\n loadbalancerId: exampleGetLB.id,\n}));\nconst example_1 = new azure.lb.BackendAddressPoolAddress(\"example-1\", {\n name: \"address1\",\n backendAddressPoolId: backend_pool_cr.then(backend_pool_cr =\u003e backend_pool_cr.id),\n backendAddressIpConfigurationId: backend_lb_R1.frontendIpConfiguration[0].id,\n});\nconst example_2 = new azure.lb.BackendAddressPoolAddress(\"example-2\", {\n name: \"address2\",\n backendAddressPoolId: backend_pool_cr.then(backend_pool_cr =\u003e backend_pool_cr.id),\n backendAddressIpConfigurationId: backend_lb_R2.frontendIpConfiguration[0].id,\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nexample = azure.network.get_virtual_network(name=\"example-network\",\n resource_group_name=\"example-resources\")\nexample_get_lb = azure.lb.get_lb(name=\"example-lb\",\n resource_group_name=\"example-resources\")\nexample_get_backend_address_pool = azure.lb.get_backend_address_pool(name=\"first\",\n loadbalancer_id=example_get_lb.id)\nexample_backend_address_pool_address = azure.lb.BackendAddressPoolAddress(\"example\",\n name=\"example\",\n backend_address_pool_id=example_get_backend_address_pool.id,\n virtual_network_id=example.id,\n ip_address=\"10.0.0.1\")\nbackend_pool_cr = azure.lb.get_backend_address_pool(name=\"globalLBBackendPool\",\n loadbalancer_id=example_get_lb.id)\nexample_1 = azure.lb.BackendAddressPoolAddress(\"example-1\",\n name=\"address1\",\n backend_address_pool_id=backend_pool_cr.id,\n backend_address_ip_configuration_id=backend_lb__r1[\"frontendIpConfiguration\"][0][\"id\"])\nexample_2 = azure.lb.BackendAddressPoolAddress(\"example-2\",\n name=\"address2\",\n backend_address_pool_id=backend_pool_cr.id,\n backend_address_ip_configuration_id=backend_lb__r2[\"frontendIpConfiguration\"][0][\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = Azure.Network.GetVirtualNetwork.Invoke(new()\n {\n Name = \"example-network\",\n ResourceGroupName = \"example-resources\",\n });\n\n var exampleGetLB = Azure.Lb.GetLB.Invoke(new()\n {\n Name = \"example-lb\",\n ResourceGroupName = \"example-resources\",\n });\n\n var exampleGetBackendAddressPool = Azure.Lb.GetBackendAddressPool.Invoke(new()\n {\n Name = \"first\",\n LoadbalancerId = exampleGetLB.Apply(getLBResult =\u003e getLBResult.Id),\n });\n\n var exampleBackendAddressPoolAddress = new Azure.Lb.BackendAddressPoolAddress(\"example\", new()\n {\n Name = \"example\",\n BackendAddressPoolId = exampleGetBackendAddressPool.Apply(getBackendAddressPoolResult =\u003e getBackendAddressPoolResult.Id),\n VirtualNetworkId = example.Apply(getVirtualNetworkResult =\u003e getVirtualNetworkResult.Id),\n IpAddress = \"10.0.0.1\",\n });\n\n var backend_pool_cr = Azure.Lb.GetBackendAddressPool.Invoke(new()\n {\n Name = \"globalLBBackendPool\",\n LoadbalancerId = exampleGetLB.Apply(getLBResult =\u003e getLBResult.Id),\n });\n\n var example_1 = new Azure.Lb.BackendAddressPoolAddress(\"example-1\", new()\n {\n Name = \"address1\",\n BackendAddressPoolId = backend_pool_cr.Apply(backend_pool_cr =\u003e backend_pool_cr.Apply(getBackendAddressPoolResult =\u003e getBackendAddressPoolResult.Id)),\n BackendAddressIpConfigurationId = backend_lb_R1.FrontendIpConfiguration[0].Id,\n });\n\n var example_2 = new Azure.Lb.BackendAddressPoolAddress(\"example-2\", new()\n {\n Name = \"address2\",\n BackendAddressPoolId = backend_pool_cr.Apply(backend_pool_cr =\u003e backend_pool_cr.Apply(getBackendAddressPoolResult =\u003e getBackendAddressPoolResult.Id)),\n BackendAddressIpConfigurationId = backend_lb_R2.FrontendIpConfiguration[0].Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/lb\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := network.LookupVirtualNetwork(ctx, \u0026network.LookupVirtualNetworkArgs{\n\t\t\tName: \"example-network\",\n\t\t\tResourceGroupName: \"example-resources\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleGetLB, err := lb.GetLB(ctx, \u0026lb.GetLBArgs{\n\t\t\tName: \"example-lb\",\n\t\t\tResourceGroupName: \"example-resources\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleGetBackendAddressPool, err := lb.LookupBackendAddressPool(ctx, \u0026lb.LookupBackendAddressPoolArgs{\n\t\t\tName: \"first\",\n\t\t\tLoadbalancerId: exampleGetLB.Id,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewBackendAddressPoolAddress(ctx, \"example\", \u0026lb.BackendAddressPoolAddressArgs{\n\t\t\tName: pulumi.String(\"example\"),\n\t\t\tBackendAddressPoolId: pulumi.String(exampleGetBackendAddressPool.Id),\n\t\t\tVirtualNetworkId: pulumi.String(example.Id),\n\t\t\tIpAddress: pulumi.String(\"10.0.0.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackend_pool_cr, err := lb.LookupBackendAddressPool(ctx, \u0026lb.LookupBackendAddressPoolArgs{\n\t\t\tName: \"globalLBBackendPool\",\n\t\t\tLoadbalancerId: exampleGetLB.Id,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewBackendAddressPoolAddress(ctx, \"example-1\", \u0026lb.BackendAddressPoolAddressArgs{\n\t\t\tName: pulumi.String(\"address1\"),\n\t\t\tBackendAddressPoolId: pulumi.String(backend_pool_cr.Id),\n\t\t\tBackendAddressIpConfigurationId: pulumi.Any(backend_lb_R1.FrontendIpConfiguration[0].Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = lb.NewBackendAddressPoolAddress(ctx, \"example-2\", \u0026lb.BackendAddressPoolAddressArgs{\n\t\t\tName: pulumi.String(\"address2\"),\n\t\t\tBackendAddressPoolId: pulumi.String(backend_pool_cr.Id),\n\t\t\tBackendAddressIpConfigurationId: pulumi.Any(backend_lb_R2.FrontendIpConfiguration[0].Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.network.NetworkFunctions;\nimport com.pulumi.azure.network.inputs.GetVirtualNetworkArgs;\nimport com.pulumi.azure.lb.LbFunctions;\nimport com.pulumi.azure.lb.inputs.GetLBArgs;\nimport com.pulumi.azure.lb.inputs.GetBackendAddressPoolArgs;\nimport com.pulumi.azure.lb.BackendAddressPoolAddress;\nimport com.pulumi.azure.lb.BackendAddressPoolAddressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = NetworkFunctions.getVirtualNetwork(GetVirtualNetworkArgs.builder()\n .name(\"example-network\")\n .resourceGroupName(\"example-resources\")\n .build());\n\n final var exampleGetLB = LbFunctions.getLB(GetLBArgs.builder()\n .name(\"example-lb\")\n .resourceGroupName(\"example-resources\")\n .build());\n\n final var exampleGetBackendAddressPool = LbFunctions.getBackendAddressPool(GetBackendAddressPoolArgs.builder()\n .name(\"first\")\n .loadbalancerId(exampleGetLB.applyValue(getLBResult -\u003e getLBResult.id()))\n .build());\n\n var exampleBackendAddressPoolAddress = new BackendAddressPoolAddress(\"exampleBackendAddressPoolAddress\", BackendAddressPoolAddressArgs.builder()\n .name(\"example\")\n .backendAddressPoolId(exampleGetBackendAddressPool.applyValue(getBackendAddressPoolResult -\u003e getBackendAddressPoolResult.id()))\n .virtualNetworkId(example.applyValue(getVirtualNetworkResult -\u003e getVirtualNetworkResult.id()))\n .ipAddress(\"10.0.0.1\")\n .build());\n\n final var backend-pool-cr = LbFunctions.getBackendAddressPool(GetBackendAddressPoolArgs.builder()\n .name(\"globalLBBackendPool\")\n .loadbalancerId(exampleGetLB.applyValue(getLBResult -\u003e getLBResult.id()))\n .build());\n\n var example_1 = new BackendAddressPoolAddress(\"example-1\", BackendAddressPoolAddressArgs.builder()\n .name(\"address1\")\n .backendAddressPoolId(backend_pool_cr.id())\n .backendAddressIpConfigurationId(backend_lb_R1.frontendIpConfiguration()[0].id())\n .build());\n\n var example_2 = new BackendAddressPoolAddress(\"example-2\", BackendAddressPoolAddressArgs.builder()\n .name(\"address2\")\n .backendAddressPoolId(backend_pool_cr.id())\n .backendAddressIpConfigurationId(backend_lb_R2.frontendIpConfiguration()[0].id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleBackendAddressPoolAddress:\n type: azure:lb:BackendAddressPoolAddress\n name: example\n properties:\n name: example\n backendAddressPoolId: ${exampleGetBackendAddressPool.id}\n virtualNetworkId: ${example.id}\n ipAddress: 10.0.0.1\n example-1:\n type: azure:lb:BackendAddressPoolAddress\n properties:\n name: address1\n backendAddressPoolId: ${[\"backend-pool-cr\"].id}\n backendAddressIpConfigurationId: ${[\"backend-lb-R1\"].frontendIpConfiguration[0].id}\n example-2:\n type: azure:lb:BackendAddressPoolAddress\n properties:\n name: address2\n backendAddressPoolId: ${[\"backend-pool-cr\"].id}\n backendAddressIpConfigurationId: ${[\"backend-lb-R2\"].frontendIpConfiguration[0].id}\nvariables:\n example:\n fn::invoke:\n function: azure:network:getVirtualNetwork\n arguments:\n name: example-network\n resourceGroupName: example-resources\n exampleGetLB:\n fn::invoke:\n function: azure:lb:getLB\n arguments:\n name: example-lb\n resourceGroupName: example-resources\n exampleGetBackendAddressPool:\n fn::invoke:\n function: azure:lb:getBackendAddressPool\n arguments:\n name: first\n loadbalancerId: ${exampleGetLB.id}\n backend-pool-cr:\n fn::invoke:\n function: azure:lb:getBackendAddressPool\n arguments:\n name: globalLBBackendPool\n loadbalancerId: ${exampleGetLB.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackend Address Pool Addresses can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:lb/backendAddressPoolAddress:BackendAddressPoolAddress example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.Network/loadBalancers/loadBalancer1/backendAddressPools/backendAddressPool1/addresses/address1\n```\n\n", "properties": { "backendAddressIpConfigurationId": { "type": "string", @@ -208200,7 +208200,7 @@ } }, "azure:machinelearning/workspace:Workspace": { - "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleInsights = new azure.appinsights.Insights(\"example\", {\n name: \"workspace-example-ai\",\n location: example.location,\n resourceGroupName: example.name,\n applicationType: \"web\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"workspaceexamplekeyvault\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n});\nconst exampleAccount = new azure.storage.Account(\"example\", {\n name: \"workspacestorageaccount\",\n location: example.location,\n resourceGroupName: example.name,\n accountTier: \"Standard\",\n accountReplicationType: \"GRS\",\n});\nconst exampleWorkspace = new azure.machinelearning.Workspace(\"example\", {\n name: \"example-workspace\",\n location: example.location,\n resourceGroupName: example.name,\n applicationInsightsId: exampleInsights.id,\n keyVaultId: exampleKeyVault.id,\n storageAccountId: exampleAccount.id,\n identity: {\n type: \"SystemAssigned\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_insights = azure.appinsights.Insights(\"example\",\n name=\"workspace-example-ai\",\n location=example.location,\n resource_group_name=example.name,\n application_type=\"web\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"workspaceexamplekeyvault\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\")\nexample_account = azure.storage.Account(\"example\",\n name=\"workspacestorageaccount\",\n location=example.location,\n resource_group_name=example.name,\n account_tier=\"Standard\",\n account_replication_type=\"GRS\")\nexample_workspace = azure.machinelearning.Workspace(\"example\",\n name=\"example-workspace\",\n location=example.location,\n resource_group_name=example.name,\n application_insights_id=example_insights.id,\n key_vault_id=example_key_vault.id,\n storage_account_id=example_account.id,\n identity={\n \"type\": \"SystemAssigned\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleInsights = new Azure.AppInsights.Insights(\"example\", new()\n {\n Name = \"workspace-example-ai\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationType = \"web\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"workspaceexamplekeyvault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n });\n\n var exampleAccount = new Azure.Storage.Account(\"example\", new()\n {\n Name = \"workspacestorageaccount\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"GRS\",\n });\n\n var exampleWorkspace = new Azure.MachineLearning.Workspace(\"example\", new()\n {\n Name = \"example-workspace\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationInsightsId = exampleInsights.Id,\n KeyVaultId = exampleKeyVault.Id,\n StorageAccountId = exampleAccount.Id,\n Identity = new Azure.MachineLearning.Inputs.WorkspaceIdentityArgs\n {\n Type = \"SystemAssigned\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/appinsights\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/machinelearning\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleInsights, err := appinsights.NewInsights(ctx, \"example\", \u0026appinsights.InsightsArgs{\n\t\t\tName: pulumi.String(\"workspace-example-ai\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationType: pulumi.String(\"web\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"workspaceexamplekeyvault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccount, err := storage.NewAccount(ctx, \"example\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"workspacestorageaccount\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"GRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = machinelearning.NewWorkspace(ctx, \"example\", \u0026machinelearning.WorkspaceArgs{\n\t\t\tName: pulumi.String(\"example-workspace\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationInsightsId: exampleInsights.ID(),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tStorageAccountId: exampleAccount.ID(),\n\t\t\tIdentity: \u0026machinelearning.WorkspaceIdentityArgs{\n\t\t\t\tType: pulumi.String(\"SystemAssigned\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.appinsights.Insights;\nimport com.pulumi.azure.appinsights.InsightsArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.machinelearning.Workspace;\nimport com.pulumi.azure.machinelearning.WorkspaceArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceIdentityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleInsights = new Insights(\"exampleInsights\", InsightsArgs.builder()\n .name(\"workspace-example-ai\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationType(\"web\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"workspaceexamplekeyvault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .build());\n\n var exampleAccount = new Account(\"exampleAccount\", AccountArgs.builder()\n .name(\"workspacestorageaccount\")\n .location(example.location())\n .resourceGroupName(example.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"GRS\")\n .build());\n\n var exampleWorkspace = new Workspace(\"exampleWorkspace\", WorkspaceArgs.builder()\n .name(\"example-workspace\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationInsightsId(exampleInsights.id())\n .keyVaultId(exampleKeyVault.id())\n .storageAccountId(exampleAccount.id())\n .identity(WorkspaceIdentityArgs.builder()\n .type(\"SystemAssigned\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleInsights:\n type: azure:appinsights:Insights\n name: example\n properties:\n name: workspace-example-ai\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationType: web\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: workspaceexamplekeyvault\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n exampleAccount:\n type: azure:storage:Account\n name: example\n properties:\n name: workspacestorageaccount\n location: ${example.location}\n resourceGroupName: ${example.name}\n accountTier: Standard\n accountReplicationType: GRS\n exampleWorkspace:\n type: azure:machinelearning:Workspace\n name: example\n properties:\n name: example-workspace\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationInsightsId: ${exampleInsights.id}\n keyVaultId: ${exampleKeyVault.id}\n storageAccountId: ${exampleAccount.id}\n identity:\n type: SystemAssigned\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Data Encryption\n\n\u003e **NOTE:** The Key Vault must enable purge protection.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleInsights = new azure.appinsights.Insights(\"example\", {\n name: \"workspace-example-ai\",\n location: example.location,\n resourceGroupName: example.name,\n applicationType: \"web\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"workspaceexamplekeyvault\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n purgeProtectionEnabled: true,\n});\nconst exampleAccessPolicy = new azure.keyvault.AccessPolicy(\"example\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: current.then(current =\u003e current.objectId),\n keyPermissions: [\n \"Create\",\n \"Get\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n ],\n});\nconst exampleAccount = new azure.storage.Account(\"example\", {\n name: \"workspacestorageaccount\",\n location: example.location,\n resourceGroupName: example.name,\n accountTier: \"Standard\",\n accountReplicationType: \"GRS\",\n});\nconst exampleKey = new azure.keyvault.Key(\"example\", {\n name: \"workspaceexamplekeyvaultkey\",\n keyVaultId: exampleKeyVault.id,\n keyType: \"RSA\",\n keySize: 2048,\n keyOpts: [\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n}, {\n dependsOn: [\n exampleKeyVault,\n exampleAccessPolicy,\n ],\n});\nconst exampleWorkspace = new azure.machinelearning.Workspace(\"example\", {\n name: \"example-workspace\",\n location: example.location,\n resourceGroupName: example.name,\n applicationInsightsId: exampleInsights.id,\n keyVaultId: exampleKeyVault.id,\n storageAccountId: exampleAccount.id,\n identity: {\n type: \"SystemAssigned\",\n },\n encryption: {\n keyVaultId: exampleKeyVault.id,\n keyId: exampleKey.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_insights = azure.appinsights.Insights(\"example\",\n name=\"workspace-example-ai\",\n location=example.location,\n resource_group_name=example.name,\n application_type=\"web\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"workspaceexamplekeyvault\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\",\n purge_protection_enabled=True)\nexample_access_policy = azure.keyvault.AccessPolicy(\"example\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=current.object_id,\n key_permissions=[\n \"Create\",\n \"Get\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n ])\nexample_account = azure.storage.Account(\"example\",\n name=\"workspacestorageaccount\",\n location=example.location,\n resource_group_name=example.name,\n account_tier=\"Standard\",\n account_replication_type=\"GRS\")\nexample_key = azure.keyvault.Key(\"example\",\n name=\"workspaceexamplekeyvaultkey\",\n key_vault_id=example_key_vault.id,\n key_type=\"RSA\",\n key_size=2048,\n key_opts=[\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n example_key_vault,\n example_access_policy,\n ]))\nexample_workspace = azure.machinelearning.Workspace(\"example\",\n name=\"example-workspace\",\n location=example.location,\n resource_group_name=example.name,\n application_insights_id=example_insights.id,\n key_vault_id=example_key_vault.id,\n storage_account_id=example_account.id,\n identity={\n \"type\": \"SystemAssigned\",\n },\n encryption={\n \"key_vault_id\": example_key_vault.id,\n \"key_id\": example_key.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleInsights = new Azure.AppInsights.Insights(\"example\", new()\n {\n Name = \"workspace-example-ai\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationType = \"web\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"workspaceexamplekeyvault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n PurgeProtectionEnabled = true,\n });\n\n var exampleAccessPolicy = new Azure.KeyVault.AccessPolicy(\"example\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Get\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n },\n });\n\n var exampleAccount = new Azure.Storage.Account(\"example\", new()\n {\n Name = \"workspacestorageaccount\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"GRS\",\n });\n\n var exampleKey = new Azure.KeyVault.Key(\"example\", new()\n {\n Name = \"workspaceexamplekeyvaultkey\",\n KeyVaultId = exampleKeyVault.Id,\n KeyType = \"RSA\",\n KeySize = 2048,\n KeyOpts = new[]\n {\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n exampleKeyVault,\n exampleAccessPolicy,\n },\n });\n\n var exampleWorkspace = new Azure.MachineLearning.Workspace(\"example\", new()\n {\n Name = \"example-workspace\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationInsightsId = exampleInsights.Id,\n KeyVaultId = exampleKeyVault.Id,\n StorageAccountId = exampleAccount.Id,\n Identity = new Azure.MachineLearning.Inputs.WorkspaceIdentityArgs\n {\n Type = \"SystemAssigned\",\n },\n Encryption = new Azure.MachineLearning.Inputs.WorkspaceEncryptionArgs\n {\n KeyVaultId = exampleKeyVault.Id,\n KeyId = exampleKey.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/appinsights\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/machinelearning\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleInsights, err := appinsights.NewInsights(ctx, \"example\", \u0026appinsights.InsightsArgs{\n\t\t\tName: pulumi.String(\"workspace-example-ai\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationType: pulumi.String(\"web\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"workspaceexamplekeyvault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t\tPurgeProtectionEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccessPolicy, err := keyvault.NewAccessPolicy(ctx, \"example\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(current.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"GetRotationPolicy\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccount, err := storage.NewAccount(ctx, \"example\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"workspacestorageaccount\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"GRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKey, err := keyvault.NewKey(ctx, \"example\", \u0026keyvault.KeyArgs{\n\t\t\tName: pulumi.String(\"workspaceexamplekeyvaultkey\"),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tKeyType: pulumi.String(\"RSA\"),\n\t\t\tKeySize: pulumi.Int(2048),\n\t\t\tKeyOpts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"decrypt\"),\n\t\t\t\tpulumi.String(\"encrypt\"),\n\t\t\t\tpulumi.String(\"sign\"),\n\t\t\t\tpulumi.String(\"unwrapKey\"),\n\t\t\t\tpulumi.String(\"verify\"),\n\t\t\t\tpulumi.String(\"wrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleKeyVault,\n\t\t\texampleAccessPolicy,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = machinelearning.NewWorkspace(ctx, \"example\", \u0026machinelearning.WorkspaceArgs{\n\t\t\tName: pulumi.String(\"example-workspace\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationInsightsId: exampleInsights.ID(),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tStorageAccountId: exampleAccount.ID(),\n\t\t\tIdentity: \u0026machinelearning.WorkspaceIdentityArgs{\n\t\t\t\tType: pulumi.String(\"SystemAssigned\"),\n\t\t\t},\n\t\t\tEncryption: \u0026machinelearning.WorkspaceEncryptionArgs{\n\t\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\t\tKeyId: exampleKey.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.appinsights.Insights;\nimport com.pulumi.azure.appinsights.InsightsArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.keyvault.AccessPolicy;\nimport com.pulumi.azure.keyvault.AccessPolicyArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.keyvault.Key;\nimport com.pulumi.azure.keyvault.KeyArgs;\nimport com.pulumi.azure.machinelearning.Workspace;\nimport com.pulumi.azure.machinelearning.WorkspaceArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceIdentityArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceEncryptionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleInsights = new Insights(\"exampleInsights\", InsightsArgs.builder()\n .name(\"workspace-example-ai\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationType(\"web\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"workspaceexamplekeyvault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .purgeProtectionEnabled(true)\n .build());\n\n var exampleAccessPolicy = new AccessPolicy(\"exampleAccessPolicy\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .keyPermissions( \n \"Create\",\n \"Get\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\")\n .build());\n\n var exampleAccount = new Account(\"exampleAccount\", AccountArgs.builder()\n .name(\"workspacestorageaccount\")\n .location(example.location())\n .resourceGroupName(example.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"GRS\")\n .build());\n\n var exampleKey = new Key(\"exampleKey\", KeyArgs.builder()\n .name(\"workspaceexamplekeyvaultkey\")\n .keyVaultId(exampleKeyVault.id())\n .keyType(\"RSA\")\n .keySize(2048)\n .keyOpts( \n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n exampleKeyVault,\n exampleAccessPolicy)\n .build());\n\n var exampleWorkspace = new Workspace(\"exampleWorkspace\", WorkspaceArgs.builder()\n .name(\"example-workspace\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationInsightsId(exampleInsights.id())\n .keyVaultId(exampleKeyVault.id())\n .storageAccountId(exampleAccount.id())\n .identity(WorkspaceIdentityArgs.builder()\n .type(\"SystemAssigned\")\n .build())\n .encryption(WorkspaceEncryptionArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .keyId(exampleKey.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleInsights:\n type: azure:appinsights:Insights\n name: example\n properties:\n name: workspace-example-ai\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationType: web\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: workspaceexamplekeyvault\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n purgeProtectionEnabled: true\n exampleAccessPolicy:\n type: azure:keyvault:AccessPolicy\n name: example\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${current.objectId}\n keyPermissions:\n - Create\n - Get\n - Delete\n - Purge\n - GetRotationPolicy\n exampleAccount:\n type: azure:storage:Account\n name: example\n properties:\n name: workspacestorageaccount\n location: ${example.location}\n resourceGroupName: ${example.name}\n accountTier: Standard\n accountReplicationType: GRS\n exampleKey:\n type: azure:keyvault:Key\n name: example\n properties:\n name: workspaceexamplekeyvaultkey\n keyVaultId: ${exampleKeyVault.id}\n keyType: RSA\n keySize: 2048\n keyOpts:\n - decrypt\n - encrypt\n - sign\n - unwrapKey\n - verify\n - wrapKey\n options:\n dependsOn:\n - ${exampleKeyVault}\n - ${exampleAccessPolicy}\n exampleWorkspace:\n type: azure:machinelearning:Workspace\n name: example\n properties:\n name: example-workspace\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationInsightsId: ${exampleInsights.id}\n keyVaultId: ${exampleKeyVault.id}\n storageAccountId: ${exampleAccount.id}\n identity:\n type: SystemAssigned\n encryption:\n keyVaultId: ${exampleKeyVault.id}\n keyId: ${exampleKey.id}\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With User Assigned Identity And Data Encryption\n\n\u003e **NOTE:** The Key Vault must enable purge protection.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleInsights = new azure.appinsights.Insights(\"example\", {\n name: \"example-ai\",\n location: example.location,\n resourceGroupName: example.name,\n applicationType: \"web\",\n});\nconst exampleAccount = new azure.storage.Account(\"example\", {\n name: \"examplestorageaccount\",\n location: example.location,\n resourceGroupName: example.name,\n accountTier: \"Standard\",\n accountReplicationType: \"GRS\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"example-keyvalut\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n purgeProtectionEnabled: true,\n});\nconst exampleUserAssignedIdentity = new azure.authorization.UserAssignedIdentity(\"example\", {\n name: \"example-identity\",\n location: example.location,\n resourceGroupName: example.name,\n});\nconst example_identity = new azure.keyvault.AccessPolicy(\"example-identity\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: exampleUserAssignedIdentity.principalId,\n keyPermissions: [\n \"WrapKey\",\n \"UnwrapKey\",\n \"Get\",\n \"Recover\",\n ],\n secretPermissions: [\n \"Get\",\n \"List\",\n \"Set\",\n \"Delete\",\n \"Recover\",\n \"Backup\",\n \"Restore\",\n ],\n});\nconst example_sp = new azure.keyvault.AccessPolicy(\"example-sp\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: current.then(current =\u003e current.objectId),\n keyPermissions: [\n \"Get\",\n \"Create\",\n \"Recover\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n ],\n});\nconst test = azuread.getServicePrincipal({\n displayName: \"Azure Cosmos DB\",\n});\nconst example_cosmosdb = new azure.keyvault.AccessPolicy(\"example-cosmosdb\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: test.then(test =\u003e test.objectId),\n keyPermissions: [\n \"Get\",\n \"Recover\",\n \"UnwrapKey\",\n \"WrapKey\",\n ],\n}, {\n dependsOn: [\n test,\n current,\n ],\n});\nconst exampleKey = new azure.keyvault.Key(\"example\", {\n name: \"example-keyvaultkey\",\n keyVaultId: exampleKeyVault.id,\n keyType: \"RSA\",\n keySize: 2048,\n keyOpts: [\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n}, {\n dependsOn: [\n exampleKeyVault,\n example_sp,\n ],\n});\nconst example_role1 = new azure.authorization.Assignment(\"example-role1\", {\n scope: exampleKeyVault.id,\n roleDefinitionName: \"Contributor\",\n principalId: exampleUserAssignedIdentity.principalId,\n});\nconst example_role2 = new azure.authorization.Assignment(\"example-role2\", {\n scope: exampleAccount.id,\n roleDefinitionName: \"Storage Blob Data Contributor\",\n principalId: exampleUserAssignedIdentity.principalId,\n});\nconst example_role3 = new azure.authorization.Assignment(\"example-role3\", {\n scope: exampleAccount.id,\n roleDefinitionName: \"Contributor\",\n principalId: exampleUserAssignedIdentity.principalId,\n});\nconst example_role4 = new azure.authorization.Assignment(\"example-role4\", {\n scope: exampleInsights.id,\n roleDefinitionName: \"Contributor\",\n principalId: exampleUserAssignedIdentity.principalId,\n});\nconst exampleWorkspace = new azure.machinelearning.Workspace(\"example\", {\n name: \"example-workspace\",\n location: example.location,\n resourceGroupName: example.name,\n applicationInsightsId: exampleInsights.id,\n keyVaultId: exampleKeyVault.id,\n storageAccountId: exampleAccount.id,\n highBusinessImpact: true,\n primaryUserAssignedIdentity: exampleUserAssignedIdentity.id,\n identity: {\n type: \"UserAssigned\",\n identityIds: [exampleUserAssignedIdentity.id],\n },\n encryption: {\n userAssignedIdentityId: exampleUserAssignedIdentity.id,\n keyVaultId: exampleKeyVault.id,\n keyId: exampleKey.id,\n },\n}, {\n dependsOn: [\n example_role1,\n example_role2,\n example_role3,\n example_role4,\n example_cosmosdb,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\nimport pulumi_azuread as azuread\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_insights = azure.appinsights.Insights(\"example\",\n name=\"example-ai\",\n location=example.location,\n resource_group_name=example.name,\n application_type=\"web\")\nexample_account = azure.storage.Account(\"example\",\n name=\"examplestorageaccount\",\n location=example.location,\n resource_group_name=example.name,\n account_tier=\"Standard\",\n account_replication_type=\"GRS\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"example-keyvalut\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\",\n purge_protection_enabled=True)\nexample_user_assigned_identity = azure.authorization.UserAssignedIdentity(\"example\",\n name=\"example-identity\",\n location=example.location,\n resource_group_name=example.name)\nexample_identity = azure.keyvault.AccessPolicy(\"example-identity\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=example_user_assigned_identity.principal_id,\n key_permissions=[\n \"WrapKey\",\n \"UnwrapKey\",\n \"Get\",\n \"Recover\",\n ],\n secret_permissions=[\n \"Get\",\n \"List\",\n \"Set\",\n \"Delete\",\n \"Recover\",\n \"Backup\",\n \"Restore\",\n ])\nexample_sp = azure.keyvault.AccessPolicy(\"example-sp\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=current.object_id,\n key_permissions=[\n \"Get\",\n \"Create\",\n \"Recover\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n ])\ntest = azuread.get_service_principal(display_name=\"Azure Cosmos DB\")\nexample_cosmosdb = azure.keyvault.AccessPolicy(\"example-cosmosdb\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=test.object_id,\n key_permissions=[\n \"Get\",\n \"Recover\",\n \"UnwrapKey\",\n \"WrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n test,\n current,\n ]))\nexample_key = azure.keyvault.Key(\"example\",\n name=\"example-keyvaultkey\",\n key_vault_id=example_key_vault.id,\n key_type=\"RSA\",\n key_size=2048,\n key_opts=[\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n example_key_vault,\n example_sp,\n ]))\nexample_role1 = azure.authorization.Assignment(\"example-role1\",\n scope=example_key_vault.id,\n role_definition_name=\"Contributor\",\n principal_id=example_user_assigned_identity.principal_id)\nexample_role2 = azure.authorization.Assignment(\"example-role2\",\n scope=example_account.id,\n role_definition_name=\"Storage Blob Data Contributor\",\n principal_id=example_user_assigned_identity.principal_id)\nexample_role3 = azure.authorization.Assignment(\"example-role3\",\n scope=example_account.id,\n role_definition_name=\"Contributor\",\n principal_id=example_user_assigned_identity.principal_id)\nexample_role4 = azure.authorization.Assignment(\"example-role4\",\n scope=example_insights.id,\n role_definition_name=\"Contributor\",\n principal_id=example_user_assigned_identity.principal_id)\nexample_workspace = azure.machinelearning.Workspace(\"example\",\n name=\"example-workspace\",\n location=example.location,\n resource_group_name=example.name,\n application_insights_id=example_insights.id,\n key_vault_id=example_key_vault.id,\n storage_account_id=example_account.id,\n high_business_impact=True,\n primary_user_assigned_identity=example_user_assigned_identity.id,\n identity={\n \"type\": \"UserAssigned\",\n \"identity_ids\": [example_user_assigned_identity.id],\n },\n encryption={\n \"user_assigned_identity_id\": example_user_assigned_identity.id,\n \"key_vault_id\": example_key_vault.id,\n \"key_id\": example_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n example_role1,\n example_role2,\n example_role3,\n example_role4,\n example_cosmosdb,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleInsights = new Azure.AppInsights.Insights(\"example\", new()\n {\n Name = \"example-ai\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationType = \"web\",\n });\n\n var exampleAccount = new Azure.Storage.Account(\"example\", new()\n {\n Name = \"examplestorageaccount\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"GRS\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"example-keyvalut\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n PurgeProtectionEnabled = true,\n });\n\n var exampleUserAssignedIdentity = new Azure.Authorization.UserAssignedIdentity(\"example\", new()\n {\n Name = \"example-identity\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n });\n\n var example_identity = new Azure.KeyVault.AccessPolicy(\"example-identity\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = exampleUserAssignedIdentity.PrincipalId,\n KeyPermissions = new[]\n {\n \"WrapKey\",\n \"UnwrapKey\",\n \"Get\",\n \"Recover\",\n },\n SecretPermissions = new[]\n {\n \"Get\",\n \"List\",\n \"Set\",\n \"Delete\",\n \"Recover\",\n \"Backup\",\n \"Restore\",\n },\n });\n\n var example_sp = new Azure.KeyVault.AccessPolicy(\"example-sp\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Get\",\n \"Create\",\n \"Recover\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n },\n });\n\n var test = AzureAD.GetServicePrincipal.Invoke(new()\n {\n DisplayName = \"Azure Cosmos DB\",\n });\n\n var example_cosmosdb = new Azure.KeyVault.AccessPolicy(\"example-cosmosdb\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = test.Apply(getServicePrincipalResult =\u003e getServicePrincipalResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Get\",\n \"Recover\",\n \"UnwrapKey\",\n \"WrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n test,\n current,\n },\n });\n\n var exampleKey = new Azure.KeyVault.Key(\"example\", new()\n {\n Name = \"example-keyvaultkey\",\n KeyVaultId = exampleKeyVault.Id,\n KeyType = \"RSA\",\n KeySize = 2048,\n KeyOpts = new[]\n {\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n exampleKeyVault,\n example_sp,\n },\n });\n\n var example_role1 = new Azure.Authorization.Assignment(\"example-role1\", new()\n {\n Scope = exampleKeyVault.Id,\n RoleDefinitionName = \"Contributor\",\n PrincipalId = exampleUserAssignedIdentity.PrincipalId,\n });\n\n var example_role2 = new Azure.Authorization.Assignment(\"example-role2\", new()\n {\n Scope = exampleAccount.Id,\n RoleDefinitionName = \"Storage Blob Data Contributor\",\n PrincipalId = exampleUserAssignedIdentity.PrincipalId,\n });\n\n var example_role3 = new Azure.Authorization.Assignment(\"example-role3\", new()\n {\n Scope = exampleAccount.Id,\n RoleDefinitionName = \"Contributor\",\n PrincipalId = exampleUserAssignedIdentity.PrincipalId,\n });\n\n var example_role4 = new Azure.Authorization.Assignment(\"example-role4\", new()\n {\n Scope = exampleInsights.Id,\n RoleDefinitionName = \"Contributor\",\n PrincipalId = exampleUserAssignedIdentity.PrincipalId,\n });\n\n var exampleWorkspace = new Azure.MachineLearning.Workspace(\"example\", new()\n {\n Name = \"example-workspace\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationInsightsId = exampleInsights.Id,\n KeyVaultId = exampleKeyVault.Id,\n StorageAccountId = exampleAccount.Id,\n HighBusinessImpact = true,\n PrimaryUserAssignedIdentity = exampleUserAssignedIdentity.Id,\n Identity = new Azure.MachineLearning.Inputs.WorkspaceIdentityArgs\n {\n Type = \"UserAssigned\",\n IdentityIds = new[]\n {\n exampleUserAssignedIdentity.Id,\n },\n },\n Encryption = new Azure.MachineLearning.Inputs.WorkspaceEncryptionArgs\n {\n UserAssignedIdentityId = exampleUserAssignedIdentity.Id,\n KeyVaultId = exampleKeyVault.Id,\n KeyId = exampleKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example_role1,\n example_role2,\n example_role3,\n example_role4,\n example_cosmosdb,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/appinsights\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/machinelearning\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleInsights, err := appinsights.NewInsights(ctx, \"example\", \u0026appinsights.InsightsArgs{\n\t\t\tName: pulumi.String(\"example-ai\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationType: pulumi.String(\"web\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccount, err := storage.NewAccount(ctx, \"example\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"examplestorageaccount\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"GRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"example-keyvalut\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t\tPurgeProtectionEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleUserAssignedIdentity, err := authorization.NewUserAssignedIdentity(ctx, \"example\", \u0026authorization.UserAssignedIdentityArgs{\n\t\t\tName: pulumi.String(\"example-identity\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-identity\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: exampleUserAssignedIdentity.PrincipalId,\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"WrapKey\"),\n\t\t\t\tpulumi.String(\"UnwrapKey\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t},\n\t\t\tSecretPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Set\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Backup\"),\n\t\t\t\tpulumi.String(\"Restore\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-sp\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(current.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"GetRotationPolicy\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := azuread.LookupServicePrincipal(ctx, \u0026azuread.LookupServicePrincipalArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"Azure Cosmos DB\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-cosmosdb\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(test.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"UnwrapKey\"),\n\t\t\t\tpulumi.String(\"WrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\ttest,\n\t\t\tcurrent,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKey, err := keyvault.NewKey(ctx, \"example\", \u0026keyvault.KeyArgs{\n\t\t\tName: pulumi.String(\"example-keyvaultkey\"),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tKeyType: pulumi.String(\"RSA\"),\n\t\t\tKeySize: pulumi.Int(2048),\n\t\t\tKeyOpts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"decrypt\"),\n\t\t\t\tpulumi.String(\"encrypt\"),\n\t\t\t\tpulumi.String(\"sign\"),\n\t\t\t\tpulumi.String(\"unwrapKey\"),\n\t\t\t\tpulumi.String(\"verify\"),\n\t\t\t\tpulumi.String(\"wrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleKeyVault,\n\t\t\texample_sp,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = authorization.NewAssignment(ctx, \"example-role1\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleKeyVault.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Contributor\"),\n\t\t\tPrincipalId: exampleUserAssignedIdentity.PrincipalId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = authorization.NewAssignment(ctx, \"example-role2\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleAccount.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Storage Blob Data Contributor\"),\n\t\t\tPrincipalId: exampleUserAssignedIdentity.PrincipalId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = authorization.NewAssignment(ctx, \"example-role3\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleAccount.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Contributor\"),\n\t\t\tPrincipalId: exampleUserAssignedIdentity.PrincipalId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = authorization.NewAssignment(ctx, \"example-role4\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleInsights.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Contributor\"),\n\t\t\tPrincipalId: exampleUserAssignedIdentity.PrincipalId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = machinelearning.NewWorkspace(ctx, \"example\", \u0026machinelearning.WorkspaceArgs{\n\t\t\tName: pulumi.String(\"example-workspace\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationInsightsId: exampleInsights.ID(),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tStorageAccountId: exampleAccount.ID(),\n\t\t\tHighBusinessImpact: pulumi.Bool(true),\n\t\t\tPrimaryUserAssignedIdentity: exampleUserAssignedIdentity.ID(),\n\t\t\tIdentity: \u0026machinelearning.WorkspaceIdentityArgs{\n\t\t\t\tType: pulumi.String(\"UserAssigned\"),\n\t\t\t\tIdentityIds: pulumi.StringArray{\n\t\t\t\t\texampleUserAssignedIdentity.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEncryption: \u0026machinelearning.WorkspaceEncryptionArgs{\n\t\t\t\tUserAssignedIdentityId: exampleUserAssignedIdentity.ID(),\n\t\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\t\tKeyId: exampleKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample_role1,\n\t\t\texample_role2,\n\t\t\texample_role3,\n\t\t\texample_role4,\n\t\t\texample_cosmosdb,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.appinsights.Insights;\nimport com.pulumi.azure.appinsights.InsightsArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.authorization.UserAssignedIdentity;\nimport com.pulumi.azure.authorization.UserAssignedIdentityArgs;\nimport com.pulumi.azure.keyvault.AccessPolicy;\nimport com.pulumi.azure.keyvault.AccessPolicyArgs;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.inputs.GetServicePrincipalArgs;\nimport com.pulumi.azure.keyvault.Key;\nimport com.pulumi.azure.keyvault.KeyArgs;\nimport com.pulumi.azure.authorization.Assignment;\nimport com.pulumi.azure.authorization.AssignmentArgs;\nimport com.pulumi.azure.machinelearning.Workspace;\nimport com.pulumi.azure.machinelearning.WorkspaceArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceIdentityArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceEncryptionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleInsights = new Insights(\"exampleInsights\", InsightsArgs.builder()\n .name(\"example-ai\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationType(\"web\")\n .build());\n\n var exampleAccount = new Account(\"exampleAccount\", AccountArgs.builder()\n .name(\"examplestorageaccount\")\n .location(example.location())\n .resourceGroupName(example.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"GRS\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"example-keyvalut\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .purgeProtectionEnabled(true)\n .build());\n\n var exampleUserAssignedIdentity = new UserAssignedIdentity(\"exampleUserAssignedIdentity\", UserAssignedIdentityArgs.builder()\n .name(\"example-identity\")\n .location(example.location())\n .resourceGroupName(example.name())\n .build());\n\n var example_identity = new AccessPolicy(\"example-identity\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(exampleUserAssignedIdentity.principalId())\n .keyPermissions( \n \"WrapKey\",\n \"UnwrapKey\",\n \"Get\",\n \"Recover\")\n .secretPermissions( \n \"Get\",\n \"List\",\n \"Set\",\n \"Delete\",\n \"Recover\",\n \"Backup\",\n \"Restore\")\n .build());\n\n var example_sp = new AccessPolicy(\"example-sp\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .keyPermissions( \n \"Get\",\n \"Create\",\n \"Recover\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\")\n .build());\n\n final var test = AzureadFunctions.getServicePrincipal(GetServicePrincipalArgs.builder()\n .displayName(\"Azure Cosmos DB\")\n .build());\n\n var example_cosmosdb = new AccessPolicy(\"example-cosmosdb\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(test.applyValue(getServicePrincipalResult -\u003e getServicePrincipalResult.objectId()))\n .keyPermissions( \n \"Get\",\n \"Recover\",\n \"UnwrapKey\",\n \"WrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n test.applyValue(getServicePrincipalResult -\u003e getServicePrincipalResult),\n current.applyValue(getClientConfigResult -\u003e getClientConfigResult))\n .build());\n\n var exampleKey = new Key(\"exampleKey\", KeyArgs.builder()\n .name(\"example-keyvaultkey\")\n .keyVaultId(exampleKeyVault.id())\n .keyType(\"RSA\")\n .keySize(2048)\n .keyOpts( \n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n exampleKeyVault,\n example_sp)\n .build());\n\n var example_role1 = new Assignment(\"example-role1\", AssignmentArgs.builder()\n .scope(exampleKeyVault.id())\n .roleDefinitionName(\"Contributor\")\n .principalId(exampleUserAssignedIdentity.principalId())\n .build());\n\n var example_role2 = new Assignment(\"example-role2\", AssignmentArgs.builder()\n .scope(exampleAccount.id())\n .roleDefinitionName(\"Storage Blob Data Contributor\")\n .principalId(exampleUserAssignedIdentity.principalId())\n .build());\n\n var example_role3 = new Assignment(\"example-role3\", AssignmentArgs.builder()\n .scope(exampleAccount.id())\n .roleDefinitionName(\"Contributor\")\n .principalId(exampleUserAssignedIdentity.principalId())\n .build());\n\n var example_role4 = new Assignment(\"example-role4\", AssignmentArgs.builder()\n .scope(exampleInsights.id())\n .roleDefinitionName(\"Contributor\")\n .principalId(exampleUserAssignedIdentity.principalId())\n .build());\n\n var exampleWorkspace = new Workspace(\"exampleWorkspace\", WorkspaceArgs.builder()\n .name(\"example-workspace\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationInsightsId(exampleInsights.id())\n .keyVaultId(exampleKeyVault.id())\n .storageAccountId(exampleAccount.id())\n .highBusinessImpact(true)\n .primaryUserAssignedIdentity(exampleUserAssignedIdentity.id())\n .identity(WorkspaceIdentityArgs.builder()\n .type(\"UserAssigned\")\n .identityIds(exampleUserAssignedIdentity.id())\n .build())\n .encryption(WorkspaceEncryptionArgs.builder()\n .userAssignedIdentityId(exampleUserAssignedIdentity.id())\n .keyVaultId(exampleKeyVault.id())\n .keyId(exampleKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n example_role1,\n example_role2,\n example_role3,\n example_role4,\n example_cosmosdb)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleInsights:\n type: azure:appinsights:Insights\n name: example\n properties:\n name: example-ai\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationType: web\n exampleAccount:\n type: azure:storage:Account\n name: example\n properties:\n name: examplestorageaccount\n location: ${example.location}\n resourceGroupName: ${example.name}\n accountTier: Standard\n accountReplicationType: GRS\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: example-keyvalut\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n purgeProtectionEnabled: true\n exampleUserAssignedIdentity:\n type: azure:authorization:UserAssignedIdentity\n name: example\n properties:\n name: example-identity\n location: ${example.location}\n resourceGroupName: ${example.name}\n example-identity:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${exampleUserAssignedIdentity.principalId}\n keyPermissions:\n - WrapKey\n - UnwrapKey\n - Get\n - Recover\n secretPermissions:\n - Get\n - List\n - Set\n - Delete\n - Recover\n - Backup\n - Restore\n example-sp:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${current.objectId}\n keyPermissions:\n - Get\n - Create\n - Recover\n - Delete\n - Purge\n - GetRotationPolicy\n example-cosmosdb:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${test.objectId}\n keyPermissions:\n - Get\n - Recover\n - UnwrapKey\n - WrapKey\n options:\n dependsOn:\n - ${test}\n - ${current}\n exampleKey:\n type: azure:keyvault:Key\n name: example\n properties:\n name: example-keyvaultkey\n keyVaultId: ${exampleKeyVault.id}\n keyType: RSA\n keySize: 2048\n keyOpts:\n - decrypt\n - encrypt\n - sign\n - unwrapKey\n - verify\n - wrapKey\n options:\n dependsOn:\n - ${exampleKeyVault}\n - ${[\"example-sp\"]}\n example-role1:\n type: azure:authorization:Assignment\n properties:\n scope: ${exampleKeyVault.id}\n roleDefinitionName: Contributor\n principalId: ${exampleUserAssignedIdentity.principalId}\n example-role2:\n type: azure:authorization:Assignment\n properties:\n scope: ${exampleAccount.id}\n roleDefinitionName: Storage Blob Data Contributor\n principalId: ${exampleUserAssignedIdentity.principalId}\n example-role3:\n type: azure:authorization:Assignment\n properties:\n scope: ${exampleAccount.id}\n roleDefinitionName: Contributor\n principalId: ${exampleUserAssignedIdentity.principalId}\n example-role4:\n type: azure:authorization:Assignment\n properties:\n scope: ${exampleInsights.id}\n roleDefinitionName: Contributor\n principalId: ${exampleUserAssignedIdentity.principalId}\n exampleWorkspace:\n type: azure:machinelearning:Workspace\n name: example\n properties:\n name: example-workspace\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationInsightsId: ${exampleInsights.id}\n keyVaultId: ${exampleKeyVault.id}\n storageAccountId: ${exampleAccount.id}\n highBusinessImpact: true\n primaryUserAssignedIdentity: ${exampleUserAssignedIdentity.id}\n identity:\n type: UserAssigned\n identityIds:\n - ${exampleUserAssignedIdentity.id}\n encryption:\n userAssignedIdentityId: ${exampleUserAssignedIdentity.id}\n keyVaultId: ${exampleKeyVault.id}\n keyId: ${exampleKey.id}\n options:\n dependsOn:\n - ${[\"example-role1\"]}\n - ${[\"example-role2\"]}\n - ${[\"example-role3\"]}\n - ${[\"example-role4\"]}\n - ${[\"example-cosmosdb\"]}\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n test:\n fn::invoke:\n function: azuread:getServicePrincipal\n arguments:\n displayName: Azure Cosmos DB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMachine Learning Workspace can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:machinelearning/workspace:Workspace example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.MachineLearningServices/workspaces/workspace1\n```\n\n", + "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleInsights = new azure.appinsights.Insights(\"example\", {\n name: \"workspace-example-ai\",\n location: example.location,\n resourceGroupName: example.name,\n applicationType: \"web\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"workspaceexamplekeyvault\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n});\nconst exampleAccount = new azure.storage.Account(\"example\", {\n name: \"workspacestorageaccount\",\n location: example.location,\n resourceGroupName: example.name,\n accountTier: \"Standard\",\n accountReplicationType: \"GRS\",\n});\nconst exampleWorkspace = new azure.machinelearning.Workspace(\"example\", {\n name: \"example-workspace\",\n location: example.location,\n resourceGroupName: example.name,\n applicationInsightsId: exampleInsights.id,\n keyVaultId: exampleKeyVault.id,\n storageAccountId: exampleAccount.id,\n identity: {\n type: \"SystemAssigned\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_insights = azure.appinsights.Insights(\"example\",\n name=\"workspace-example-ai\",\n location=example.location,\n resource_group_name=example.name,\n application_type=\"web\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"workspaceexamplekeyvault\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\")\nexample_account = azure.storage.Account(\"example\",\n name=\"workspacestorageaccount\",\n location=example.location,\n resource_group_name=example.name,\n account_tier=\"Standard\",\n account_replication_type=\"GRS\")\nexample_workspace = azure.machinelearning.Workspace(\"example\",\n name=\"example-workspace\",\n location=example.location,\n resource_group_name=example.name,\n application_insights_id=example_insights.id,\n key_vault_id=example_key_vault.id,\n storage_account_id=example_account.id,\n identity={\n \"type\": \"SystemAssigned\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleInsights = new Azure.AppInsights.Insights(\"example\", new()\n {\n Name = \"workspace-example-ai\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationType = \"web\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"workspaceexamplekeyvault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n });\n\n var exampleAccount = new Azure.Storage.Account(\"example\", new()\n {\n Name = \"workspacestorageaccount\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"GRS\",\n });\n\n var exampleWorkspace = new Azure.MachineLearning.Workspace(\"example\", new()\n {\n Name = \"example-workspace\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationInsightsId = exampleInsights.Id,\n KeyVaultId = exampleKeyVault.Id,\n StorageAccountId = exampleAccount.Id,\n Identity = new Azure.MachineLearning.Inputs.WorkspaceIdentityArgs\n {\n Type = \"SystemAssigned\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/appinsights\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/machinelearning\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleInsights, err := appinsights.NewInsights(ctx, \"example\", \u0026appinsights.InsightsArgs{\n\t\t\tName: pulumi.String(\"workspace-example-ai\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationType: pulumi.String(\"web\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"workspaceexamplekeyvault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccount, err := storage.NewAccount(ctx, \"example\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"workspacestorageaccount\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"GRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = machinelearning.NewWorkspace(ctx, \"example\", \u0026machinelearning.WorkspaceArgs{\n\t\t\tName: pulumi.String(\"example-workspace\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationInsightsId: exampleInsights.ID(),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tStorageAccountId: exampleAccount.ID(),\n\t\t\tIdentity: \u0026machinelearning.WorkspaceIdentityArgs{\n\t\t\t\tType: pulumi.String(\"SystemAssigned\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.appinsights.Insights;\nimport com.pulumi.azure.appinsights.InsightsArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.machinelearning.Workspace;\nimport com.pulumi.azure.machinelearning.WorkspaceArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceIdentityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleInsights = new Insights(\"exampleInsights\", InsightsArgs.builder()\n .name(\"workspace-example-ai\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationType(\"web\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"workspaceexamplekeyvault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .build());\n\n var exampleAccount = new Account(\"exampleAccount\", AccountArgs.builder()\n .name(\"workspacestorageaccount\")\n .location(example.location())\n .resourceGroupName(example.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"GRS\")\n .build());\n\n var exampleWorkspace = new Workspace(\"exampleWorkspace\", WorkspaceArgs.builder()\n .name(\"example-workspace\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationInsightsId(exampleInsights.id())\n .keyVaultId(exampleKeyVault.id())\n .storageAccountId(exampleAccount.id())\n .identity(WorkspaceIdentityArgs.builder()\n .type(\"SystemAssigned\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleInsights:\n type: azure:appinsights:Insights\n name: example\n properties:\n name: workspace-example-ai\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationType: web\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: workspaceexamplekeyvault\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n exampleAccount:\n type: azure:storage:Account\n name: example\n properties:\n name: workspacestorageaccount\n location: ${example.location}\n resourceGroupName: ${example.name}\n accountTier: Standard\n accountReplicationType: GRS\n exampleWorkspace:\n type: azure:machinelearning:Workspace\n name: example\n properties:\n name: example-workspace\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationInsightsId: ${exampleInsights.id}\n keyVaultId: ${exampleKeyVault.id}\n storageAccountId: ${exampleAccount.id}\n identity:\n type: SystemAssigned\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With Data Encryption\n\n\u003e **NOTE:** The Key Vault must enable purge protection.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleInsights = new azure.appinsights.Insights(\"example\", {\n name: \"workspace-example-ai\",\n location: example.location,\n resourceGroupName: example.name,\n applicationType: \"web\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"workspaceexamplekeyvault\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n purgeProtectionEnabled: true,\n});\nconst exampleAccessPolicy = new azure.keyvault.AccessPolicy(\"example\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: current.then(current =\u003e current.objectId),\n keyPermissions: [\n \"Create\",\n \"Get\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n ],\n});\nconst exampleAccount = new azure.storage.Account(\"example\", {\n name: \"workspacestorageaccount\",\n location: example.location,\n resourceGroupName: example.name,\n accountTier: \"Standard\",\n accountReplicationType: \"GRS\",\n});\nconst exampleKey = new azure.keyvault.Key(\"example\", {\n name: \"workspaceexamplekeyvaultkey\",\n keyVaultId: exampleKeyVault.id,\n keyType: \"RSA\",\n keySize: 2048,\n keyOpts: [\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n}, {\n dependsOn: [\n exampleKeyVault,\n exampleAccessPolicy,\n ],\n});\nconst exampleWorkspace = new azure.machinelearning.Workspace(\"example\", {\n name: \"example-workspace\",\n location: example.location,\n resourceGroupName: example.name,\n applicationInsightsId: exampleInsights.id,\n keyVaultId: exampleKeyVault.id,\n storageAccountId: exampleAccount.id,\n identity: {\n type: \"SystemAssigned\",\n },\n encryption: {\n keyVaultId: exampleKeyVault.id,\n keyId: exampleKey.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_insights = azure.appinsights.Insights(\"example\",\n name=\"workspace-example-ai\",\n location=example.location,\n resource_group_name=example.name,\n application_type=\"web\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"workspaceexamplekeyvault\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\",\n purge_protection_enabled=True)\nexample_access_policy = azure.keyvault.AccessPolicy(\"example\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=current.object_id,\n key_permissions=[\n \"Create\",\n \"Get\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n ])\nexample_account = azure.storage.Account(\"example\",\n name=\"workspacestorageaccount\",\n location=example.location,\n resource_group_name=example.name,\n account_tier=\"Standard\",\n account_replication_type=\"GRS\")\nexample_key = azure.keyvault.Key(\"example\",\n name=\"workspaceexamplekeyvaultkey\",\n key_vault_id=example_key_vault.id,\n key_type=\"RSA\",\n key_size=2048,\n key_opts=[\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n example_key_vault,\n example_access_policy,\n ]))\nexample_workspace = azure.machinelearning.Workspace(\"example\",\n name=\"example-workspace\",\n location=example.location,\n resource_group_name=example.name,\n application_insights_id=example_insights.id,\n key_vault_id=example_key_vault.id,\n storage_account_id=example_account.id,\n identity={\n \"type\": \"SystemAssigned\",\n },\n encryption={\n \"key_vault_id\": example_key_vault.id,\n \"key_id\": example_key.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleInsights = new Azure.AppInsights.Insights(\"example\", new()\n {\n Name = \"workspace-example-ai\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationType = \"web\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"workspaceexamplekeyvault\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n PurgeProtectionEnabled = true,\n });\n\n var exampleAccessPolicy = new Azure.KeyVault.AccessPolicy(\"example\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Create\",\n \"Get\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n },\n });\n\n var exampleAccount = new Azure.Storage.Account(\"example\", new()\n {\n Name = \"workspacestorageaccount\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"GRS\",\n });\n\n var exampleKey = new Azure.KeyVault.Key(\"example\", new()\n {\n Name = \"workspaceexamplekeyvaultkey\",\n KeyVaultId = exampleKeyVault.Id,\n KeyType = \"RSA\",\n KeySize = 2048,\n KeyOpts = new[]\n {\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n exampleKeyVault,\n exampleAccessPolicy,\n },\n });\n\n var exampleWorkspace = new Azure.MachineLearning.Workspace(\"example\", new()\n {\n Name = \"example-workspace\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationInsightsId = exampleInsights.Id,\n KeyVaultId = exampleKeyVault.Id,\n StorageAccountId = exampleAccount.Id,\n Identity = new Azure.MachineLearning.Inputs.WorkspaceIdentityArgs\n {\n Type = \"SystemAssigned\",\n },\n Encryption = new Azure.MachineLearning.Inputs.WorkspaceEncryptionArgs\n {\n KeyVaultId = exampleKeyVault.Id,\n KeyId = exampleKey.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/appinsights\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/machinelearning\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleInsights, err := appinsights.NewInsights(ctx, \"example\", \u0026appinsights.InsightsArgs{\n\t\t\tName: pulumi.String(\"workspace-example-ai\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationType: pulumi.String(\"web\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"workspaceexamplekeyvault\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t\tPurgeProtectionEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccessPolicy, err := keyvault.NewAccessPolicy(ctx, \"example\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(current.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"GetRotationPolicy\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccount, err := storage.NewAccount(ctx, \"example\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"workspacestorageaccount\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"GRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKey, err := keyvault.NewKey(ctx, \"example\", \u0026keyvault.KeyArgs{\n\t\t\tName: pulumi.String(\"workspaceexamplekeyvaultkey\"),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tKeyType: pulumi.String(\"RSA\"),\n\t\t\tKeySize: pulumi.Int(2048),\n\t\t\tKeyOpts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"decrypt\"),\n\t\t\t\tpulumi.String(\"encrypt\"),\n\t\t\t\tpulumi.String(\"sign\"),\n\t\t\t\tpulumi.String(\"unwrapKey\"),\n\t\t\t\tpulumi.String(\"verify\"),\n\t\t\t\tpulumi.String(\"wrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleKeyVault,\n\t\t\texampleAccessPolicy,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = machinelearning.NewWorkspace(ctx, \"example\", \u0026machinelearning.WorkspaceArgs{\n\t\t\tName: pulumi.String(\"example-workspace\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationInsightsId: exampleInsights.ID(),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tStorageAccountId: exampleAccount.ID(),\n\t\t\tIdentity: \u0026machinelearning.WorkspaceIdentityArgs{\n\t\t\t\tType: pulumi.String(\"SystemAssigned\"),\n\t\t\t},\n\t\t\tEncryption: \u0026machinelearning.WorkspaceEncryptionArgs{\n\t\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\t\tKeyId: exampleKey.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.appinsights.Insights;\nimport com.pulumi.azure.appinsights.InsightsArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.keyvault.AccessPolicy;\nimport com.pulumi.azure.keyvault.AccessPolicyArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.keyvault.Key;\nimport com.pulumi.azure.keyvault.KeyArgs;\nimport com.pulumi.azure.machinelearning.Workspace;\nimport com.pulumi.azure.machinelearning.WorkspaceArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceIdentityArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceEncryptionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleInsights = new Insights(\"exampleInsights\", InsightsArgs.builder()\n .name(\"workspace-example-ai\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationType(\"web\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"workspaceexamplekeyvault\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .purgeProtectionEnabled(true)\n .build());\n\n var exampleAccessPolicy = new AccessPolicy(\"exampleAccessPolicy\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .keyPermissions( \n \"Create\",\n \"Get\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\")\n .build());\n\n var exampleAccount = new Account(\"exampleAccount\", AccountArgs.builder()\n .name(\"workspacestorageaccount\")\n .location(example.location())\n .resourceGroupName(example.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"GRS\")\n .build());\n\n var exampleKey = new Key(\"exampleKey\", KeyArgs.builder()\n .name(\"workspaceexamplekeyvaultkey\")\n .keyVaultId(exampleKeyVault.id())\n .keyType(\"RSA\")\n .keySize(2048)\n .keyOpts( \n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n exampleKeyVault,\n exampleAccessPolicy)\n .build());\n\n var exampleWorkspace = new Workspace(\"exampleWorkspace\", WorkspaceArgs.builder()\n .name(\"example-workspace\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationInsightsId(exampleInsights.id())\n .keyVaultId(exampleKeyVault.id())\n .storageAccountId(exampleAccount.id())\n .identity(WorkspaceIdentityArgs.builder()\n .type(\"SystemAssigned\")\n .build())\n .encryption(WorkspaceEncryptionArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .keyId(exampleKey.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleInsights:\n type: azure:appinsights:Insights\n name: example\n properties:\n name: workspace-example-ai\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationType: web\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: workspaceexamplekeyvault\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n purgeProtectionEnabled: true\n exampleAccessPolicy:\n type: azure:keyvault:AccessPolicy\n name: example\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${current.objectId}\n keyPermissions:\n - Create\n - Get\n - Delete\n - Purge\n - GetRotationPolicy\n exampleAccount:\n type: azure:storage:Account\n name: example\n properties:\n name: workspacestorageaccount\n location: ${example.location}\n resourceGroupName: ${example.name}\n accountTier: Standard\n accountReplicationType: GRS\n exampleKey:\n type: azure:keyvault:Key\n name: example\n properties:\n name: workspaceexamplekeyvaultkey\n keyVaultId: ${exampleKeyVault.id}\n keyType: RSA\n keySize: 2048\n keyOpts:\n - decrypt\n - encrypt\n - sign\n - unwrapKey\n - verify\n - wrapKey\n options:\n dependsOn:\n - ${exampleKeyVault}\n - ${exampleAccessPolicy}\n exampleWorkspace:\n type: azure:machinelearning:Workspace\n name: example\n properties:\n name: example-workspace\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationInsightsId: ${exampleInsights.id}\n keyVaultId: ${exampleKeyVault.id}\n storageAccountId: ${exampleAccount.id}\n identity:\n type: SystemAssigned\n encryption:\n keyVaultId: ${exampleKeyVault.id}\n keyId: ${exampleKey.id}\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### With User Assigned Identity And Data Encryption\n\n\u003e **NOTE:** The Key Vault must enable purge protection.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst current = azure.core.getClientConfig({});\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"example-resources\",\n location: \"West Europe\",\n});\nconst exampleInsights = new azure.appinsights.Insights(\"example\", {\n name: \"example-ai\",\n location: example.location,\n resourceGroupName: example.name,\n applicationType: \"web\",\n});\nconst exampleAccount = new azure.storage.Account(\"example\", {\n name: \"examplestorageaccount\",\n location: example.location,\n resourceGroupName: example.name,\n accountTier: \"Standard\",\n accountReplicationType: \"GRS\",\n});\nconst exampleKeyVault = new azure.keyvault.KeyVault(\"example\", {\n name: \"example-keyvalut\",\n location: example.location,\n resourceGroupName: example.name,\n tenantId: current.then(current =\u003e current.tenantId),\n skuName: \"premium\",\n purgeProtectionEnabled: true,\n});\nconst exampleUserAssignedIdentity = new azure.authorization.UserAssignedIdentity(\"example\", {\n name: \"example-identity\",\n location: example.location,\n resourceGroupName: example.name,\n});\nconst example_identity = new azure.keyvault.AccessPolicy(\"example-identity\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: exampleUserAssignedIdentity.principalId,\n keyPermissions: [\n \"WrapKey\",\n \"UnwrapKey\",\n \"Get\",\n \"Recover\",\n ],\n secretPermissions: [\n \"Get\",\n \"List\",\n \"Set\",\n \"Delete\",\n \"Recover\",\n \"Backup\",\n \"Restore\",\n ],\n});\nconst example_sp = new azure.keyvault.AccessPolicy(\"example-sp\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: current.then(current =\u003e current.objectId),\n keyPermissions: [\n \"Get\",\n \"Create\",\n \"Recover\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n ],\n});\nconst test = azuread.getServicePrincipal({\n displayName: \"Azure Cosmos DB\",\n});\nconst example_cosmosdb = new azure.keyvault.AccessPolicy(\"example-cosmosdb\", {\n keyVaultId: exampleKeyVault.id,\n tenantId: current.then(current =\u003e current.tenantId),\n objectId: test.then(test =\u003e test.objectId),\n keyPermissions: [\n \"Get\",\n \"Recover\",\n \"UnwrapKey\",\n \"WrapKey\",\n ],\n}, {\n dependsOn: [\n test,\n current,\n ],\n});\nconst exampleKey = new azure.keyvault.Key(\"example\", {\n name: \"example-keyvaultkey\",\n keyVaultId: exampleKeyVault.id,\n keyType: \"RSA\",\n keySize: 2048,\n keyOpts: [\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n}, {\n dependsOn: [\n exampleKeyVault,\n example_sp,\n ],\n});\nconst example_role1 = new azure.authorization.Assignment(\"example-role1\", {\n scope: exampleKeyVault.id,\n roleDefinitionName: \"Contributor\",\n principalId: exampleUserAssignedIdentity.principalId,\n});\nconst example_role2 = new azure.authorization.Assignment(\"example-role2\", {\n scope: exampleAccount.id,\n roleDefinitionName: \"Storage Blob Data Contributor\",\n principalId: exampleUserAssignedIdentity.principalId,\n});\nconst example_role3 = new azure.authorization.Assignment(\"example-role3\", {\n scope: exampleAccount.id,\n roleDefinitionName: \"Contributor\",\n principalId: exampleUserAssignedIdentity.principalId,\n});\nconst example_role4 = new azure.authorization.Assignment(\"example-role4\", {\n scope: exampleInsights.id,\n roleDefinitionName: \"Contributor\",\n principalId: exampleUserAssignedIdentity.principalId,\n});\nconst exampleWorkspace = new azure.machinelearning.Workspace(\"example\", {\n name: \"example-workspace\",\n location: example.location,\n resourceGroupName: example.name,\n applicationInsightsId: exampleInsights.id,\n keyVaultId: exampleKeyVault.id,\n storageAccountId: exampleAccount.id,\n highBusinessImpact: true,\n primaryUserAssignedIdentity: exampleUserAssignedIdentity.id,\n identity: {\n type: \"UserAssigned\",\n identityIds: [exampleUserAssignedIdentity.id],\n },\n encryption: {\n userAssignedIdentityId: exampleUserAssignedIdentity.id,\n keyVaultId: exampleKeyVault.id,\n keyId: exampleKey.id,\n },\n}, {\n dependsOn: [\n example_role1,\n example_role2,\n example_role3,\n example_role4,\n example_cosmosdb,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\nimport pulumi_azuread as azuread\n\ncurrent = azure.core.get_client_config()\nexample = azure.core.ResourceGroup(\"example\",\n name=\"example-resources\",\n location=\"West Europe\")\nexample_insights = azure.appinsights.Insights(\"example\",\n name=\"example-ai\",\n location=example.location,\n resource_group_name=example.name,\n application_type=\"web\")\nexample_account = azure.storage.Account(\"example\",\n name=\"examplestorageaccount\",\n location=example.location,\n resource_group_name=example.name,\n account_tier=\"Standard\",\n account_replication_type=\"GRS\")\nexample_key_vault = azure.keyvault.KeyVault(\"example\",\n name=\"example-keyvalut\",\n location=example.location,\n resource_group_name=example.name,\n tenant_id=current.tenant_id,\n sku_name=\"premium\",\n purge_protection_enabled=True)\nexample_user_assigned_identity = azure.authorization.UserAssignedIdentity(\"example\",\n name=\"example-identity\",\n location=example.location,\n resource_group_name=example.name)\nexample_identity = azure.keyvault.AccessPolicy(\"example-identity\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=example_user_assigned_identity.principal_id,\n key_permissions=[\n \"WrapKey\",\n \"UnwrapKey\",\n \"Get\",\n \"Recover\",\n ],\n secret_permissions=[\n \"Get\",\n \"List\",\n \"Set\",\n \"Delete\",\n \"Recover\",\n \"Backup\",\n \"Restore\",\n ])\nexample_sp = azure.keyvault.AccessPolicy(\"example-sp\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=current.object_id,\n key_permissions=[\n \"Get\",\n \"Create\",\n \"Recover\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n ])\ntest = azuread.get_service_principal(display_name=\"Azure Cosmos DB\")\nexample_cosmosdb = azure.keyvault.AccessPolicy(\"example-cosmosdb\",\n key_vault_id=example_key_vault.id,\n tenant_id=current.tenant_id,\n object_id=test.object_id,\n key_permissions=[\n \"Get\",\n \"Recover\",\n \"UnwrapKey\",\n \"WrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n test,\n current,\n ]))\nexample_key = azure.keyvault.Key(\"example\",\n name=\"example-keyvaultkey\",\n key_vault_id=example_key_vault.id,\n key_type=\"RSA\",\n key_size=2048,\n key_opts=[\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n example_key_vault,\n example_sp,\n ]))\nexample_role1 = azure.authorization.Assignment(\"example-role1\",\n scope=example_key_vault.id,\n role_definition_name=\"Contributor\",\n principal_id=example_user_assigned_identity.principal_id)\nexample_role2 = azure.authorization.Assignment(\"example-role2\",\n scope=example_account.id,\n role_definition_name=\"Storage Blob Data Contributor\",\n principal_id=example_user_assigned_identity.principal_id)\nexample_role3 = azure.authorization.Assignment(\"example-role3\",\n scope=example_account.id,\n role_definition_name=\"Contributor\",\n principal_id=example_user_assigned_identity.principal_id)\nexample_role4 = azure.authorization.Assignment(\"example-role4\",\n scope=example_insights.id,\n role_definition_name=\"Contributor\",\n principal_id=example_user_assigned_identity.principal_id)\nexample_workspace = azure.machinelearning.Workspace(\"example\",\n name=\"example-workspace\",\n location=example.location,\n resource_group_name=example.name,\n application_insights_id=example_insights.id,\n key_vault_id=example_key_vault.id,\n storage_account_id=example_account.id,\n high_business_impact=True,\n primary_user_assigned_identity=example_user_assigned_identity.id,\n identity={\n \"type\": \"UserAssigned\",\n \"identity_ids\": [example_user_assigned_identity.id],\n },\n encryption={\n \"user_assigned_identity_id\": example_user_assigned_identity.id,\n \"key_vault_id\": example_key_vault.id,\n \"key_id\": example_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n example_role1,\n example_role2,\n example_role3,\n example_role4,\n example_cosmosdb,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Azure.Core.GetClientConfig.Invoke();\n\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"example-resources\",\n Location = \"West Europe\",\n });\n\n var exampleInsights = new Azure.AppInsights.Insights(\"example\", new()\n {\n Name = \"example-ai\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationType = \"web\",\n });\n\n var exampleAccount = new Azure.Storage.Account(\"example\", new()\n {\n Name = \"examplestorageaccount\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"GRS\",\n });\n\n var exampleKeyVault = new Azure.KeyVault.KeyVault(\"example\", new()\n {\n Name = \"example-keyvalut\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n SkuName = \"premium\",\n PurgeProtectionEnabled = true,\n });\n\n var exampleUserAssignedIdentity = new Azure.Authorization.UserAssignedIdentity(\"example\", new()\n {\n Name = \"example-identity\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n });\n\n var example_identity = new Azure.KeyVault.AccessPolicy(\"example-identity\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = exampleUserAssignedIdentity.PrincipalId,\n KeyPermissions = new[]\n {\n \"WrapKey\",\n \"UnwrapKey\",\n \"Get\",\n \"Recover\",\n },\n SecretPermissions = new[]\n {\n \"Get\",\n \"List\",\n \"Set\",\n \"Delete\",\n \"Recover\",\n \"Backup\",\n \"Restore\",\n },\n });\n\n var example_sp = new Azure.KeyVault.AccessPolicy(\"example-sp\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Get\",\n \"Create\",\n \"Recover\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\",\n },\n });\n\n var test = AzureAD.GetServicePrincipal.Invoke(new()\n {\n DisplayName = \"Azure Cosmos DB\",\n });\n\n var example_cosmosdb = new Azure.KeyVault.AccessPolicy(\"example-cosmosdb\", new()\n {\n KeyVaultId = exampleKeyVault.Id,\n TenantId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.TenantId),\n ObjectId = test.Apply(getServicePrincipalResult =\u003e getServicePrincipalResult.ObjectId),\n KeyPermissions = new[]\n {\n \"Get\",\n \"Recover\",\n \"UnwrapKey\",\n \"WrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n test,\n current,\n },\n });\n\n var exampleKey = new Azure.KeyVault.Key(\"example\", new()\n {\n Name = \"example-keyvaultkey\",\n KeyVaultId = exampleKeyVault.Id,\n KeyType = \"RSA\",\n KeySize = 2048,\n KeyOpts = new[]\n {\n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n exampleKeyVault,\n example_sp,\n },\n });\n\n var example_role1 = new Azure.Authorization.Assignment(\"example-role1\", new()\n {\n Scope = exampleKeyVault.Id,\n RoleDefinitionName = \"Contributor\",\n PrincipalId = exampleUserAssignedIdentity.PrincipalId,\n });\n\n var example_role2 = new Azure.Authorization.Assignment(\"example-role2\", new()\n {\n Scope = exampleAccount.Id,\n RoleDefinitionName = \"Storage Blob Data Contributor\",\n PrincipalId = exampleUserAssignedIdentity.PrincipalId,\n });\n\n var example_role3 = new Azure.Authorization.Assignment(\"example-role3\", new()\n {\n Scope = exampleAccount.Id,\n RoleDefinitionName = \"Contributor\",\n PrincipalId = exampleUserAssignedIdentity.PrincipalId,\n });\n\n var example_role4 = new Azure.Authorization.Assignment(\"example-role4\", new()\n {\n Scope = exampleInsights.Id,\n RoleDefinitionName = \"Contributor\",\n PrincipalId = exampleUserAssignedIdentity.PrincipalId,\n });\n\n var exampleWorkspace = new Azure.MachineLearning.Workspace(\"example\", new()\n {\n Name = \"example-workspace\",\n Location = example.Location,\n ResourceGroupName = example.Name,\n ApplicationInsightsId = exampleInsights.Id,\n KeyVaultId = exampleKeyVault.Id,\n StorageAccountId = exampleAccount.Id,\n HighBusinessImpact = true,\n PrimaryUserAssignedIdentity = exampleUserAssignedIdentity.Id,\n Identity = new Azure.MachineLearning.Inputs.WorkspaceIdentityArgs\n {\n Type = \"UserAssigned\",\n IdentityIds = new[]\n {\n exampleUserAssignedIdentity.Id,\n },\n },\n Encryption = new Azure.MachineLearning.Inputs.WorkspaceEncryptionArgs\n {\n UserAssignedIdentityId = exampleUserAssignedIdentity.Id,\n KeyVaultId = exampleKeyVault.Id,\n KeyId = exampleKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example_role1,\n example_role2,\n example_role3,\n example_role4,\n example_cosmosdb,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/appinsights\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/keyvault\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/machinelearning\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := core.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"example-resources\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleInsights, err := appinsights.NewInsights(ctx, \"example\", \u0026appinsights.InsightsArgs{\n\t\t\tName: pulumi.String(\"example-ai\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationType: pulumi.String(\"web\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccount, err := storage.NewAccount(ctx, \"example\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"examplestorageaccount\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"GRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKeyVault, err := keyvault.NewKeyVault(ctx, \"example\", \u0026keyvault.KeyVaultArgs{\n\t\t\tName: pulumi.String(\"example-keyvalut\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tSkuName: pulumi.String(\"premium\"),\n\t\t\tPurgeProtectionEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleUserAssignedIdentity, err := authorization.NewUserAssignedIdentity(ctx, \"example\", \u0026authorization.UserAssignedIdentityArgs{\n\t\t\tName: pulumi.String(\"example-identity\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = keyvault.NewAccessPolicy(ctx, \"example-identity\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: exampleUserAssignedIdentity.PrincipalId,\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"WrapKey\"),\n\t\t\t\tpulumi.String(\"UnwrapKey\"),\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t},\n\t\t\tSecretPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"List\"),\n\t\t\t\tpulumi.String(\"Set\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Backup\"),\n\t\t\t\tpulumi.String(\"Restore\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_sp, err := keyvault.NewAccessPolicy(ctx, \"example-sp\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(current.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"Delete\"),\n\t\t\t\tpulumi.String(\"Purge\"),\n\t\t\t\tpulumi.String(\"GetRotationPolicy\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := azuread.LookupServicePrincipal(ctx, \u0026azuread.LookupServicePrincipalArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"Azure Cosmos DB\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_cosmosdb, err := keyvault.NewAccessPolicy(ctx, \"example-cosmosdb\", \u0026keyvault.AccessPolicyArgs{\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tTenantId: pulumi.String(current.TenantId),\n\t\t\tObjectId: pulumi.String(test.ObjectId),\n\t\t\tKeyPermissions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Get\"),\n\t\t\t\tpulumi.String(\"Recover\"),\n\t\t\t\tpulumi.String(\"UnwrapKey\"),\n\t\t\t\tpulumi.String(\"WrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\ttest,\n\t\t\tcurrent,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKey, err := keyvault.NewKey(ctx, \"example\", \u0026keyvault.KeyArgs{\n\t\t\tName: pulumi.String(\"example-keyvaultkey\"),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tKeyType: pulumi.String(\"RSA\"),\n\t\t\tKeySize: pulumi.Int(2048),\n\t\t\tKeyOpts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"decrypt\"),\n\t\t\t\tpulumi.String(\"encrypt\"),\n\t\t\t\tpulumi.String(\"sign\"),\n\t\t\t\tpulumi.String(\"unwrapKey\"),\n\t\t\t\tpulumi.String(\"verify\"),\n\t\t\t\tpulumi.String(\"wrapKey\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texampleKeyVault,\n\t\t\texample_sp,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_role1, err := authorization.NewAssignment(ctx, \"example-role1\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleKeyVault.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Contributor\"),\n\t\t\tPrincipalId: exampleUserAssignedIdentity.PrincipalId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_role2, err := authorization.NewAssignment(ctx, \"example-role2\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleAccount.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Storage Blob Data Contributor\"),\n\t\t\tPrincipalId: exampleUserAssignedIdentity.PrincipalId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_role3, err := authorization.NewAssignment(ctx, \"example-role3\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleAccount.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Contributor\"),\n\t\t\tPrincipalId: exampleUserAssignedIdentity.PrincipalId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_role4, err := authorization.NewAssignment(ctx, \"example-role4\", \u0026authorization.AssignmentArgs{\n\t\t\tScope: exampleInsights.ID(),\n\t\t\tRoleDefinitionName: pulumi.String(\"Contributor\"),\n\t\t\tPrincipalId: exampleUserAssignedIdentity.PrincipalId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = machinelearning.NewWorkspace(ctx, \"example\", \u0026machinelearning.WorkspaceArgs{\n\t\t\tName: pulumi.String(\"example-workspace\"),\n\t\t\tLocation: example.Location,\n\t\t\tResourceGroupName: example.Name,\n\t\t\tApplicationInsightsId: exampleInsights.ID(),\n\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\tStorageAccountId: exampleAccount.ID(),\n\t\t\tHighBusinessImpact: pulumi.Bool(true),\n\t\t\tPrimaryUserAssignedIdentity: exampleUserAssignedIdentity.ID(),\n\t\t\tIdentity: \u0026machinelearning.WorkspaceIdentityArgs{\n\t\t\t\tType: pulumi.String(\"UserAssigned\"),\n\t\t\t\tIdentityIds: pulumi.StringArray{\n\t\t\t\t\texampleUserAssignedIdentity.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEncryption: \u0026machinelearning.WorkspaceEncryptionArgs{\n\t\t\t\tUserAssignedIdentityId: exampleUserAssignedIdentity.ID(),\n\t\t\t\tKeyVaultId: exampleKeyVault.ID(),\n\t\t\t\tKeyId: exampleKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample_role1,\n\t\t\texample_role2,\n\t\t\texample_role3,\n\t\t\texample_role4,\n\t\t\texample_cosmosdb,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.appinsights.Insights;\nimport com.pulumi.azure.appinsights.InsightsArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.keyvault.KeyVault;\nimport com.pulumi.azure.keyvault.KeyVaultArgs;\nimport com.pulumi.azure.authorization.UserAssignedIdentity;\nimport com.pulumi.azure.authorization.UserAssignedIdentityArgs;\nimport com.pulumi.azure.keyvault.AccessPolicy;\nimport com.pulumi.azure.keyvault.AccessPolicyArgs;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.inputs.GetServicePrincipalArgs;\nimport com.pulumi.azure.keyvault.Key;\nimport com.pulumi.azure.keyvault.KeyArgs;\nimport com.pulumi.azure.authorization.Assignment;\nimport com.pulumi.azure.authorization.AssignmentArgs;\nimport com.pulumi.azure.machinelearning.Workspace;\nimport com.pulumi.azure.machinelearning.WorkspaceArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceIdentityArgs;\nimport com.pulumi.azure.machinelearning.inputs.WorkspaceEncryptionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = CoreFunctions.getClientConfig();\n\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"example-resources\")\n .location(\"West Europe\")\n .build());\n\n var exampleInsights = new Insights(\"exampleInsights\", InsightsArgs.builder()\n .name(\"example-ai\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationType(\"web\")\n .build());\n\n var exampleAccount = new Account(\"exampleAccount\", AccountArgs.builder()\n .name(\"examplestorageaccount\")\n .location(example.location())\n .resourceGroupName(example.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"GRS\")\n .build());\n\n var exampleKeyVault = new KeyVault(\"exampleKeyVault\", KeyVaultArgs.builder()\n .name(\"example-keyvalut\")\n .location(example.location())\n .resourceGroupName(example.name())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .skuName(\"premium\")\n .purgeProtectionEnabled(true)\n .build());\n\n var exampleUserAssignedIdentity = new UserAssignedIdentity(\"exampleUserAssignedIdentity\", UserAssignedIdentityArgs.builder()\n .name(\"example-identity\")\n .location(example.location())\n .resourceGroupName(example.name())\n .build());\n\n var example_identity = new AccessPolicy(\"example-identity\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(exampleUserAssignedIdentity.principalId())\n .keyPermissions( \n \"WrapKey\",\n \"UnwrapKey\",\n \"Get\",\n \"Recover\")\n .secretPermissions( \n \"Get\",\n \"List\",\n \"Set\",\n \"Delete\",\n \"Recover\",\n \"Backup\",\n \"Restore\")\n .build());\n\n var example_sp = new AccessPolicy(\"example-sp\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .keyPermissions( \n \"Get\",\n \"Create\",\n \"Recover\",\n \"Delete\",\n \"Purge\",\n \"GetRotationPolicy\")\n .build());\n\n final var test = AzureadFunctions.getServicePrincipal(GetServicePrincipalArgs.builder()\n .displayName(\"Azure Cosmos DB\")\n .build());\n\n var example_cosmosdb = new AccessPolicy(\"example-cosmosdb\", AccessPolicyArgs.builder()\n .keyVaultId(exampleKeyVault.id())\n .tenantId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.tenantId()))\n .objectId(test.applyValue(getServicePrincipalResult -\u003e getServicePrincipalResult.objectId()))\n .keyPermissions( \n \"Get\",\n \"Recover\",\n \"UnwrapKey\",\n \"WrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n test.applyValue(getServicePrincipalResult -\u003e getServicePrincipalResult),\n current.applyValue(getClientConfigResult -\u003e getClientConfigResult))\n .build());\n\n var exampleKey = new Key(\"exampleKey\", KeyArgs.builder()\n .name(\"example-keyvaultkey\")\n .keyVaultId(exampleKeyVault.id())\n .keyType(\"RSA\")\n .keySize(2048)\n .keyOpts( \n \"decrypt\",\n \"encrypt\",\n \"sign\",\n \"unwrapKey\",\n \"verify\",\n \"wrapKey\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n exampleKeyVault,\n example_sp)\n .build());\n\n var example_role1 = new Assignment(\"example-role1\", AssignmentArgs.builder()\n .scope(exampleKeyVault.id())\n .roleDefinitionName(\"Contributor\")\n .principalId(exampleUserAssignedIdentity.principalId())\n .build());\n\n var example_role2 = new Assignment(\"example-role2\", AssignmentArgs.builder()\n .scope(exampleAccount.id())\n .roleDefinitionName(\"Storage Blob Data Contributor\")\n .principalId(exampleUserAssignedIdentity.principalId())\n .build());\n\n var example_role3 = new Assignment(\"example-role3\", AssignmentArgs.builder()\n .scope(exampleAccount.id())\n .roleDefinitionName(\"Contributor\")\n .principalId(exampleUserAssignedIdentity.principalId())\n .build());\n\n var example_role4 = new Assignment(\"example-role4\", AssignmentArgs.builder()\n .scope(exampleInsights.id())\n .roleDefinitionName(\"Contributor\")\n .principalId(exampleUserAssignedIdentity.principalId())\n .build());\n\n var exampleWorkspace = new Workspace(\"exampleWorkspace\", WorkspaceArgs.builder()\n .name(\"example-workspace\")\n .location(example.location())\n .resourceGroupName(example.name())\n .applicationInsightsId(exampleInsights.id())\n .keyVaultId(exampleKeyVault.id())\n .storageAccountId(exampleAccount.id())\n .highBusinessImpact(true)\n .primaryUserAssignedIdentity(exampleUserAssignedIdentity.id())\n .identity(WorkspaceIdentityArgs.builder()\n .type(\"UserAssigned\")\n .identityIds(exampleUserAssignedIdentity.id())\n .build())\n .encryption(WorkspaceEncryptionArgs.builder()\n .userAssignedIdentityId(exampleUserAssignedIdentity.id())\n .keyVaultId(exampleKeyVault.id())\n .keyId(exampleKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n example_role1,\n example_role2,\n example_role3,\n example_role4,\n example_cosmosdb)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: example-resources\n location: West Europe\n exampleInsights:\n type: azure:appinsights:Insights\n name: example\n properties:\n name: example-ai\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationType: web\n exampleAccount:\n type: azure:storage:Account\n name: example\n properties:\n name: examplestorageaccount\n location: ${example.location}\n resourceGroupName: ${example.name}\n accountTier: Standard\n accountReplicationType: GRS\n exampleKeyVault:\n type: azure:keyvault:KeyVault\n name: example\n properties:\n name: example-keyvalut\n location: ${example.location}\n resourceGroupName: ${example.name}\n tenantId: ${current.tenantId}\n skuName: premium\n purgeProtectionEnabled: true\n exampleUserAssignedIdentity:\n type: azure:authorization:UserAssignedIdentity\n name: example\n properties:\n name: example-identity\n location: ${example.location}\n resourceGroupName: ${example.name}\n example-identity:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${exampleUserAssignedIdentity.principalId}\n keyPermissions:\n - WrapKey\n - UnwrapKey\n - Get\n - Recover\n secretPermissions:\n - Get\n - List\n - Set\n - Delete\n - Recover\n - Backup\n - Restore\n example-sp:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${current.objectId}\n keyPermissions:\n - Get\n - Create\n - Recover\n - Delete\n - Purge\n - GetRotationPolicy\n example-cosmosdb:\n type: azure:keyvault:AccessPolicy\n properties:\n keyVaultId: ${exampleKeyVault.id}\n tenantId: ${current.tenantId}\n objectId: ${test.objectId}\n keyPermissions:\n - Get\n - Recover\n - UnwrapKey\n - WrapKey\n options:\n dependsOn:\n - ${test}\n - ${current}\n exampleKey:\n type: azure:keyvault:Key\n name: example\n properties:\n name: example-keyvaultkey\n keyVaultId: ${exampleKeyVault.id}\n keyType: RSA\n keySize: 2048\n keyOpts:\n - decrypt\n - encrypt\n - sign\n - unwrapKey\n - verify\n - wrapKey\n options:\n dependsOn:\n - ${exampleKeyVault}\n - ${[\"example-sp\"]}\n example-role1:\n type: azure:authorization:Assignment\n properties:\n scope: ${exampleKeyVault.id}\n roleDefinitionName: Contributor\n principalId: ${exampleUserAssignedIdentity.principalId}\n example-role2:\n type: azure:authorization:Assignment\n properties:\n scope: ${exampleAccount.id}\n roleDefinitionName: Storage Blob Data Contributor\n principalId: ${exampleUserAssignedIdentity.principalId}\n example-role3:\n type: azure:authorization:Assignment\n properties:\n scope: ${exampleAccount.id}\n roleDefinitionName: Contributor\n principalId: ${exampleUserAssignedIdentity.principalId}\n example-role4:\n type: azure:authorization:Assignment\n properties:\n scope: ${exampleInsights.id}\n roleDefinitionName: Contributor\n principalId: ${exampleUserAssignedIdentity.principalId}\n exampleWorkspace:\n type: azure:machinelearning:Workspace\n name: example\n properties:\n name: example-workspace\n location: ${example.location}\n resourceGroupName: ${example.name}\n applicationInsightsId: ${exampleInsights.id}\n keyVaultId: ${exampleKeyVault.id}\n storageAccountId: ${exampleAccount.id}\n highBusinessImpact: true\n primaryUserAssignedIdentity: ${exampleUserAssignedIdentity.id}\n identity:\n type: UserAssigned\n identityIds:\n - ${exampleUserAssignedIdentity.id}\n encryption:\n userAssignedIdentityId: ${exampleUserAssignedIdentity.id}\n keyVaultId: ${exampleKeyVault.id}\n keyId: ${exampleKey.id}\n options:\n dependsOn:\n - ${[\"example-role1\"]}\n - ${[\"example-role2\"]}\n - ${[\"example-role3\"]}\n - ${[\"example-role4\"]}\n - ${[\"example-cosmosdb\"]}\nvariables:\n current:\n fn::invoke:\n function: azure:core:getClientConfig\n arguments: {}\n test:\n fn::invoke:\n function: azuread:getServicePrincipal\n arguments:\n displayName: Azure Cosmos DB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMachine Learning Workspace can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:machinelearning/workspace:Workspace example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.MachineLearningServices/workspaces/workspace1\n```\n\n", "properties": { "applicationInsightsId": { "type": "string", @@ -233759,7 +233759,7 @@ } }, "azure:network/virtualNetworkPeering:VirtualNetworkPeering": { - "description": "Manages a virtual network peering which allows resources to access other\nresources in the linked virtual network.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"peeredvnets-rg\",\n location: \"West Europe\",\n});\nconst example_1 = new azure.network.VirtualNetwork(\"example-1\", {\n name: \"peternetwork1\",\n resourceGroupName: example.name,\n addressSpaces: [\"10.0.1.0/24\"],\n location: example.location,\n});\nconst example_2 = new azure.network.VirtualNetwork(\"example-2\", {\n name: \"peternetwork2\",\n resourceGroupName: example.name,\n addressSpaces: [\"10.0.2.0/24\"],\n location: example.location,\n});\nconst example_1VirtualNetworkPeering = new azure.network.VirtualNetworkPeering(\"example-1\", {\n name: \"peer1to2\",\n resourceGroupName: example.name,\n virtualNetworkName: example_1.name,\n remoteVirtualNetworkId: example_2.id,\n});\nconst example_2VirtualNetworkPeering = new azure.network.VirtualNetworkPeering(\"example-2\", {\n name: \"peer2to1\",\n resourceGroupName: example.name,\n virtualNetworkName: example_2.name,\n remoteVirtualNetworkId: example_1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nexample = azure.core.ResourceGroup(\"example\",\n name=\"peeredvnets-rg\",\n location=\"West Europe\")\nexample_1 = azure.network.VirtualNetwork(\"example-1\",\n name=\"peternetwork1\",\n resource_group_name=example.name,\n address_spaces=[\"10.0.1.0/24\"],\n location=example.location)\nexample_2 = azure.network.VirtualNetwork(\"example-2\",\n name=\"peternetwork2\",\n resource_group_name=example.name,\n address_spaces=[\"10.0.2.0/24\"],\n location=example.location)\nexample_1_virtual_network_peering = azure.network.VirtualNetworkPeering(\"example-1\",\n name=\"peer1to2\",\n resource_group_name=example.name,\n virtual_network_name=example_1.name,\n remote_virtual_network_id=example_2.id)\nexample_2_virtual_network_peering = azure.network.VirtualNetworkPeering(\"example-2\",\n name=\"peer2to1\",\n resource_group_name=example.name,\n virtual_network_name=example_2.name,\n remote_virtual_network_id=example_1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"peeredvnets-rg\",\n Location = \"West Europe\",\n });\n\n var example_1 = new Azure.Network.VirtualNetwork(\"example-1\", new()\n {\n Name = \"peternetwork1\",\n ResourceGroupName = example.Name,\n AddressSpaces = new[]\n {\n \"10.0.1.0/24\",\n },\n Location = example.Location,\n });\n\n var example_2 = new Azure.Network.VirtualNetwork(\"example-2\", new()\n {\n Name = \"peternetwork2\",\n ResourceGroupName = example.Name,\n AddressSpaces = new[]\n {\n \"10.0.2.0/24\",\n },\n Location = example.Location,\n });\n\n var example_1VirtualNetworkPeering = new Azure.Network.VirtualNetworkPeering(\"example-1\", new()\n {\n Name = \"peer1to2\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = example_1.Name,\n RemoteVirtualNetworkId = example_2.Id,\n });\n\n var example_2VirtualNetworkPeering = new Azure.Network.VirtualNetworkPeering(\"example-2\", new()\n {\n Name = \"peer2to1\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = example_2.Name,\n RemoteVirtualNetworkId = example_1.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"peeredvnets-rg\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetwork(ctx, \"example-1\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"peternetwork1\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.1.0/24\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetwork(ctx, \"example-2\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"peternetwork2\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.2.0/24\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetworkPeering(ctx, \"example-1\", \u0026network.VirtualNetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peer1to2\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: example_1.Name,\n\t\t\tRemoteVirtualNetworkId: example_2.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetworkPeering(ctx, \"example-2\", \u0026network.VirtualNetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peer2to1\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: example_2.Name,\n\t\t\tRemoteVirtualNetworkId: example_1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.VirtualNetworkPeering;\nimport com.pulumi.azure.network.VirtualNetworkPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"peeredvnets-rg\")\n .location(\"West Europe\")\n .build());\n\n var example_1 = new VirtualNetwork(\"example-1\", VirtualNetworkArgs.builder()\n .name(\"peternetwork1\")\n .resourceGroupName(example.name())\n .addressSpaces(\"10.0.1.0/24\")\n .location(example.location())\n .build());\n\n var example_2 = new VirtualNetwork(\"example-2\", VirtualNetworkArgs.builder()\n .name(\"peternetwork2\")\n .resourceGroupName(example.name())\n .addressSpaces(\"10.0.2.0/24\")\n .location(example.location())\n .build());\n\n var example_1VirtualNetworkPeering = new VirtualNetworkPeering(\"example-1VirtualNetworkPeering\", VirtualNetworkPeeringArgs.builder()\n .name(\"peer1to2\")\n .resourceGroupName(example.name())\n .virtualNetworkName(example_1.name())\n .remoteVirtualNetworkId(example_2.id())\n .build());\n\n var example_2VirtualNetworkPeering = new VirtualNetworkPeering(\"example-2VirtualNetworkPeering\", VirtualNetworkPeeringArgs.builder()\n .name(\"peer2to1\")\n .resourceGroupName(example.name())\n .virtualNetworkName(example_2.name())\n .remoteVirtualNetworkId(example_1.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: peeredvnets-rg\n location: West Europe\n example-1:\n type: azure:network:VirtualNetwork\n properties:\n name: peternetwork1\n resourceGroupName: ${example.name}\n addressSpaces:\n - 10.0.1.0/24\n location: ${example.location}\n example-2:\n type: azure:network:VirtualNetwork\n properties:\n name: peternetwork2\n resourceGroupName: ${example.name}\n addressSpaces:\n - 10.0.2.0/24\n location: ${example.location}\n example-1VirtualNetworkPeering:\n type: azure:network:VirtualNetworkPeering\n name: example-1\n properties:\n name: peer1to2\n resourceGroupName: ${example.name}\n virtualNetworkName: ${[\"example-1\"].name}\n remoteVirtualNetworkId: ${[\"example-2\"].id}\n example-2VirtualNetworkPeering:\n type: azure:network:VirtualNetworkPeering\n name: example-2\n properties:\n name: peer2to1\n resourceGroupName: ${example.name}\n virtualNetworkName: ${[\"example-2\"].name}\n remoteVirtualNetworkId: ${[\"example-1\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Triggers)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"peeredvnets-rg\",\n location: \"West Europe\",\n});\nconst example_1 = new azure.network.VirtualNetwork(\"example-1\", {\n name: \"peternetwork1\",\n resourceGroupName: example.name,\n addressSpaces: [\"10.0.1.0/24\"],\n location: example.location,\n});\nconst example_2 = new azure.network.VirtualNetwork(\"example-2\", {\n name: \"peternetwork2\",\n resourceGroupName: example.name,\n addressSpaces: [\"10.0.2.0/24\"],\n location: example.location,\n});\nconst example_1VirtualNetworkPeering = new azure.network.VirtualNetworkPeering(\"example-1\", {\n name: \"peer1to2\",\n resourceGroupName: example.name,\n virtualNetworkName: example_1.name,\n remoteVirtualNetworkId: example_2.id,\n triggers: {\n remote_address_space: std.joinOutput({\n separator: \",\",\n input: example_2.addressSpaces,\n }).apply(invoke =\u003e invoke.result),\n },\n});\nconst example_2VirtualNetworkPeering = new azure.network.VirtualNetworkPeering(\"example-2\", {\n name: \"peer2to1\",\n resourceGroupName: example.name,\n virtualNetworkName: example_2.name,\n remoteVirtualNetworkId: example_1.id,\n triggers: {\n remote_address_space: std.joinOutput({\n separator: \",\",\n input: example_1.addressSpaces,\n }).apply(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\nimport pulumi_std as std\n\nexample = azure.core.ResourceGroup(\"example\",\n name=\"peeredvnets-rg\",\n location=\"West Europe\")\nexample_1 = azure.network.VirtualNetwork(\"example-1\",\n name=\"peternetwork1\",\n resource_group_name=example.name,\n address_spaces=[\"10.0.1.0/24\"],\n location=example.location)\nexample_2 = azure.network.VirtualNetwork(\"example-2\",\n name=\"peternetwork2\",\n resource_group_name=example.name,\n address_spaces=[\"10.0.2.0/24\"],\n location=example.location)\nexample_1_virtual_network_peering = azure.network.VirtualNetworkPeering(\"example-1\",\n name=\"peer1to2\",\n resource_group_name=example.name,\n virtual_network_name=example_1.name,\n remote_virtual_network_id=example_2.id,\n triggers={\n \"remote_address_space\": std.join_output(separator=\",\",\n input=example_2.address_spaces).apply(lambda invoke: invoke.result),\n })\nexample_2_virtual_network_peering = azure.network.VirtualNetworkPeering(\"example-2\",\n name=\"peer2to1\",\n resource_group_name=example.name,\n virtual_network_name=example_2.name,\n remote_virtual_network_id=example_1.id,\n triggers={\n \"remote_address_space\": std.join_output(separator=\",\",\n input=example_1.address_spaces).apply(lambda invoke: invoke.result),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"peeredvnets-rg\",\n Location = \"West Europe\",\n });\n\n var example_1 = new Azure.Network.VirtualNetwork(\"example-1\", new()\n {\n Name = \"peternetwork1\",\n ResourceGroupName = example.Name,\n AddressSpaces = new[]\n {\n \"10.0.1.0/24\",\n },\n Location = example.Location,\n });\n\n var example_2 = new Azure.Network.VirtualNetwork(\"example-2\", new()\n {\n Name = \"peternetwork2\",\n ResourceGroupName = example.Name,\n AddressSpaces = new[]\n {\n \"10.0.2.0/24\",\n },\n Location = example.Location,\n });\n\n var example_1VirtualNetworkPeering = new Azure.Network.VirtualNetworkPeering(\"example-1\", new()\n {\n Name = \"peer1to2\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = example_1.Name,\n RemoteVirtualNetworkId = example_2.Id,\n Triggers = \n {\n { \"remote_address_space\", Std.Join.Invoke(new()\n {\n Separator = \",\",\n Input = example_2.AddressSpaces,\n }).Apply(invoke =\u003e invoke.Result) },\n },\n });\n\n var example_2VirtualNetworkPeering = new Azure.Network.VirtualNetworkPeering(\"example-2\", new()\n {\n Name = \"peer2to1\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = example_2.Name,\n RemoteVirtualNetworkId = example_1.Id,\n Triggers = \n {\n { \"remote_address_space\", Std.Join.Invoke(new()\n {\n Separator = \",\",\n Input = example_1.AddressSpaces,\n }).Apply(invoke =\u003e invoke.Result) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"peeredvnets-rg\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetwork(ctx, \"example-1\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"peternetwork1\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.1.0/24\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetwork(ctx, \"example-2\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"peternetwork2\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.2.0/24\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetworkPeering(ctx, \"example-1\", \u0026network.VirtualNetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peer1to2\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: example_1.Name,\n\t\t\tRemoteVirtualNetworkId: example_2.ID(),\n\t\t\tTriggers: pulumi.StringMap{\n\t\t\t\t\"remote_address_space\": pulumi.String(std.JoinOutput(ctx, std.JoinOutputArgs{\n\t\t\t\t\tSeparator: pulumi.String(\",\"),\n\t\t\t\t\tInput: example_2.AddressSpaces,\n\t\t\t\t}, nil).ApplyT(func(invoke std.JoinResult) (*string, error) {\n\t\t\t\t\treturn invoke.Result, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetworkPeering(ctx, \"example-2\", \u0026network.VirtualNetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peer2to1\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: example_2.Name,\n\t\t\tRemoteVirtualNetworkId: example_1.ID(),\n\t\t\tTriggers: pulumi.StringMap{\n\t\t\t\t\"remote_address_space\": pulumi.String(std.JoinOutput(ctx, std.JoinOutputArgs{\n\t\t\t\t\tSeparator: pulumi.String(\",\"),\n\t\t\t\t\tInput: example_1.AddressSpaces,\n\t\t\t\t}, nil).ApplyT(func(invoke std.JoinResult) (*string, error) {\n\t\t\t\t\treturn invoke.Result, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.VirtualNetworkPeering;\nimport com.pulumi.azure.network.VirtualNetworkPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"peeredvnets-rg\")\n .location(\"West Europe\")\n .build());\n\n var example_1 = new VirtualNetwork(\"example-1\", VirtualNetworkArgs.builder()\n .name(\"peternetwork1\")\n .resourceGroupName(example.name())\n .addressSpaces(\"10.0.1.0/24\")\n .location(example.location())\n .build());\n\n var example_2 = new VirtualNetwork(\"example-2\", VirtualNetworkArgs.builder()\n .name(\"peternetwork2\")\n .resourceGroupName(example.name())\n .addressSpaces(\"10.0.2.0/24\")\n .location(example.location())\n .build());\n\n var example_1VirtualNetworkPeering = new VirtualNetworkPeering(\"example-1VirtualNetworkPeering\", VirtualNetworkPeeringArgs.builder()\n .name(\"peer1to2\")\n .resourceGroupName(example.name())\n .virtualNetworkName(example_1.name())\n .remoteVirtualNetworkId(example_2.id())\n .triggers(Map.of(\"remote_address_space\", StdFunctions.join().applyValue(invoke -\u003e invoke.result())))\n .build());\n\n var example_2VirtualNetworkPeering = new VirtualNetworkPeering(\"example-2VirtualNetworkPeering\", VirtualNetworkPeeringArgs.builder()\n .name(\"peer2to1\")\n .resourceGroupName(example.name())\n .virtualNetworkName(example_2.name())\n .remoteVirtualNetworkId(example_1.id())\n .triggers(Map.of(\"remote_address_space\", StdFunctions.join().applyValue(invoke -\u003e invoke.result())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: peeredvnets-rg\n location: West Europe\n example-1:\n type: azure:network:VirtualNetwork\n properties:\n name: peternetwork1\n resourceGroupName: ${example.name}\n addressSpaces:\n - 10.0.1.0/24\n location: ${example.location}\n example-2:\n type: azure:network:VirtualNetwork\n properties:\n name: peternetwork2\n resourceGroupName: ${example.name}\n addressSpaces:\n - 10.0.2.0/24\n location: ${example.location}\n example-1VirtualNetworkPeering:\n type: azure:network:VirtualNetworkPeering\n name: example-1\n properties:\n name: peer1to2\n resourceGroupName: ${example.name}\n virtualNetworkName: ${[\"example-1\"].name}\n remoteVirtualNetworkId: ${[\"example-2\"].id}\n triggers:\n remote_address_space:\n fn::invoke:\n function: std:join\n arguments:\n separator: ','\n input: ${[\"example-2\"].addressSpaces}\n return: result\n example-2VirtualNetworkPeering:\n type: azure:network:VirtualNetworkPeering\n name: example-2\n properties:\n name: peer2to1\n resourceGroupName: ${example.name}\n virtualNetworkName: ${[\"example-2\"].name}\n remoteVirtualNetworkId: ${[\"example-1\"].id}\n triggers:\n remote_address_space:\n fn::invoke:\n function: std:join\n arguments:\n separator: ','\n input: ${[\"example-1\"].addressSpaces}\n return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Note\n\nVirtual Network peerings cannot be created, updated or deleted concurrently.\n\n## Import\n\nVirtual Network Peerings can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:network/virtualNetworkPeering:VirtualNetworkPeering examplePeering /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Network/virtualNetworks/myvnet1/virtualNetworkPeerings/myvnet1peering\n```\n\n", + "description": "Manages a virtual network peering which allows resources to access other\nresources in the linked virtual network.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"peeredvnets-rg\",\n location: \"West Europe\",\n});\nconst example_1 = new azure.network.VirtualNetwork(\"example-1\", {\n name: \"peternetwork1\",\n resourceGroupName: example.name,\n addressSpaces: [\"10.0.1.0/24\"],\n location: example.location,\n});\nconst example_2 = new azure.network.VirtualNetwork(\"example-2\", {\n name: \"peternetwork2\",\n resourceGroupName: example.name,\n addressSpaces: [\"10.0.2.0/24\"],\n location: example.location,\n});\nconst example_1VirtualNetworkPeering = new azure.network.VirtualNetworkPeering(\"example-1\", {\n name: \"peer1to2\",\n resourceGroupName: example.name,\n virtualNetworkName: example_1.name,\n remoteVirtualNetworkId: example_2.id,\n});\nconst example_2VirtualNetworkPeering = new azure.network.VirtualNetworkPeering(\"example-2\", {\n name: \"peer2to1\",\n resourceGroupName: example.name,\n virtualNetworkName: example_2.name,\n remoteVirtualNetworkId: example_1.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nexample = azure.core.ResourceGroup(\"example\",\n name=\"peeredvnets-rg\",\n location=\"West Europe\")\nexample_1 = azure.network.VirtualNetwork(\"example-1\",\n name=\"peternetwork1\",\n resource_group_name=example.name,\n address_spaces=[\"10.0.1.0/24\"],\n location=example.location)\nexample_2 = azure.network.VirtualNetwork(\"example-2\",\n name=\"peternetwork2\",\n resource_group_name=example.name,\n address_spaces=[\"10.0.2.0/24\"],\n location=example.location)\nexample_1_virtual_network_peering = azure.network.VirtualNetworkPeering(\"example-1\",\n name=\"peer1to2\",\n resource_group_name=example.name,\n virtual_network_name=example_1.name,\n remote_virtual_network_id=example_2.id)\nexample_2_virtual_network_peering = azure.network.VirtualNetworkPeering(\"example-2\",\n name=\"peer2to1\",\n resource_group_name=example.name,\n virtual_network_name=example_2.name,\n remote_virtual_network_id=example_1.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"peeredvnets-rg\",\n Location = \"West Europe\",\n });\n\n var example_1 = new Azure.Network.VirtualNetwork(\"example-1\", new()\n {\n Name = \"peternetwork1\",\n ResourceGroupName = example.Name,\n AddressSpaces = new[]\n {\n \"10.0.1.0/24\",\n },\n Location = example.Location,\n });\n\n var example_2 = new Azure.Network.VirtualNetwork(\"example-2\", new()\n {\n Name = \"peternetwork2\",\n ResourceGroupName = example.Name,\n AddressSpaces = new[]\n {\n \"10.0.2.0/24\",\n },\n Location = example.Location,\n });\n\n var example_1VirtualNetworkPeering = new Azure.Network.VirtualNetworkPeering(\"example-1\", new()\n {\n Name = \"peer1to2\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = example_1.Name,\n RemoteVirtualNetworkId = example_2.Id,\n });\n\n var example_2VirtualNetworkPeering = new Azure.Network.VirtualNetworkPeering(\"example-2\", new()\n {\n Name = \"peer2to1\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = example_2.Name,\n RemoteVirtualNetworkId = example_1.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"peeredvnets-rg\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_1, err := network.NewVirtualNetwork(ctx, \"example-1\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"peternetwork1\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.1.0/24\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_2, err := network.NewVirtualNetwork(ctx, \"example-2\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"peternetwork2\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.2.0/24\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetworkPeering(ctx, \"example-1\", \u0026network.VirtualNetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peer1to2\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: example_1.Name,\n\t\t\tRemoteVirtualNetworkId: example_2.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetworkPeering(ctx, \"example-2\", \u0026network.VirtualNetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peer2to1\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: example_2.Name,\n\t\t\tRemoteVirtualNetworkId: example_1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.VirtualNetworkPeering;\nimport com.pulumi.azure.network.VirtualNetworkPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"peeredvnets-rg\")\n .location(\"West Europe\")\n .build());\n\n var example_1 = new VirtualNetwork(\"example-1\", VirtualNetworkArgs.builder()\n .name(\"peternetwork1\")\n .resourceGroupName(example.name())\n .addressSpaces(\"10.0.1.0/24\")\n .location(example.location())\n .build());\n\n var example_2 = new VirtualNetwork(\"example-2\", VirtualNetworkArgs.builder()\n .name(\"peternetwork2\")\n .resourceGroupName(example.name())\n .addressSpaces(\"10.0.2.0/24\")\n .location(example.location())\n .build());\n\n var example_1VirtualNetworkPeering = new VirtualNetworkPeering(\"example-1VirtualNetworkPeering\", VirtualNetworkPeeringArgs.builder()\n .name(\"peer1to2\")\n .resourceGroupName(example.name())\n .virtualNetworkName(example_1.name())\n .remoteVirtualNetworkId(example_2.id())\n .build());\n\n var example_2VirtualNetworkPeering = new VirtualNetworkPeering(\"example-2VirtualNetworkPeering\", VirtualNetworkPeeringArgs.builder()\n .name(\"peer2to1\")\n .resourceGroupName(example.name())\n .virtualNetworkName(example_2.name())\n .remoteVirtualNetworkId(example_1.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: peeredvnets-rg\n location: West Europe\n example-1:\n type: azure:network:VirtualNetwork\n properties:\n name: peternetwork1\n resourceGroupName: ${example.name}\n addressSpaces:\n - 10.0.1.0/24\n location: ${example.location}\n example-2:\n type: azure:network:VirtualNetwork\n properties:\n name: peternetwork2\n resourceGroupName: ${example.name}\n addressSpaces:\n - 10.0.2.0/24\n location: ${example.location}\n example-1VirtualNetworkPeering:\n type: azure:network:VirtualNetworkPeering\n name: example-1\n properties:\n name: peer1to2\n resourceGroupName: ${example.name}\n virtualNetworkName: ${[\"example-1\"].name}\n remoteVirtualNetworkId: ${[\"example-2\"].id}\n example-2VirtualNetworkPeering:\n type: azure:network:VirtualNetworkPeering\n name: example-2\n properties:\n name: peer2to1\n resourceGroupName: ${example.name}\n virtualNetworkName: ${[\"example-2\"].name}\n remoteVirtualNetworkId: ${[\"example-1\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Triggers)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\nimport * as std from \"@pulumi/std\";\n\nconst example = new azure.core.ResourceGroup(\"example\", {\n name: \"peeredvnets-rg\",\n location: \"West Europe\",\n});\nconst example_1 = new azure.network.VirtualNetwork(\"example-1\", {\n name: \"peternetwork1\",\n resourceGroupName: example.name,\n addressSpaces: [\"10.0.1.0/24\"],\n location: example.location,\n});\nconst example_2 = new azure.network.VirtualNetwork(\"example-2\", {\n name: \"peternetwork2\",\n resourceGroupName: example.name,\n addressSpaces: [\"10.0.2.0/24\"],\n location: example.location,\n});\nconst example_1VirtualNetworkPeering = new azure.network.VirtualNetworkPeering(\"example-1\", {\n name: \"peer1to2\",\n resourceGroupName: example.name,\n virtualNetworkName: example_1.name,\n remoteVirtualNetworkId: example_2.id,\n triggers: {\n remote_address_space: std.joinOutput({\n separator: \",\",\n input: example_2.addressSpaces,\n }).apply(invoke =\u003e invoke.result),\n },\n});\nconst example_2VirtualNetworkPeering = new azure.network.VirtualNetworkPeering(\"example-2\", {\n name: \"peer2to1\",\n resourceGroupName: example.name,\n virtualNetworkName: example_2.name,\n remoteVirtualNetworkId: example_1.id,\n triggers: {\n remote_address_space: std.joinOutput({\n separator: \",\",\n input: example_1.addressSpaces,\n }).apply(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\nimport pulumi_std as std\n\nexample = azure.core.ResourceGroup(\"example\",\n name=\"peeredvnets-rg\",\n location=\"West Europe\")\nexample_1 = azure.network.VirtualNetwork(\"example-1\",\n name=\"peternetwork1\",\n resource_group_name=example.name,\n address_spaces=[\"10.0.1.0/24\"],\n location=example.location)\nexample_2 = azure.network.VirtualNetwork(\"example-2\",\n name=\"peternetwork2\",\n resource_group_name=example.name,\n address_spaces=[\"10.0.2.0/24\"],\n location=example.location)\nexample_1_virtual_network_peering = azure.network.VirtualNetworkPeering(\"example-1\",\n name=\"peer1to2\",\n resource_group_name=example.name,\n virtual_network_name=example_1.name,\n remote_virtual_network_id=example_2.id,\n triggers={\n \"remote_address_space\": std.join_output(separator=\",\",\n input=example_2.address_spaces).apply(lambda invoke: invoke.result),\n })\nexample_2_virtual_network_peering = azure.network.VirtualNetworkPeering(\"example-2\",\n name=\"peer2to1\",\n resource_group_name=example.name,\n virtual_network_name=example_2.name,\n remote_virtual_network_id=example_1.id,\n triggers={\n \"remote_address_space\": std.join_output(separator=\",\",\n input=example_1.address_spaces).apply(lambda invoke: invoke.result),\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Azure.Core.ResourceGroup(\"example\", new()\n {\n Name = \"peeredvnets-rg\",\n Location = \"West Europe\",\n });\n\n var example_1 = new Azure.Network.VirtualNetwork(\"example-1\", new()\n {\n Name = \"peternetwork1\",\n ResourceGroupName = example.Name,\n AddressSpaces = new[]\n {\n \"10.0.1.0/24\",\n },\n Location = example.Location,\n });\n\n var example_2 = new Azure.Network.VirtualNetwork(\"example-2\", new()\n {\n Name = \"peternetwork2\",\n ResourceGroupName = example.Name,\n AddressSpaces = new[]\n {\n \"10.0.2.0/24\",\n },\n Location = example.Location,\n });\n\n var example_1VirtualNetworkPeering = new Azure.Network.VirtualNetworkPeering(\"example-1\", new()\n {\n Name = \"peer1to2\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = example_1.Name,\n RemoteVirtualNetworkId = example_2.Id,\n Triggers = \n {\n { \"remote_address_space\", Std.Join.Invoke(new()\n {\n Separator = \",\",\n Input = example_2.AddressSpaces,\n }).Apply(invoke =\u003e invoke.Result) },\n },\n });\n\n var example_2VirtualNetworkPeering = new Azure.Network.VirtualNetworkPeering(\"example-2\", new()\n {\n Name = \"peer2to1\",\n ResourceGroupName = example.Name,\n VirtualNetworkName = example_2.Name,\n RemoteVirtualNetworkId = example_1.Id,\n Triggers = \n {\n { \"remote_address_space\", Std.Join.Invoke(new()\n {\n Separator = \",\",\n Input = example_1.AddressSpaces,\n }).Apply(invoke =\u003e invoke.Result) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := core.NewResourceGroup(ctx, \"example\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"peeredvnets-rg\"),\n\t\t\tLocation: pulumi.String(\"West Europe\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_1, err := network.NewVirtualNetwork(ctx, \"example-1\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"peternetwork1\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.1.0/24\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_2, err := network.NewVirtualNetwork(ctx, \"example-2\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"peternetwork2\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.2.0/24\"),\n\t\t\t},\n\t\t\tLocation: example.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetworkPeering(ctx, \"example-1\", \u0026network.VirtualNetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peer1to2\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: example_1.Name,\n\t\t\tRemoteVirtualNetworkId: example_2.ID(),\n\t\t\tTriggers: pulumi.StringMap{\n\t\t\t\t\"remote_address_space\": pulumi.String(std.JoinOutput(ctx, std.JoinOutputArgs{\n\t\t\t\t\tSeparator: pulumi.String(\",\"),\n\t\t\t\t\tInput: example_2.AddressSpaces,\n\t\t\t\t}, nil).ApplyT(func(invoke std.JoinResult) (*string, error) {\n\t\t\t\t\treturn invoke.Result, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = network.NewVirtualNetworkPeering(ctx, \"example-2\", \u0026network.VirtualNetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peer2to1\"),\n\t\t\tResourceGroupName: example.Name,\n\t\t\tVirtualNetworkName: example_2.Name,\n\t\t\tRemoteVirtualNetworkId: example_1.ID(),\n\t\t\tTriggers: pulumi.StringMap{\n\t\t\t\t\"remote_address_space\": pulumi.String(std.JoinOutput(ctx, std.JoinOutputArgs{\n\t\t\t\t\tSeparator: pulumi.String(\",\"),\n\t\t\t\t\tInput: example_1.AddressSpaces,\n\t\t\t\t}, nil).ApplyT(func(invoke std.JoinResult) (*string, error) {\n\t\t\t\t\treturn invoke.Result, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.VirtualNetworkPeering;\nimport com.pulumi.azure.network.VirtualNetworkPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new ResourceGroup(\"example\", ResourceGroupArgs.builder()\n .name(\"peeredvnets-rg\")\n .location(\"West Europe\")\n .build());\n\n var example_1 = new VirtualNetwork(\"example-1\", VirtualNetworkArgs.builder()\n .name(\"peternetwork1\")\n .resourceGroupName(example.name())\n .addressSpaces(\"10.0.1.0/24\")\n .location(example.location())\n .build());\n\n var example_2 = new VirtualNetwork(\"example-2\", VirtualNetworkArgs.builder()\n .name(\"peternetwork2\")\n .resourceGroupName(example.name())\n .addressSpaces(\"10.0.2.0/24\")\n .location(example.location())\n .build());\n\n var example_1VirtualNetworkPeering = new VirtualNetworkPeering(\"example-1VirtualNetworkPeering\", VirtualNetworkPeeringArgs.builder()\n .name(\"peer1to2\")\n .resourceGroupName(example.name())\n .virtualNetworkName(example_1.name())\n .remoteVirtualNetworkId(example_2.id())\n .triggers(Map.of(\"remote_address_space\", StdFunctions.join().applyValue(invoke -\u003e invoke.result())))\n .build());\n\n var example_2VirtualNetworkPeering = new VirtualNetworkPeering(\"example-2VirtualNetworkPeering\", VirtualNetworkPeeringArgs.builder()\n .name(\"peer2to1\")\n .resourceGroupName(example.name())\n .virtualNetworkName(example_2.name())\n .remoteVirtualNetworkId(example_1.id())\n .triggers(Map.of(\"remote_address_space\", StdFunctions.join().applyValue(invoke -\u003e invoke.result())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azure:core:ResourceGroup\n properties:\n name: peeredvnets-rg\n location: West Europe\n example-1:\n type: azure:network:VirtualNetwork\n properties:\n name: peternetwork1\n resourceGroupName: ${example.name}\n addressSpaces:\n - 10.0.1.0/24\n location: ${example.location}\n example-2:\n type: azure:network:VirtualNetwork\n properties:\n name: peternetwork2\n resourceGroupName: ${example.name}\n addressSpaces:\n - 10.0.2.0/24\n location: ${example.location}\n example-1VirtualNetworkPeering:\n type: azure:network:VirtualNetworkPeering\n name: example-1\n properties:\n name: peer1to2\n resourceGroupName: ${example.name}\n virtualNetworkName: ${[\"example-1\"].name}\n remoteVirtualNetworkId: ${[\"example-2\"].id}\n triggers:\n remote_address_space:\n fn::invoke:\n function: std:join\n arguments:\n separator: ','\n input: ${[\"example-2\"].addressSpaces}\n return: result\n example-2VirtualNetworkPeering:\n type: azure:network:VirtualNetworkPeering\n name: example-2\n properties:\n name: peer2to1\n resourceGroupName: ${example.name}\n virtualNetworkName: ${[\"example-2\"].name}\n remoteVirtualNetworkId: ${[\"example-1\"].id}\n triggers:\n remote_address_space:\n fn::invoke:\n function: std:join\n arguments:\n separator: ','\n input: ${[\"example-1\"].addressSpaces}\n return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Note\n\nVirtual Network peerings cannot be created, updated or deleted concurrently.\n\n## Import\n\nVirtual Network Peerings can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:network/virtualNetworkPeering:VirtualNetworkPeering examplePeering /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Network/virtualNetworks/myvnet1/virtualNetworkPeerings/myvnet1peering\n```\n\n", "properties": { "allowForwardedTraffic": { "type": "boolean", @@ -256813,7 +256813,7 @@ } }, "azure:siterecovery/replicatedVM:ReplicatedVM": { - "description": "Manages a VM replicated using Azure Site Recovery (Azure to Azure only). A replicated VM keeps a copiously updated image of the VM in another region in order to be able to start the VM in that region in case of a disaster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst primary = new azure.core.ResourceGroup(\"primary\", {\n name: \"tfex-replicated-vm-primary\",\n location: \"West US\",\n});\nconst secondary = new azure.core.ResourceGroup(\"secondary\", {\n name: \"tfex-replicated-vm-secondary\",\n location: \"East US\",\n});\nconst primaryVirtualNetwork = new azure.network.VirtualNetwork(\"primary\", {\n name: \"network1\",\n resourceGroupName: primary.name,\n addressSpaces: [\"192.168.1.0/24\"],\n location: primary.location,\n});\nconst primarySubnet = new azure.network.Subnet(\"primary\", {\n name: \"network1-subnet\",\n resourceGroupName: primary.name,\n virtualNetworkName: primaryVirtualNetwork.name,\n addressPrefixes: [\"192.168.1.0/24\"],\n});\nconst primaryPublicIp = new azure.network.PublicIp(\"primary\", {\n name: \"vm-public-ip-primary\",\n allocationMethod: \"Static\",\n location: primary.location,\n resourceGroupName: primary.name,\n sku: \"Basic\",\n});\nconst vmNetworkInterface = new azure.network.NetworkInterface(\"vm\", {\n name: \"vm-nic\",\n location: primary.location,\n resourceGroupName: primary.name,\n ipConfigurations: [{\n name: \"vm\",\n subnetId: primarySubnet.id,\n privateIpAddressAllocation: \"Dynamic\",\n publicIpAddressId: primaryPublicIp.id,\n }],\n});\nconst vm = new azure.compute.VirtualMachine(\"vm\", {\n name: \"vm\",\n location: primary.location,\n resourceGroupName: primary.name,\n vmSize: \"Standard_B1s\",\n networkInterfaceIds: [vmNetworkInterface.id],\n storageImageReference: {\n publisher: \"Canonical\",\n offer: \"0001-com-ubuntu-server-jammy\",\n sku: \"22_04-lts\",\n version: \"latest\",\n },\n storageOsDisk: {\n name: \"vm-os-disk\",\n osType: \"Linux\",\n caching: \"ReadWrite\",\n createOption: \"FromImage\",\n managedDiskType: \"Premium_LRS\",\n },\n osProfile: {\n adminUsername: \"test-admin-123\",\n adminPassword: \"test-pwd-123\",\n computerName: \"vm\",\n },\n osProfileLinuxConfig: {\n disablePasswordAuthentication: false,\n },\n});\nconst vault = new azure.recoveryservices.Vault(\"vault\", {\n name: \"example-recovery-vault\",\n location: secondary.location,\n resourceGroupName: secondary.name,\n sku: \"Standard\",\n});\nconst primaryFabric = new azure.siterecovery.Fabric(\"primary\", {\n name: \"primary-fabric\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n location: primary.location,\n});\nconst secondaryFabric = new azure.siterecovery.Fabric(\"secondary\", {\n name: \"secondary-fabric\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n location: secondary.location,\n});\nconst primaryProtectionContainer = new azure.siterecovery.ProtectionContainer(\"primary\", {\n name: \"primary-protection-container\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: primaryFabric.name,\n});\nconst secondaryProtectionContainer = new azure.siterecovery.ProtectionContainer(\"secondary\", {\n name: \"secondary-protection-container\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: secondaryFabric.name,\n});\nconst policy = new azure.siterecovery.ReplicationPolicy(\"policy\", {\n name: \"policy\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryPointRetentionInMinutes: 24 * 60,\n applicationConsistentSnapshotFrequencyInMinutes: 4 * 60,\n});\nconst container_mapping = new azure.siterecovery.ProtectionContainerMapping(\"container-mapping\", {\n name: \"container-mapping\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: primaryFabric.name,\n recoverySourceProtectionContainerName: primaryProtectionContainer.name,\n recoveryTargetProtectionContainerId: secondaryProtectionContainer.id,\n recoveryReplicationPolicyId: policy.id,\n});\nconst secondaryVirtualNetwork = new azure.network.VirtualNetwork(\"secondary\", {\n name: \"network2\",\n resourceGroupName: secondary.name,\n addressSpaces: [\"192.168.2.0/24\"],\n location: secondary.location,\n});\nconst network_mapping = new azure.siterecovery.NetworkMapping(\"network-mapping\", {\n name: \"network-mapping\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n sourceRecoveryFabricName: primaryFabric.name,\n targetRecoveryFabricName: secondaryFabric.name,\n sourceNetworkId: primaryVirtualNetwork.id,\n targetNetworkId: secondaryVirtualNetwork.id,\n});\nconst primaryAccount = new azure.storage.Account(\"primary\", {\n name: \"primaryrecoverycache\",\n location: primary.location,\n resourceGroupName: primary.name,\n accountTier: \"Standard\",\n accountReplicationType: \"LRS\",\n});\nconst secondarySubnet = new azure.network.Subnet(\"secondary\", {\n name: \"network2-subnet\",\n resourceGroupName: secondary.name,\n virtualNetworkName: secondaryVirtualNetwork.name,\n addressPrefixes: [\"192.168.2.0/24\"],\n});\nconst secondaryPublicIp = new azure.network.PublicIp(\"secondary\", {\n name: \"vm-public-ip-secondary\",\n allocationMethod: \"Static\",\n location: secondary.location,\n resourceGroupName: secondary.name,\n sku: \"Basic\",\n});\nconst vm_replication = new azure.siterecovery.ReplicatedVM(\"vm-replication\", {\n name: \"vm-replication\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n sourceRecoveryFabricName: primaryFabric.name,\n sourceVmId: vm.id,\n recoveryReplicationPolicyId: policy.id,\n sourceRecoveryProtectionContainerName: primaryProtectionContainer.name,\n targetResourceGroupId: secondary.id,\n targetRecoveryFabricId: secondaryFabric.id,\n targetRecoveryProtectionContainerId: secondaryProtectionContainer.id,\n managedDisks: [{\n diskId: vm.storageOsDisk.apply(storageOsDisk =\u003e storageOsDisk.managedDiskId),\n stagingStorageAccountId: primaryAccount.id,\n targetResourceGroupId: secondary.id,\n targetDiskType: \"Premium_LRS\",\n targetReplicaDiskType: \"Premium_LRS\",\n }],\n networkInterfaces: [{\n sourceNetworkInterfaceId: vmNetworkInterface.id,\n targetSubnetName: secondarySubnet.name,\n recoveryPublicIpAddressId: secondaryPublicIp.id,\n }],\n}, {\n dependsOn: [\n container_mapping,\n network_mapping,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nprimary = azure.core.ResourceGroup(\"primary\",\n name=\"tfex-replicated-vm-primary\",\n location=\"West US\")\nsecondary = azure.core.ResourceGroup(\"secondary\",\n name=\"tfex-replicated-vm-secondary\",\n location=\"East US\")\nprimary_virtual_network = azure.network.VirtualNetwork(\"primary\",\n name=\"network1\",\n resource_group_name=primary.name,\n address_spaces=[\"192.168.1.0/24\"],\n location=primary.location)\nprimary_subnet = azure.network.Subnet(\"primary\",\n name=\"network1-subnet\",\n resource_group_name=primary.name,\n virtual_network_name=primary_virtual_network.name,\n address_prefixes=[\"192.168.1.0/24\"])\nprimary_public_ip = azure.network.PublicIp(\"primary\",\n name=\"vm-public-ip-primary\",\n allocation_method=\"Static\",\n location=primary.location,\n resource_group_name=primary.name,\n sku=\"Basic\")\nvm_network_interface = azure.network.NetworkInterface(\"vm\",\n name=\"vm-nic\",\n location=primary.location,\n resource_group_name=primary.name,\n ip_configurations=[{\n \"name\": \"vm\",\n \"subnet_id\": primary_subnet.id,\n \"private_ip_address_allocation\": \"Dynamic\",\n \"public_ip_address_id\": primary_public_ip.id,\n }])\nvm = azure.compute.VirtualMachine(\"vm\",\n name=\"vm\",\n location=primary.location,\n resource_group_name=primary.name,\n vm_size=\"Standard_B1s\",\n network_interface_ids=[vm_network_interface.id],\n storage_image_reference={\n \"publisher\": \"Canonical\",\n \"offer\": \"0001-com-ubuntu-server-jammy\",\n \"sku\": \"22_04-lts\",\n \"version\": \"latest\",\n },\n storage_os_disk={\n \"name\": \"vm-os-disk\",\n \"os_type\": \"Linux\",\n \"caching\": \"ReadWrite\",\n \"create_option\": \"FromImage\",\n \"managed_disk_type\": \"Premium_LRS\",\n },\n os_profile={\n \"admin_username\": \"test-admin-123\",\n \"admin_password\": \"test-pwd-123\",\n \"computer_name\": \"vm\",\n },\n os_profile_linux_config={\n \"disable_password_authentication\": False,\n })\nvault = azure.recoveryservices.Vault(\"vault\",\n name=\"example-recovery-vault\",\n location=secondary.location,\n resource_group_name=secondary.name,\n sku=\"Standard\")\nprimary_fabric = azure.siterecovery.Fabric(\"primary\",\n name=\"primary-fabric\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n location=primary.location)\nsecondary_fabric = azure.siterecovery.Fabric(\"secondary\",\n name=\"secondary-fabric\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n location=secondary.location)\nprimary_protection_container = azure.siterecovery.ProtectionContainer(\"primary\",\n name=\"primary-protection-container\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=primary_fabric.name)\nsecondary_protection_container = azure.siterecovery.ProtectionContainer(\"secondary\",\n name=\"secondary-protection-container\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=secondary_fabric.name)\npolicy = azure.siterecovery.ReplicationPolicy(\"policy\",\n name=\"policy\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_point_retention_in_minutes=24 * 60,\n application_consistent_snapshot_frequency_in_minutes=4 * 60)\ncontainer_mapping = azure.siterecovery.ProtectionContainerMapping(\"container-mapping\",\n name=\"container-mapping\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=primary_fabric.name,\n recovery_source_protection_container_name=primary_protection_container.name,\n recovery_target_protection_container_id=secondary_protection_container.id,\n recovery_replication_policy_id=policy.id)\nsecondary_virtual_network = azure.network.VirtualNetwork(\"secondary\",\n name=\"network2\",\n resource_group_name=secondary.name,\n address_spaces=[\"192.168.2.0/24\"],\n location=secondary.location)\nnetwork_mapping = azure.siterecovery.NetworkMapping(\"network-mapping\",\n name=\"network-mapping\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n source_recovery_fabric_name=primary_fabric.name,\n target_recovery_fabric_name=secondary_fabric.name,\n source_network_id=primary_virtual_network.id,\n target_network_id=secondary_virtual_network.id)\nprimary_account = azure.storage.Account(\"primary\",\n name=\"primaryrecoverycache\",\n location=primary.location,\n resource_group_name=primary.name,\n account_tier=\"Standard\",\n account_replication_type=\"LRS\")\nsecondary_subnet = azure.network.Subnet(\"secondary\",\n name=\"network2-subnet\",\n resource_group_name=secondary.name,\n virtual_network_name=secondary_virtual_network.name,\n address_prefixes=[\"192.168.2.0/24\"])\nsecondary_public_ip = azure.network.PublicIp(\"secondary\",\n name=\"vm-public-ip-secondary\",\n allocation_method=\"Static\",\n location=secondary.location,\n resource_group_name=secondary.name,\n sku=\"Basic\")\nvm_replication = azure.siterecovery.ReplicatedVM(\"vm-replication\",\n name=\"vm-replication\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n source_recovery_fabric_name=primary_fabric.name,\n source_vm_id=vm.id,\n recovery_replication_policy_id=policy.id,\n source_recovery_protection_container_name=primary_protection_container.name,\n target_resource_group_id=secondary.id,\n target_recovery_fabric_id=secondary_fabric.id,\n target_recovery_protection_container_id=secondary_protection_container.id,\n managed_disks=[{\n \"disk_id\": vm.storage_os_disk.managed_disk_id,\n \"staging_storage_account_id\": primary_account.id,\n \"target_resource_group_id\": secondary.id,\n \"target_disk_type\": \"Premium_LRS\",\n \"target_replica_disk_type\": \"Premium_LRS\",\n }],\n network_interfaces=[{\n \"source_network_interface_id\": vm_network_interface.id,\n \"target_subnet_name\": secondary_subnet.name,\n \"recovery_public_ip_address_id\": secondary_public_ip.id,\n }],\n opts = pulumi.ResourceOptions(depends_on=[\n container_mapping,\n network_mapping,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Azure.Core.ResourceGroup(\"primary\", new()\n {\n Name = \"tfex-replicated-vm-primary\",\n Location = \"West US\",\n });\n\n var secondary = new Azure.Core.ResourceGroup(\"secondary\", new()\n {\n Name = \"tfex-replicated-vm-secondary\",\n Location = \"East US\",\n });\n\n var primaryVirtualNetwork = new Azure.Network.VirtualNetwork(\"primary\", new()\n {\n Name = \"network1\",\n ResourceGroupName = primary.Name,\n AddressSpaces = new[]\n {\n \"192.168.1.0/24\",\n },\n Location = primary.Location,\n });\n\n var primarySubnet = new Azure.Network.Subnet(\"primary\", new()\n {\n Name = \"network1-subnet\",\n ResourceGroupName = primary.Name,\n VirtualNetworkName = primaryVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"192.168.1.0/24\",\n },\n });\n\n var primaryPublicIp = new Azure.Network.PublicIp(\"primary\", new()\n {\n Name = \"vm-public-ip-primary\",\n AllocationMethod = \"Static\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n Sku = \"Basic\",\n });\n\n var vmNetworkInterface = new Azure.Network.NetworkInterface(\"vm\", new()\n {\n Name = \"vm-nic\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n IpConfigurations = new[]\n {\n new Azure.Network.Inputs.NetworkInterfaceIpConfigurationArgs\n {\n Name = \"vm\",\n SubnetId = primarySubnet.Id,\n PrivateIpAddressAllocation = \"Dynamic\",\n PublicIpAddressId = primaryPublicIp.Id,\n },\n },\n });\n\n var vm = new Azure.Compute.VirtualMachine(\"vm\", new()\n {\n Name = \"vm\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n VmSize = \"Standard_B1s\",\n NetworkInterfaceIds = new[]\n {\n vmNetworkInterface.Id,\n },\n StorageImageReference = new Azure.Compute.Inputs.VirtualMachineStorageImageReferenceArgs\n {\n Publisher = \"Canonical\",\n Offer = \"0001-com-ubuntu-server-jammy\",\n Sku = \"22_04-lts\",\n Version = \"latest\",\n },\n StorageOsDisk = new Azure.Compute.Inputs.VirtualMachineStorageOsDiskArgs\n {\n Name = \"vm-os-disk\",\n OsType = \"Linux\",\n Caching = \"ReadWrite\",\n CreateOption = \"FromImage\",\n ManagedDiskType = \"Premium_LRS\",\n },\n OsProfile = new Azure.Compute.Inputs.VirtualMachineOsProfileArgs\n {\n AdminUsername = \"test-admin-123\",\n AdminPassword = \"test-pwd-123\",\n ComputerName = \"vm\",\n },\n OsProfileLinuxConfig = new Azure.Compute.Inputs.VirtualMachineOsProfileLinuxConfigArgs\n {\n DisablePasswordAuthentication = false,\n },\n });\n\n var vault = new Azure.RecoveryServices.Vault(\"vault\", new()\n {\n Name = \"example-recovery-vault\",\n Location = secondary.Location,\n ResourceGroupName = secondary.Name,\n Sku = \"Standard\",\n });\n\n var primaryFabric = new Azure.SiteRecovery.Fabric(\"primary\", new()\n {\n Name = \"primary-fabric\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n Location = primary.Location,\n });\n\n var secondaryFabric = new Azure.SiteRecovery.Fabric(\"secondary\", new()\n {\n Name = \"secondary-fabric\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n Location = secondary.Location,\n });\n\n var primaryProtectionContainer = new Azure.SiteRecovery.ProtectionContainer(\"primary\", new()\n {\n Name = \"primary-protection-container\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = primaryFabric.Name,\n });\n\n var secondaryProtectionContainer = new Azure.SiteRecovery.ProtectionContainer(\"secondary\", new()\n {\n Name = \"secondary-protection-container\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = secondaryFabric.Name,\n });\n\n var policy = new Azure.SiteRecovery.ReplicationPolicy(\"policy\", new()\n {\n Name = \"policy\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryPointRetentionInMinutes = 24 * 60,\n ApplicationConsistentSnapshotFrequencyInMinutes = 4 * 60,\n });\n\n var container_mapping = new Azure.SiteRecovery.ProtectionContainerMapping(\"container-mapping\", new()\n {\n Name = \"container-mapping\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = primaryFabric.Name,\n RecoverySourceProtectionContainerName = primaryProtectionContainer.Name,\n RecoveryTargetProtectionContainerId = secondaryProtectionContainer.Id,\n RecoveryReplicationPolicyId = policy.Id,\n });\n\n var secondaryVirtualNetwork = new Azure.Network.VirtualNetwork(\"secondary\", new()\n {\n Name = \"network2\",\n ResourceGroupName = secondary.Name,\n AddressSpaces = new[]\n {\n \"192.168.2.0/24\",\n },\n Location = secondary.Location,\n });\n\n var network_mapping = new Azure.SiteRecovery.NetworkMapping(\"network-mapping\", new()\n {\n Name = \"network-mapping\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n SourceRecoveryFabricName = primaryFabric.Name,\n TargetRecoveryFabricName = secondaryFabric.Name,\n SourceNetworkId = primaryVirtualNetwork.Id,\n TargetNetworkId = secondaryVirtualNetwork.Id,\n });\n\n var primaryAccount = new Azure.Storage.Account(\"primary\", new()\n {\n Name = \"primaryrecoverycache\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"LRS\",\n });\n\n var secondarySubnet = new Azure.Network.Subnet(\"secondary\", new()\n {\n Name = \"network2-subnet\",\n ResourceGroupName = secondary.Name,\n VirtualNetworkName = secondaryVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"192.168.2.0/24\",\n },\n });\n\n var secondaryPublicIp = new Azure.Network.PublicIp(\"secondary\", new()\n {\n Name = \"vm-public-ip-secondary\",\n AllocationMethod = \"Static\",\n Location = secondary.Location,\n ResourceGroupName = secondary.Name,\n Sku = \"Basic\",\n });\n\n var vm_replication = new Azure.SiteRecovery.ReplicatedVM(\"vm-replication\", new()\n {\n Name = \"vm-replication\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n SourceRecoveryFabricName = primaryFabric.Name,\n SourceVmId = vm.Id,\n RecoveryReplicationPolicyId = policy.Id,\n SourceRecoveryProtectionContainerName = primaryProtectionContainer.Name,\n TargetResourceGroupId = secondary.Id,\n TargetRecoveryFabricId = secondaryFabric.Id,\n TargetRecoveryProtectionContainerId = secondaryProtectionContainer.Id,\n ManagedDisks = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicatedVMManagedDiskArgs\n {\n DiskId = vm.StorageOsDisk.Apply(storageOsDisk =\u003e storageOsDisk.ManagedDiskId),\n StagingStorageAccountId = primaryAccount.Id,\n TargetResourceGroupId = secondary.Id,\n TargetDiskType = \"Premium_LRS\",\n TargetReplicaDiskType = \"Premium_LRS\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicatedVMNetworkInterfaceArgs\n {\n SourceNetworkInterfaceId = vmNetworkInterface.Id,\n TargetSubnetName = secondarySubnet.Name,\n RecoveryPublicIpAddressId = secondaryPublicIp.Id,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n container_mapping,\n network_mapping,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/compute\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/recoveryservices\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/siterecovery\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := core.NewResourceGroup(ctx, \"primary\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-replicated-vm-primary\"),\n\t\t\tLocation: pulumi.String(\"West US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondary, err := core.NewResourceGroup(ctx, \"secondary\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-replicated-vm-secondary\"),\n\t\t\tLocation: pulumi.String(\"East US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"primary\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"network1\"),\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.1.0/24\"),\n\t\t\t},\n\t\t\tLocation: primary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimarySubnet, err := network.NewSubnet(ctx, \"primary\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"network1-subnet\"),\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tVirtualNetworkName: primaryVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.1.0/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryPublicIp, err := network.NewPublicIp(ctx, \"primary\", \u0026network.PublicIpArgs{\n\t\t\tName: pulumi.String(\"vm-public-ip-primary\"),\n\t\t\tAllocationMethod: pulumi.String(\"Static\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tSku: pulumi.String(\"Basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvmNetworkInterface, err := network.NewNetworkInterface(ctx, \"vm\", \u0026network.NetworkInterfaceArgs{\n\t\t\tName: pulumi.String(\"vm-nic\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tIpConfigurations: network.NetworkInterfaceIpConfigurationArray{\n\t\t\t\t\u0026network.NetworkInterfaceIpConfigurationArgs{\n\t\t\t\t\tName: pulumi.String(\"vm\"),\n\t\t\t\t\tSubnetId: primarySubnet.ID(),\n\t\t\t\t\tPrivateIpAddressAllocation: pulumi.String(\"Dynamic\"),\n\t\t\t\t\tPublicIpAddressId: primaryPublicIp.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvm, err := compute.NewVirtualMachine(ctx, \"vm\", \u0026compute.VirtualMachineArgs{\n\t\t\tName: pulumi.String(\"vm\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tVmSize: pulumi.String(\"Standard_B1s\"),\n\t\t\tNetworkInterfaceIds: pulumi.StringArray{\n\t\t\t\tvmNetworkInterface.ID(),\n\t\t\t},\n\t\t\tStorageImageReference: \u0026compute.VirtualMachineStorageImageReferenceArgs{\n\t\t\t\tPublisher: pulumi.String(\"Canonical\"),\n\t\t\t\tOffer: pulumi.String(\"0001-com-ubuntu-server-jammy\"),\n\t\t\t\tSku: pulumi.String(\"22_04-lts\"),\n\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t},\n\t\t\tStorageOsDisk: \u0026compute.VirtualMachineStorageOsDiskArgs{\n\t\t\t\tName: pulumi.String(\"vm-os-disk\"),\n\t\t\t\tOsType: pulumi.String(\"Linux\"),\n\t\t\t\tCaching: pulumi.String(\"ReadWrite\"),\n\t\t\t\tCreateOption: pulumi.String(\"FromImage\"),\n\t\t\t\tManagedDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t},\n\t\t\tOsProfile: \u0026compute.VirtualMachineOsProfileArgs{\n\t\t\t\tAdminUsername: pulumi.String(\"test-admin-123\"),\n\t\t\t\tAdminPassword: pulumi.String(\"test-pwd-123\"),\n\t\t\t\tComputerName: pulumi.String(\"vm\"),\n\t\t\t},\n\t\t\tOsProfileLinuxConfig: \u0026compute.VirtualMachineOsProfileLinuxConfigArgs{\n\t\t\t\tDisablePasswordAuthentication: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvault, err := recoveryservices.NewVault(ctx, \"vault\", \u0026recoveryservices.VaultArgs{\n\t\t\tName: pulumi.String(\"example-recovery-vault\"),\n\t\t\tLocation: secondary.Location,\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tSku: pulumi.String(\"Standard\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryFabric, err := siterecovery.NewFabric(ctx, \"primary\", \u0026siterecovery.FabricArgs{\n\t\t\tName: pulumi.String(\"primary-fabric\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tLocation: primary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryFabric, err := siterecovery.NewFabric(ctx, \"secondary\", \u0026siterecovery.FabricArgs{\n\t\t\tName: pulumi.String(\"secondary-fabric\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tLocation: secondary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryProtectionContainer, err := siterecovery.NewProtectionContainer(ctx, \"primary\", \u0026siterecovery.ProtectionContainerArgs{\n\t\t\tName: pulumi.String(\"primary-protection-container\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: primaryFabric.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryProtectionContainer, err := siterecovery.NewProtectionContainer(ctx, \"secondary\", \u0026siterecovery.ProtectionContainerArgs{\n\t\t\tName: pulumi.String(\"secondary-protection-container\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: secondaryFabric.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy, err := siterecovery.NewReplicationPolicy(ctx, \"policy\", \u0026siterecovery.ReplicationPolicyArgs{\n\t\t\tName: pulumi.String(\"policy\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryPointRetentionInMinutes: int(24 * 60),\n\t\t\tApplicationConsistentSnapshotFrequencyInMinutes: int(4 * 60),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = siterecovery.NewProtectionContainerMapping(ctx, \"container-mapping\", \u0026siterecovery.ProtectionContainerMappingArgs{\n\t\t\tName: pulumi.String(\"container-mapping\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: primaryFabric.Name,\n\t\t\tRecoverySourceProtectionContainerName: primaryProtectionContainer.Name,\n\t\t\tRecoveryTargetProtectionContainerId: secondaryProtectionContainer.ID(),\n\t\t\tRecoveryReplicationPolicyId: policy.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"secondary\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"network2\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.2.0/24\"),\n\t\t\t},\n\t\t\tLocation: secondary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = siterecovery.NewNetworkMapping(ctx, \"network-mapping\", \u0026siterecovery.NetworkMappingArgs{\n\t\t\tName: pulumi.String(\"network-mapping\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceRecoveryFabricName: primaryFabric.Name,\n\t\t\tTargetRecoveryFabricName: secondaryFabric.Name,\n\t\t\tSourceNetworkId: primaryVirtualNetwork.ID(),\n\t\t\tTargetNetworkId: secondaryVirtualNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryAccount, err := storage.NewAccount(ctx, \"primary\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"primaryrecoverycache\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"LRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondarySubnet, err := network.NewSubnet(ctx, \"secondary\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"network2-subnet\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tVirtualNetworkName: secondaryVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.2.0/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryPublicIp, err := network.NewPublicIp(ctx, \"secondary\", \u0026network.PublicIpArgs{\n\t\t\tName: pulumi.String(\"vm-public-ip-secondary\"),\n\t\t\tAllocationMethod: pulumi.String(\"Static\"),\n\t\t\tLocation: secondary.Location,\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tSku: pulumi.String(\"Basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = siterecovery.NewReplicatedVM(ctx, \"vm-replication\", \u0026siterecovery.ReplicatedVMArgs{\n\t\t\tName: pulumi.String(\"vm-replication\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceRecoveryFabricName: primaryFabric.Name,\n\t\t\tSourceVmId: vm.ID(),\n\t\t\tRecoveryReplicationPolicyId: policy.ID(),\n\t\t\tSourceRecoveryProtectionContainerName: primaryProtectionContainer.Name,\n\t\t\tTargetResourceGroupId: secondary.ID(),\n\t\t\tTargetRecoveryFabricId: secondaryFabric.ID(),\n\t\t\tTargetRecoveryProtectionContainerId: secondaryProtectionContainer.ID(),\n\t\t\tManagedDisks: siterecovery.ReplicatedVMManagedDiskArray{\n\t\t\t\t\u0026siterecovery.ReplicatedVMManagedDiskArgs{\n\t\t\t\t\tDiskId: vm.StorageOsDisk.ApplyT(func(storageOsDisk compute.VirtualMachineStorageOsDisk) (*string, error) {\n\t\t\t\t\t\treturn \u0026storageOsDisk.ManagedDiskId, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\tStagingStorageAccountId: primaryAccount.ID(),\n\t\t\t\t\tTargetResourceGroupId: secondary.ID(),\n\t\t\t\t\tTargetDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t\t\tTargetReplicaDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: siterecovery.ReplicatedVMNetworkInterfaceArray{\n\t\t\t\t\u0026siterecovery.ReplicatedVMNetworkInterfaceArgs{\n\t\t\t\t\tSourceNetworkInterfaceId: vmNetworkInterface.ID(),\n\t\t\t\t\tTargetSubnetName: secondarySubnet.Name,\n\t\t\t\t\tRecoveryPublicIpAddressId: secondaryPublicIp.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcontainer_mapping,\n\t\t\tnetwork_mapping,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.Subnet;\nimport com.pulumi.azure.network.SubnetArgs;\nimport com.pulumi.azure.network.PublicIp;\nimport com.pulumi.azure.network.PublicIpArgs;\nimport com.pulumi.azure.network.NetworkInterface;\nimport com.pulumi.azure.network.NetworkInterfaceArgs;\nimport com.pulumi.azure.network.inputs.NetworkInterfaceIpConfigurationArgs;\nimport com.pulumi.azure.compute.VirtualMachine;\nimport com.pulumi.azure.compute.VirtualMachineArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineStorageImageReferenceArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineStorageOsDiskArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineOsProfileArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineOsProfileLinuxConfigArgs;\nimport com.pulumi.azure.recoveryservices.Vault;\nimport com.pulumi.azure.recoveryservices.VaultArgs;\nimport com.pulumi.azure.siterecovery.Fabric;\nimport com.pulumi.azure.siterecovery.FabricArgs;\nimport com.pulumi.azure.siterecovery.ProtectionContainer;\nimport com.pulumi.azure.siterecovery.ProtectionContainerArgs;\nimport com.pulumi.azure.siterecovery.ReplicationPolicy;\nimport com.pulumi.azure.siterecovery.ReplicationPolicyArgs;\nimport com.pulumi.azure.siterecovery.ProtectionContainerMapping;\nimport com.pulumi.azure.siterecovery.ProtectionContainerMappingArgs;\nimport com.pulumi.azure.siterecovery.NetworkMapping;\nimport com.pulumi.azure.siterecovery.NetworkMappingArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.siterecovery.ReplicatedVM;\nimport com.pulumi.azure.siterecovery.ReplicatedVMArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicatedVMManagedDiskArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicatedVMNetworkInterfaceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new ResourceGroup(\"primary\", ResourceGroupArgs.builder()\n .name(\"tfex-replicated-vm-primary\")\n .location(\"West US\")\n .build());\n\n var secondary = new ResourceGroup(\"secondary\", ResourceGroupArgs.builder()\n .name(\"tfex-replicated-vm-secondary\")\n .location(\"East US\")\n .build());\n\n var primaryVirtualNetwork = new VirtualNetwork(\"primaryVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"network1\")\n .resourceGroupName(primary.name())\n .addressSpaces(\"192.168.1.0/24\")\n .location(primary.location())\n .build());\n\n var primarySubnet = new Subnet(\"primarySubnet\", SubnetArgs.builder()\n .name(\"network1-subnet\")\n .resourceGroupName(primary.name())\n .virtualNetworkName(primaryVirtualNetwork.name())\n .addressPrefixes(\"192.168.1.0/24\")\n .build());\n\n var primaryPublicIp = new PublicIp(\"primaryPublicIp\", PublicIpArgs.builder()\n .name(\"vm-public-ip-primary\")\n .allocationMethod(\"Static\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .sku(\"Basic\")\n .build());\n\n var vmNetworkInterface = new NetworkInterface(\"vmNetworkInterface\", NetworkInterfaceArgs.builder()\n .name(\"vm-nic\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .ipConfigurations(NetworkInterfaceIpConfigurationArgs.builder()\n .name(\"vm\")\n .subnetId(primarySubnet.id())\n .privateIpAddressAllocation(\"Dynamic\")\n .publicIpAddressId(primaryPublicIp.id())\n .build())\n .build());\n\n var vm = new VirtualMachine(\"vm\", VirtualMachineArgs.builder()\n .name(\"vm\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .vmSize(\"Standard_B1s\")\n .networkInterfaceIds(vmNetworkInterface.id())\n .storageImageReference(VirtualMachineStorageImageReferenceArgs.builder()\n .publisher(\"Canonical\")\n .offer(\"0001-com-ubuntu-server-jammy\")\n .sku(\"22_04-lts\")\n .version(\"latest\")\n .build())\n .storageOsDisk(VirtualMachineStorageOsDiskArgs.builder()\n .name(\"vm-os-disk\")\n .osType(\"Linux\")\n .caching(\"ReadWrite\")\n .createOption(\"FromImage\")\n .managedDiskType(\"Premium_LRS\")\n .build())\n .osProfile(VirtualMachineOsProfileArgs.builder()\n .adminUsername(\"test-admin-123\")\n .adminPassword(\"test-pwd-123\")\n .computerName(\"vm\")\n .build())\n .osProfileLinuxConfig(VirtualMachineOsProfileLinuxConfigArgs.builder()\n .disablePasswordAuthentication(false)\n .build())\n .build());\n\n var vault = new Vault(\"vault\", VaultArgs.builder()\n .name(\"example-recovery-vault\")\n .location(secondary.location())\n .resourceGroupName(secondary.name())\n .sku(\"Standard\")\n .build());\n\n var primaryFabric = new Fabric(\"primaryFabric\", FabricArgs.builder()\n .name(\"primary-fabric\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .location(primary.location())\n .build());\n\n var secondaryFabric = new Fabric(\"secondaryFabric\", FabricArgs.builder()\n .name(\"secondary-fabric\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .location(secondary.location())\n .build());\n\n var primaryProtectionContainer = new ProtectionContainer(\"primaryProtectionContainer\", ProtectionContainerArgs.builder()\n .name(\"primary-protection-container\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(primaryFabric.name())\n .build());\n\n var secondaryProtectionContainer = new ProtectionContainer(\"secondaryProtectionContainer\", ProtectionContainerArgs.builder()\n .name(\"secondary-protection-container\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(secondaryFabric.name())\n .build());\n\n var policy = new ReplicationPolicy(\"policy\", ReplicationPolicyArgs.builder()\n .name(\"policy\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryPointRetentionInMinutes(24 * 60)\n .applicationConsistentSnapshotFrequencyInMinutes(4 * 60)\n .build());\n\n var container_mapping = new ProtectionContainerMapping(\"container-mapping\", ProtectionContainerMappingArgs.builder()\n .name(\"container-mapping\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(primaryFabric.name())\n .recoverySourceProtectionContainerName(primaryProtectionContainer.name())\n .recoveryTargetProtectionContainerId(secondaryProtectionContainer.id())\n .recoveryReplicationPolicyId(policy.id())\n .build());\n\n var secondaryVirtualNetwork = new VirtualNetwork(\"secondaryVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"network2\")\n .resourceGroupName(secondary.name())\n .addressSpaces(\"192.168.2.0/24\")\n .location(secondary.location())\n .build());\n\n var network_mapping = new NetworkMapping(\"network-mapping\", NetworkMappingArgs.builder()\n .name(\"network-mapping\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .sourceRecoveryFabricName(primaryFabric.name())\n .targetRecoveryFabricName(secondaryFabric.name())\n .sourceNetworkId(primaryVirtualNetwork.id())\n .targetNetworkId(secondaryVirtualNetwork.id())\n .build());\n\n var primaryAccount = new Account(\"primaryAccount\", AccountArgs.builder()\n .name(\"primaryrecoverycache\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"LRS\")\n .build());\n\n var secondarySubnet = new Subnet(\"secondarySubnet\", SubnetArgs.builder()\n .name(\"network2-subnet\")\n .resourceGroupName(secondary.name())\n .virtualNetworkName(secondaryVirtualNetwork.name())\n .addressPrefixes(\"192.168.2.0/24\")\n .build());\n\n var secondaryPublicIp = new PublicIp(\"secondaryPublicIp\", PublicIpArgs.builder()\n .name(\"vm-public-ip-secondary\")\n .allocationMethod(\"Static\")\n .location(secondary.location())\n .resourceGroupName(secondary.name())\n .sku(\"Basic\")\n .build());\n\n var vm_replication = new ReplicatedVM(\"vm-replication\", ReplicatedVMArgs.builder()\n .name(\"vm-replication\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .sourceRecoveryFabricName(primaryFabric.name())\n .sourceVmId(vm.id())\n .recoveryReplicationPolicyId(policy.id())\n .sourceRecoveryProtectionContainerName(primaryProtectionContainer.name())\n .targetResourceGroupId(secondary.id())\n .targetRecoveryFabricId(secondaryFabric.id())\n .targetRecoveryProtectionContainerId(secondaryProtectionContainer.id())\n .managedDisks(ReplicatedVMManagedDiskArgs.builder()\n .diskId(vm.storageOsDisk().applyValue(storageOsDisk -\u003e storageOsDisk.managedDiskId()))\n .stagingStorageAccountId(primaryAccount.id())\n .targetResourceGroupId(secondary.id())\n .targetDiskType(\"Premium_LRS\")\n .targetReplicaDiskType(\"Premium_LRS\")\n .build())\n .networkInterfaces(ReplicatedVMNetworkInterfaceArgs.builder()\n .sourceNetworkInterfaceId(vmNetworkInterface.id())\n .targetSubnetName(secondarySubnet.name())\n .recoveryPublicIpAddressId(secondaryPublicIp.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n container_mapping,\n network_mapping)\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSite Recovery Replicated VM's can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:siterecovery/replicatedVM:ReplicatedVM vmreplication /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/Microsoft.RecoveryServices/vaults/recovery-vault-name/replicationFabrics/fabric-name/replicationProtectionContainers/protection-container-name/replicationProtectedItems/vm-replication-name\n```\n\n", + "description": "Manages a VM replicated using Azure Site Recovery (Azure to Azure only). A replicated VM keeps a copiously updated image of the VM in another region in order to be able to start the VM in that region in case of a disaster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst primary = new azure.core.ResourceGroup(\"primary\", {\n name: \"tfex-replicated-vm-primary\",\n location: \"West US\",\n});\nconst secondary = new azure.core.ResourceGroup(\"secondary\", {\n name: \"tfex-replicated-vm-secondary\",\n location: \"East US\",\n});\nconst primaryVirtualNetwork = new azure.network.VirtualNetwork(\"primary\", {\n name: \"network1\",\n resourceGroupName: primary.name,\n addressSpaces: [\"192.168.1.0/24\"],\n location: primary.location,\n});\nconst primarySubnet = new azure.network.Subnet(\"primary\", {\n name: \"network1-subnet\",\n resourceGroupName: primary.name,\n virtualNetworkName: primaryVirtualNetwork.name,\n addressPrefixes: [\"192.168.1.0/24\"],\n});\nconst primaryPublicIp = new azure.network.PublicIp(\"primary\", {\n name: \"vm-public-ip-primary\",\n allocationMethod: \"Static\",\n location: primary.location,\n resourceGroupName: primary.name,\n sku: \"Basic\",\n});\nconst vmNetworkInterface = new azure.network.NetworkInterface(\"vm\", {\n name: \"vm-nic\",\n location: primary.location,\n resourceGroupName: primary.name,\n ipConfigurations: [{\n name: \"vm\",\n subnetId: primarySubnet.id,\n privateIpAddressAllocation: \"Dynamic\",\n publicIpAddressId: primaryPublicIp.id,\n }],\n});\nconst vm = new azure.compute.VirtualMachine(\"vm\", {\n name: \"vm\",\n location: primary.location,\n resourceGroupName: primary.name,\n vmSize: \"Standard_B1s\",\n networkInterfaceIds: [vmNetworkInterface.id],\n storageImageReference: {\n publisher: \"Canonical\",\n offer: \"0001-com-ubuntu-server-jammy\",\n sku: \"22_04-lts\",\n version: \"latest\",\n },\n storageOsDisk: {\n name: \"vm-os-disk\",\n osType: \"Linux\",\n caching: \"ReadWrite\",\n createOption: \"FromImage\",\n managedDiskType: \"Premium_LRS\",\n },\n osProfile: {\n adminUsername: \"test-admin-123\",\n adminPassword: \"test-pwd-123\",\n computerName: \"vm\",\n },\n osProfileLinuxConfig: {\n disablePasswordAuthentication: false,\n },\n});\nconst vault = new azure.recoveryservices.Vault(\"vault\", {\n name: \"example-recovery-vault\",\n location: secondary.location,\n resourceGroupName: secondary.name,\n sku: \"Standard\",\n});\nconst primaryFabric = new azure.siterecovery.Fabric(\"primary\", {\n name: \"primary-fabric\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n location: primary.location,\n});\nconst secondaryFabric = new azure.siterecovery.Fabric(\"secondary\", {\n name: \"secondary-fabric\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n location: secondary.location,\n});\nconst primaryProtectionContainer = new azure.siterecovery.ProtectionContainer(\"primary\", {\n name: \"primary-protection-container\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: primaryFabric.name,\n});\nconst secondaryProtectionContainer = new azure.siterecovery.ProtectionContainer(\"secondary\", {\n name: \"secondary-protection-container\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: secondaryFabric.name,\n});\nconst policy = new azure.siterecovery.ReplicationPolicy(\"policy\", {\n name: \"policy\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryPointRetentionInMinutes: 24 * 60,\n applicationConsistentSnapshotFrequencyInMinutes: 4 * 60,\n});\nconst container_mapping = new azure.siterecovery.ProtectionContainerMapping(\"container-mapping\", {\n name: \"container-mapping\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: primaryFabric.name,\n recoverySourceProtectionContainerName: primaryProtectionContainer.name,\n recoveryTargetProtectionContainerId: secondaryProtectionContainer.id,\n recoveryReplicationPolicyId: policy.id,\n});\nconst secondaryVirtualNetwork = new azure.network.VirtualNetwork(\"secondary\", {\n name: \"network2\",\n resourceGroupName: secondary.name,\n addressSpaces: [\"192.168.2.0/24\"],\n location: secondary.location,\n});\nconst network_mapping = new azure.siterecovery.NetworkMapping(\"network-mapping\", {\n name: \"network-mapping\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n sourceRecoveryFabricName: primaryFabric.name,\n targetRecoveryFabricName: secondaryFabric.name,\n sourceNetworkId: primaryVirtualNetwork.id,\n targetNetworkId: secondaryVirtualNetwork.id,\n});\nconst primaryAccount = new azure.storage.Account(\"primary\", {\n name: \"primaryrecoverycache\",\n location: primary.location,\n resourceGroupName: primary.name,\n accountTier: \"Standard\",\n accountReplicationType: \"LRS\",\n});\nconst secondarySubnet = new azure.network.Subnet(\"secondary\", {\n name: \"network2-subnet\",\n resourceGroupName: secondary.name,\n virtualNetworkName: secondaryVirtualNetwork.name,\n addressPrefixes: [\"192.168.2.0/24\"],\n});\nconst secondaryPublicIp = new azure.network.PublicIp(\"secondary\", {\n name: \"vm-public-ip-secondary\",\n allocationMethod: \"Static\",\n location: secondary.location,\n resourceGroupName: secondary.name,\n sku: \"Basic\",\n});\nconst vm_replication = new azure.siterecovery.ReplicatedVM(\"vm-replication\", {\n name: \"vm-replication\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n sourceRecoveryFabricName: primaryFabric.name,\n sourceVmId: vm.id,\n recoveryReplicationPolicyId: policy.id,\n sourceRecoveryProtectionContainerName: primaryProtectionContainer.name,\n targetResourceGroupId: secondary.id,\n targetRecoveryFabricId: secondaryFabric.id,\n targetRecoveryProtectionContainerId: secondaryProtectionContainer.id,\n managedDisks: [{\n diskId: vm.storageOsDisk.apply(storageOsDisk =\u003e storageOsDisk.managedDiskId),\n stagingStorageAccountId: primaryAccount.id,\n targetResourceGroupId: secondary.id,\n targetDiskType: \"Premium_LRS\",\n targetReplicaDiskType: \"Premium_LRS\",\n }],\n networkInterfaces: [{\n sourceNetworkInterfaceId: vmNetworkInterface.id,\n targetSubnetName: secondarySubnet.name,\n recoveryPublicIpAddressId: secondaryPublicIp.id,\n }],\n}, {\n dependsOn: [\n container_mapping,\n network_mapping,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nprimary = azure.core.ResourceGroup(\"primary\",\n name=\"tfex-replicated-vm-primary\",\n location=\"West US\")\nsecondary = azure.core.ResourceGroup(\"secondary\",\n name=\"tfex-replicated-vm-secondary\",\n location=\"East US\")\nprimary_virtual_network = azure.network.VirtualNetwork(\"primary\",\n name=\"network1\",\n resource_group_name=primary.name,\n address_spaces=[\"192.168.1.0/24\"],\n location=primary.location)\nprimary_subnet = azure.network.Subnet(\"primary\",\n name=\"network1-subnet\",\n resource_group_name=primary.name,\n virtual_network_name=primary_virtual_network.name,\n address_prefixes=[\"192.168.1.0/24\"])\nprimary_public_ip = azure.network.PublicIp(\"primary\",\n name=\"vm-public-ip-primary\",\n allocation_method=\"Static\",\n location=primary.location,\n resource_group_name=primary.name,\n sku=\"Basic\")\nvm_network_interface = azure.network.NetworkInterface(\"vm\",\n name=\"vm-nic\",\n location=primary.location,\n resource_group_name=primary.name,\n ip_configurations=[{\n \"name\": \"vm\",\n \"subnet_id\": primary_subnet.id,\n \"private_ip_address_allocation\": \"Dynamic\",\n \"public_ip_address_id\": primary_public_ip.id,\n }])\nvm = azure.compute.VirtualMachine(\"vm\",\n name=\"vm\",\n location=primary.location,\n resource_group_name=primary.name,\n vm_size=\"Standard_B1s\",\n network_interface_ids=[vm_network_interface.id],\n storage_image_reference={\n \"publisher\": \"Canonical\",\n \"offer\": \"0001-com-ubuntu-server-jammy\",\n \"sku\": \"22_04-lts\",\n \"version\": \"latest\",\n },\n storage_os_disk={\n \"name\": \"vm-os-disk\",\n \"os_type\": \"Linux\",\n \"caching\": \"ReadWrite\",\n \"create_option\": \"FromImage\",\n \"managed_disk_type\": \"Premium_LRS\",\n },\n os_profile={\n \"admin_username\": \"test-admin-123\",\n \"admin_password\": \"test-pwd-123\",\n \"computer_name\": \"vm\",\n },\n os_profile_linux_config={\n \"disable_password_authentication\": False,\n })\nvault = azure.recoveryservices.Vault(\"vault\",\n name=\"example-recovery-vault\",\n location=secondary.location,\n resource_group_name=secondary.name,\n sku=\"Standard\")\nprimary_fabric = azure.siterecovery.Fabric(\"primary\",\n name=\"primary-fabric\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n location=primary.location)\nsecondary_fabric = azure.siterecovery.Fabric(\"secondary\",\n name=\"secondary-fabric\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n location=secondary.location)\nprimary_protection_container = azure.siterecovery.ProtectionContainer(\"primary\",\n name=\"primary-protection-container\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=primary_fabric.name)\nsecondary_protection_container = azure.siterecovery.ProtectionContainer(\"secondary\",\n name=\"secondary-protection-container\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=secondary_fabric.name)\npolicy = azure.siterecovery.ReplicationPolicy(\"policy\",\n name=\"policy\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_point_retention_in_minutes=24 * 60,\n application_consistent_snapshot_frequency_in_minutes=4 * 60)\ncontainer_mapping = azure.siterecovery.ProtectionContainerMapping(\"container-mapping\",\n name=\"container-mapping\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=primary_fabric.name,\n recovery_source_protection_container_name=primary_protection_container.name,\n recovery_target_protection_container_id=secondary_protection_container.id,\n recovery_replication_policy_id=policy.id)\nsecondary_virtual_network = azure.network.VirtualNetwork(\"secondary\",\n name=\"network2\",\n resource_group_name=secondary.name,\n address_spaces=[\"192.168.2.0/24\"],\n location=secondary.location)\nnetwork_mapping = azure.siterecovery.NetworkMapping(\"network-mapping\",\n name=\"network-mapping\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n source_recovery_fabric_name=primary_fabric.name,\n target_recovery_fabric_name=secondary_fabric.name,\n source_network_id=primary_virtual_network.id,\n target_network_id=secondary_virtual_network.id)\nprimary_account = azure.storage.Account(\"primary\",\n name=\"primaryrecoverycache\",\n location=primary.location,\n resource_group_name=primary.name,\n account_tier=\"Standard\",\n account_replication_type=\"LRS\")\nsecondary_subnet = azure.network.Subnet(\"secondary\",\n name=\"network2-subnet\",\n resource_group_name=secondary.name,\n virtual_network_name=secondary_virtual_network.name,\n address_prefixes=[\"192.168.2.0/24\"])\nsecondary_public_ip = azure.network.PublicIp(\"secondary\",\n name=\"vm-public-ip-secondary\",\n allocation_method=\"Static\",\n location=secondary.location,\n resource_group_name=secondary.name,\n sku=\"Basic\")\nvm_replication = azure.siterecovery.ReplicatedVM(\"vm-replication\",\n name=\"vm-replication\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n source_recovery_fabric_name=primary_fabric.name,\n source_vm_id=vm.id,\n recovery_replication_policy_id=policy.id,\n source_recovery_protection_container_name=primary_protection_container.name,\n target_resource_group_id=secondary.id,\n target_recovery_fabric_id=secondary_fabric.id,\n target_recovery_protection_container_id=secondary_protection_container.id,\n managed_disks=[{\n \"disk_id\": vm.storage_os_disk.managed_disk_id,\n \"staging_storage_account_id\": primary_account.id,\n \"target_resource_group_id\": secondary.id,\n \"target_disk_type\": \"Premium_LRS\",\n \"target_replica_disk_type\": \"Premium_LRS\",\n }],\n network_interfaces=[{\n \"source_network_interface_id\": vm_network_interface.id,\n \"target_subnet_name\": secondary_subnet.name,\n \"recovery_public_ip_address_id\": secondary_public_ip.id,\n }],\n opts = pulumi.ResourceOptions(depends_on=[\n container_mapping,\n network_mapping,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Azure.Core.ResourceGroup(\"primary\", new()\n {\n Name = \"tfex-replicated-vm-primary\",\n Location = \"West US\",\n });\n\n var secondary = new Azure.Core.ResourceGroup(\"secondary\", new()\n {\n Name = \"tfex-replicated-vm-secondary\",\n Location = \"East US\",\n });\n\n var primaryVirtualNetwork = new Azure.Network.VirtualNetwork(\"primary\", new()\n {\n Name = \"network1\",\n ResourceGroupName = primary.Name,\n AddressSpaces = new[]\n {\n \"192.168.1.0/24\",\n },\n Location = primary.Location,\n });\n\n var primarySubnet = new Azure.Network.Subnet(\"primary\", new()\n {\n Name = \"network1-subnet\",\n ResourceGroupName = primary.Name,\n VirtualNetworkName = primaryVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"192.168.1.0/24\",\n },\n });\n\n var primaryPublicIp = new Azure.Network.PublicIp(\"primary\", new()\n {\n Name = \"vm-public-ip-primary\",\n AllocationMethod = \"Static\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n Sku = \"Basic\",\n });\n\n var vmNetworkInterface = new Azure.Network.NetworkInterface(\"vm\", new()\n {\n Name = \"vm-nic\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n IpConfigurations = new[]\n {\n new Azure.Network.Inputs.NetworkInterfaceIpConfigurationArgs\n {\n Name = \"vm\",\n SubnetId = primarySubnet.Id,\n PrivateIpAddressAllocation = \"Dynamic\",\n PublicIpAddressId = primaryPublicIp.Id,\n },\n },\n });\n\n var vm = new Azure.Compute.VirtualMachine(\"vm\", new()\n {\n Name = \"vm\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n VmSize = \"Standard_B1s\",\n NetworkInterfaceIds = new[]\n {\n vmNetworkInterface.Id,\n },\n StorageImageReference = new Azure.Compute.Inputs.VirtualMachineStorageImageReferenceArgs\n {\n Publisher = \"Canonical\",\n Offer = \"0001-com-ubuntu-server-jammy\",\n Sku = \"22_04-lts\",\n Version = \"latest\",\n },\n StorageOsDisk = new Azure.Compute.Inputs.VirtualMachineStorageOsDiskArgs\n {\n Name = \"vm-os-disk\",\n OsType = \"Linux\",\n Caching = \"ReadWrite\",\n CreateOption = \"FromImage\",\n ManagedDiskType = \"Premium_LRS\",\n },\n OsProfile = new Azure.Compute.Inputs.VirtualMachineOsProfileArgs\n {\n AdminUsername = \"test-admin-123\",\n AdminPassword = \"test-pwd-123\",\n ComputerName = \"vm\",\n },\n OsProfileLinuxConfig = new Azure.Compute.Inputs.VirtualMachineOsProfileLinuxConfigArgs\n {\n DisablePasswordAuthentication = false,\n },\n });\n\n var vault = new Azure.RecoveryServices.Vault(\"vault\", new()\n {\n Name = \"example-recovery-vault\",\n Location = secondary.Location,\n ResourceGroupName = secondary.Name,\n Sku = \"Standard\",\n });\n\n var primaryFabric = new Azure.SiteRecovery.Fabric(\"primary\", new()\n {\n Name = \"primary-fabric\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n Location = primary.Location,\n });\n\n var secondaryFabric = new Azure.SiteRecovery.Fabric(\"secondary\", new()\n {\n Name = \"secondary-fabric\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n Location = secondary.Location,\n });\n\n var primaryProtectionContainer = new Azure.SiteRecovery.ProtectionContainer(\"primary\", new()\n {\n Name = \"primary-protection-container\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = primaryFabric.Name,\n });\n\n var secondaryProtectionContainer = new Azure.SiteRecovery.ProtectionContainer(\"secondary\", new()\n {\n Name = \"secondary-protection-container\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = secondaryFabric.Name,\n });\n\n var policy = new Azure.SiteRecovery.ReplicationPolicy(\"policy\", new()\n {\n Name = \"policy\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryPointRetentionInMinutes = 24 * 60,\n ApplicationConsistentSnapshotFrequencyInMinutes = 4 * 60,\n });\n\n var container_mapping = new Azure.SiteRecovery.ProtectionContainerMapping(\"container-mapping\", new()\n {\n Name = \"container-mapping\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = primaryFabric.Name,\n RecoverySourceProtectionContainerName = primaryProtectionContainer.Name,\n RecoveryTargetProtectionContainerId = secondaryProtectionContainer.Id,\n RecoveryReplicationPolicyId = policy.Id,\n });\n\n var secondaryVirtualNetwork = new Azure.Network.VirtualNetwork(\"secondary\", new()\n {\n Name = \"network2\",\n ResourceGroupName = secondary.Name,\n AddressSpaces = new[]\n {\n \"192.168.2.0/24\",\n },\n Location = secondary.Location,\n });\n\n var network_mapping = new Azure.SiteRecovery.NetworkMapping(\"network-mapping\", new()\n {\n Name = \"network-mapping\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n SourceRecoveryFabricName = primaryFabric.Name,\n TargetRecoveryFabricName = secondaryFabric.Name,\n SourceNetworkId = primaryVirtualNetwork.Id,\n TargetNetworkId = secondaryVirtualNetwork.Id,\n });\n\n var primaryAccount = new Azure.Storage.Account(\"primary\", new()\n {\n Name = \"primaryrecoverycache\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"LRS\",\n });\n\n var secondarySubnet = new Azure.Network.Subnet(\"secondary\", new()\n {\n Name = \"network2-subnet\",\n ResourceGroupName = secondary.Name,\n VirtualNetworkName = secondaryVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"192.168.2.0/24\",\n },\n });\n\n var secondaryPublicIp = new Azure.Network.PublicIp(\"secondary\", new()\n {\n Name = \"vm-public-ip-secondary\",\n AllocationMethod = \"Static\",\n Location = secondary.Location,\n ResourceGroupName = secondary.Name,\n Sku = \"Basic\",\n });\n\n var vm_replication = new Azure.SiteRecovery.ReplicatedVM(\"vm-replication\", new()\n {\n Name = \"vm-replication\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n SourceRecoveryFabricName = primaryFabric.Name,\n SourceVmId = vm.Id,\n RecoveryReplicationPolicyId = policy.Id,\n SourceRecoveryProtectionContainerName = primaryProtectionContainer.Name,\n TargetResourceGroupId = secondary.Id,\n TargetRecoveryFabricId = secondaryFabric.Id,\n TargetRecoveryProtectionContainerId = secondaryProtectionContainer.Id,\n ManagedDisks = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicatedVMManagedDiskArgs\n {\n DiskId = vm.StorageOsDisk.Apply(storageOsDisk =\u003e storageOsDisk.ManagedDiskId),\n StagingStorageAccountId = primaryAccount.Id,\n TargetResourceGroupId = secondary.Id,\n TargetDiskType = \"Premium_LRS\",\n TargetReplicaDiskType = \"Premium_LRS\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicatedVMNetworkInterfaceArgs\n {\n SourceNetworkInterfaceId = vmNetworkInterface.Id,\n TargetSubnetName = secondarySubnet.Name,\n RecoveryPublicIpAddressId = secondaryPublicIp.Id,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n container_mapping,\n network_mapping,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/compute\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/recoveryservices\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/siterecovery\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := core.NewResourceGroup(ctx, \"primary\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-replicated-vm-primary\"),\n\t\t\tLocation: pulumi.String(\"West US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondary, err := core.NewResourceGroup(ctx, \"secondary\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-replicated-vm-secondary\"),\n\t\t\tLocation: pulumi.String(\"East US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"primary\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"network1\"),\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.1.0/24\"),\n\t\t\t},\n\t\t\tLocation: primary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimarySubnet, err := network.NewSubnet(ctx, \"primary\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"network1-subnet\"),\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tVirtualNetworkName: primaryVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.1.0/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryPublicIp, err := network.NewPublicIp(ctx, \"primary\", \u0026network.PublicIpArgs{\n\t\t\tName: pulumi.String(\"vm-public-ip-primary\"),\n\t\t\tAllocationMethod: pulumi.String(\"Static\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tSku: pulumi.String(\"Basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvmNetworkInterface, err := network.NewNetworkInterface(ctx, \"vm\", \u0026network.NetworkInterfaceArgs{\n\t\t\tName: pulumi.String(\"vm-nic\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tIpConfigurations: network.NetworkInterfaceIpConfigurationArray{\n\t\t\t\t\u0026network.NetworkInterfaceIpConfigurationArgs{\n\t\t\t\t\tName: pulumi.String(\"vm\"),\n\t\t\t\t\tSubnetId: primarySubnet.ID(),\n\t\t\t\t\tPrivateIpAddressAllocation: pulumi.String(\"Dynamic\"),\n\t\t\t\t\tPublicIpAddressId: primaryPublicIp.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvm, err := compute.NewVirtualMachine(ctx, \"vm\", \u0026compute.VirtualMachineArgs{\n\t\t\tName: pulumi.String(\"vm\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tVmSize: pulumi.String(\"Standard_B1s\"),\n\t\t\tNetworkInterfaceIds: pulumi.StringArray{\n\t\t\t\tvmNetworkInterface.ID(),\n\t\t\t},\n\t\t\tStorageImageReference: \u0026compute.VirtualMachineStorageImageReferenceArgs{\n\t\t\t\tPublisher: pulumi.String(\"Canonical\"),\n\t\t\t\tOffer: pulumi.String(\"0001-com-ubuntu-server-jammy\"),\n\t\t\t\tSku: pulumi.String(\"22_04-lts\"),\n\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t},\n\t\t\tStorageOsDisk: \u0026compute.VirtualMachineStorageOsDiskArgs{\n\t\t\t\tName: pulumi.String(\"vm-os-disk\"),\n\t\t\t\tOsType: pulumi.String(\"Linux\"),\n\t\t\t\tCaching: pulumi.String(\"ReadWrite\"),\n\t\t\t\tCreateOption: pulumi.String(\"FromImage\"),\n\t\t\t\tManagedDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t},\n\t\t\tOsProfile: \u0026compute.VirtualMachineOsProfileArgs{\n\t\t\t\tAdminUsername: pulumi.String(\"test-admin-123\"),\n\t\t\t\tAdminPassword: pulumi.String(\"test-pwd-123\"),\n\t\t\t\tComputerName: pulumi.String(\"vm\"),\n\t\t\t},\n\t\t\tOsProfileLinuxConfig: \u0026compute.VirtualMachineOsProfileLinuxConfigArgs{\n\t\t\t\tDisablePasswordAuthentication: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvault, err := recoveryservices.NewVault(ctx, \"vault\", \u0026recoveryservices.VaultArgs{\n\t\t\tName: pulumi.String(\"example-recovery-vault\"),\n\t\t\tLocation: secondary.Location,\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tSku: pulumi.String(\"Standard\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryFabric, err := siterecovery.NewFabric(ctx, \"primary\", \u0026siterecovery.FabricArgs{\n\t\t\tName: pulumi.String(\"primary-fabric\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tLocation: primary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryFabric, err := siterecovery.NewFabric(ctx, \"secondary\", \u0026siterecovery.FabricArgs{\n\t\t\tName: pulumi.String(\"secondary-fabric\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tLocation: secondary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryProtectionContainer, err := siterecovery.NewProtectionContainer(ctx, \"primary\", \u0026siterecovery.ProtectionContainerArgs{\n\t\t\tName: pulumi.String(\"primary-protection-container\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: primaryFabric.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryProtectionContainer, err := siterecovery.NewProtectionContainer(ctx, \"secondary\", \u0026siterecovery.ProtectionContainerArgs{\n\t\t\tName: pulumi.String(\"secondary-protection-container\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: secondaryFabric.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy, err := siterecovery.NewReplicationPolicy(ctx, \"policy\", \u0026siterecovery.ReplicationPolicyArgs{\n\t\t\tName: pulumi.String(\"policy\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryPointRetentionInMinutes: int(24 * 60),\n\t\t\tApplicationConsistentSnapshotFrequencyInMinutes: int(4 * 60),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcontainer_mapping, err := siterecovery.NewProtectionContainerMapping(ctx, \"container-mapping\", \u0026siterecovery.ProtectionContainerMappingArgs{\n\t\t\tName: pulumi.String(\"container-mapping\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: primaryFabric.Name,\n\t\t\tRecoverySourceProtectionContainerName: primaryProtectionContainer.Name,\n\t\t\tRecoveryTargetProtectionContainerId: secondaryProtectionContainer.ID(),\n\t\t\tRecoveryReplicationPolicyId: policy.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"secondary\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"network2\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.2.0/24\"),\n\t\t\t},\n\t\t\tLocation: secondary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork_mapping, err := siterecovery.NewNetworkMapping(ctx, \"network-mapping\", \u0026siterecovery.NetworkMappingArgs{\n\t\t\tName: pulumi.String(\"network-mapping\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceRecoveryFabricName: primaryFabric.Name,\n\t\t\tTargetRecoveryFabricName: secondaryFabric.Name,\n\t\t\tSourceNetworkId: primaryVirtualNetwork.ID(),\n\t\t\tTargetNetworkId: secondaryVirtualNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryAccount, err := storage.NewAccount(ctx, \"primary\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"primaryrecoverycache\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"LRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondarySubnet, err := network.NewSubnet(ctx, \"secondary\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"network2-subnet\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tVirtualNetworkName: secondaryVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.2.0/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryPublicIp, err := network.NewPublicIp(ctx, \"secondary\", \u0026network.PublicIpArgs{\n\t\t\tName: pulumi.String(\"vm-public-ip-secondary\"),\n\t\t\tAllocationMethod: pulumi.String(\"Static\"),\n\t\t\tLocation: secondary.Location,\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tSku: pulumi.String(\"Basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = siterecovery.NewReplicatedVM(ctx, \"vm-replication\", \u0026siterecovery.ReplicatedVMArgs{\n\t\t\tName: pulumi.String(\"vm-replication\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceRecoveryFabricName: primaryFabric.Name,\n\t\t\tSourceVmId: vm.ID(),\n\t\t\tRecoveryReplicationPolicyId: policy.ID(),\n\t\t\tSourceRecoveryProtectionContainerName: primaryProtectionContainer.Name,\n\t\t\tTargetResourceGroupId: secondary.ID(),\n\t\t\tTargetRecoveryFabricId: secondaryFabric.ID(),\n\t\t\tTargetRecoveryProtectionContainerId: secondaryProtectionContainer.ID(),\n\t\t\tManagedDisks: siterecovery.ReplicatedVMManagedDiskArray{\n\t\t\t\t\u0026siterecovery.ReplicatedVMManagedDiskArgs{\n\t\t\t\t\tDiskId: vm.StorageOsDisk.ApplyT(func(storageOsDisk compute.VirtualMachineStorageOsDisk) (*string, error) {\n\t\t\t\t\t\treturn \u0026storageOsDisk.ManagedDiskId, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\tStagingStorageAccountId: primaryAccount.ID(),\n\t\t\t\t\tTargetResourceGroupId: secondary.ID(),\n\t\t\t\t\tTargetDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t\t\tTargetReplicaDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: siterecovery.ReplicatedVMNetworkInterfaceArray{\n\t\t\t\t\u0026siterecovery.ReplicatedVMNetworkInterfaceArgs{\n\t\t\t\t\tSourceNetworkInterfaceId: vmNetworkInterface.ID(),\n\t\t\t\t\tTargetSubnetName: secondarySubnet.Name,\n\t\t\t\t\tRecoveryPublicIpAddressId: secondaryPublicIp.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcontainer_mapping,\n\t\t\tnetwork_mapping,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.Subnet;\nimport com.pulumi.azure.network.SubnetArgs;\nimport com.pulumi.azure.network.PublicIp;\nimport com.pulumi.azure.network.PublicIpArgs;\nimport com.pulumi.azure.network.NetworkInterface;\nimport com.pulumi.azure.network.NetworkInterfaceArgs;\nimport com.pulumi.azure.network.inputs.NetworkInterfaceIpConfigurationArgs;\nimport com.pulumi.azure.compute.VirtualMachine;\nimport com.pulumi.azure.compute.VirtualMachineArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineStorageImageReferenceArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineStorageOsDiskArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineOsProfileArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineOsProfileLinuxConfigArgs;\nimport com.pulumi.azure.recoveryservices.Vault;\nimport com.pulumi.azure.recoveryservices.VaultArgs;\nimport com.pulumi.azure.siterecovery.Fabric;\nimport com.pulumi.azure.siterecovery.FabricArgs;\nimport com.pulumi.azure.siterecovery.ProtectionContainer;\nimport com.pulumi.azure.siterecovery.ProtectionContainerArgs;\nimport com.pulumi.azure.siterecovery.ReplicationPolicy;\nimport com.pulumi.azure.siterecovery.ReplicationPolicyArgs;\nimport com.pulumi.azure.siterecovery.ProtectionContainerMapping;\nimport com.pulumi.azure.siterecovery.ProtectionContainerMappingArgs;\nimport com.pulumi.azure.siterecovery.NetworkMapping;\nimport com.pulumi.azure.siterecovery.NetworkMappingArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.siterecovery.ReplicatedVM;\nimport com.pulumi.azure.siterecovery.ReplicatedVMArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicatedVMManagedDiskArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicatedVMNetworkInterfaceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new ResourceGroup(\"primary\", ResourceGroupArgs.builder()\n .name(\"tfex-replicated-vm-primary\")\n .location(\"West US\")\n .build());\n\n var secondary = new ResourceGroup(\"secondary\", ResourceGroupArgs.builder()\n .name(\"tfex-replicated-vm-secondary\")\n .location(\"East US\")\n .build());\n\n var primaryVirtualNetwork = new VirtualNetwork(\"primaryVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"network1\")\n .resourceGroupName(primary.name())\n .addressSpaces(\"192.168.1.0/24\")\n .location(primary.location())\n .build());\n\n var primarySubnet = new Subnet(\"primarySubnet\", SubnetArgs.builder()\n .name(\"network1-subnet\")\n .resourceGroupName(primary.name())\n .virtualNetworkName(primaryVirtualNetwork.name())\n .addressPrefixes(\"192.168.1.0/24\")\n .build());\n\n var primaryPublicIp = new PublicIp(\"primaryPublicIp\", PublicIpArgs.builder()\n .name(\"vm-public-ip-primary\")\n .allocationMethod(\"Static\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .sku(\"Basic\")\n .build());\n\n var vmNetworkInterface = new NetworkInterface(\"vmNetworkInterface\", NetworkInterfaceArgs.builder()\n .name(\"vm-nic\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .ipConfigurations(NetworkInterfaceIpConfigurationArgs.builder()\n .name(\"vm\")\n .subnetId(primarySubnet.id())\n .privateIpAddressAllocation(\"Dynamic\")\n .publicIpAddressId(primaryPublicIp.id())\n .build())\n .build());\n\n var vm = new VirtualMachine(\"vm\", VirtualMachineArgs.builder()\n .name(\"vm\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .vmSize(\"Standard_B1s\")\n .networkInterfaceIds(vmNetworkInterface.id())\n .storageImageReference(VirtualMachineStorageImageReferenceArgs.builder()\n .publisher(\"Canonical\")\n .offer(\"0001-com-ubuntu-server-jammy\")\n .sku(\"22_04-lts\")\n .version(\"latest\")\n .build())\n .storageOsDisk(VirtualMachineStorageOsDiskArgs.builder()\n .name(\"vm-os-disk\")\n .osType(\"Linux\")\n .caching(\"ReadWrite\")\n .createOption(\"FromImage\")\n .managedDiskType(\"Premium_LRS\")\n .build())\n .osProfile(VirtualMachineOsProfileArgs.builder()\n .adminUsername(\"test-admin-123\")\n .adminPassword(\"test-pwd-123\")\n .computerName(\"vm\")\n .build())\n .osProfileLinuxConfig(VirtualMachineOsProfileLinuxConfigArgs.builder()\n .disablePasswordAuthentication(false)\n .build())\n .build());\n\n var vault = new Vault(\"vault\", VaultArgs.builder()\n .name(\"example-recovery-vault\")\n .location(secondary.location())\n .resourceGroupName(secondary.name())\n .sku(\"Standard\")\n .build());\n\n var primaryFabric = new Fabric(\"primaryFabric\", FabricArgs.builder()\n .name(\"primary-fabric\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .location(primary.location())\n .build());\n\n var secondaryFabric = new Fabric(\"secondaryFabric\", FabricArgs.builder()\n .name(\"secondary-fabric\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .location(secondary.location())\n .build());\n\n var primaryProtectionContainer = new ProtectionContainer(\"primaryProtectionContainer\", ProtectionContainerArgs.builder()\n .name(\"primary-protection-container\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(primaryFabric.name())\n .build());\n\n var secondaryProtectionContainer = new ProtectionContainer(\"secondaryProtectionContainer\", ProtectionContainerArgs.builder()\n .name(\"secondary-protection-container\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(secondaryFabric.name())\n .build());\n\n var policy = new ReplicationPolicy(\"policy\", ReplicationPolicyArgs.builder()\n .name(\"policy\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryPointRetentionInMinutes(24 * 60)\n .applicationConsistentSnapshotFrequencyInMinutes(4 * 60)\n .build());\n\n var container_mapping = new ProtectionContainerMapping(\"container-mapping\", ProtectionContainerMappingArgs.builder()\n .name(\"container-mapping\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(primaryFabric.name())\n .recoverySourceProtectionContainerName(primaryProtectionContainer.name())\n .recoveryTargetProtectionContainerId(secondaryProtectionContainer.id())\n .recoveryReplicationPolicyId(policy.id())\n .build());\n\n var secondaryVirtualNetwork = new VirtualNetwork(\"secondaryVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"network2\")\n .resourceGroupName(secondary.name())\n .addressSpaces(\"192.168.2.0/24\")\n .location(secondary.location())\n .build());\n\n var network_mapping = new NetworkMapping(\"network-mapping\", NetworkMappingArgs.builder()\n .name(\"network-mapping\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .sourceRecoveryFabricName(primaryFabric.name())\n .targetRecoveryFabricName(secondaryFabric.name())\n .sourceNetworkId(primaryVirtualNetwork.id())\n .targetNetworkId(secondaryVirtualNetwork.id())\n .build());\n\n var primaryAccount = new Account(\"primaryAccount\", AccountArgs.builder()\n .name(\"primaryrecoverycache\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"LRS\")\n .build());\n\n var secondarySubnet = new Subnet(\"secondarySubnet\", SubnetArgs.builder()\n .name(\"network2-subnet\")\n .resourceGroupName(secondary.name())\n .virtualNetworkName(secondaryVirtualNetwork.name())\n .addressPrefixes(\"192.168.2.0/24\")\n .build());\n\n var secondaryPublicIp = new PublicIp(\"secondaryPublicIp\", PublicIpArgs.builder()\n .name(\"vm-public-ip-secondary\")\n .allocationMethod(\"Static\")\n .location(secondary.location())\n .resourceGroupName(secondary.name())\n .sku(\"Basic\")\n .build());\n\n var vm_replication = new ReplicatedVM(\"vm-replication\", ReplicatedVMArgs.builder()\n .name(\"vm-replication\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .sourceRecoveryFabricName(primaryFabric.name())\n .sourceVmId(vm.id())\n .recoveryReplicationPolicyId(policy.id())\n .sourceRecoveryProtectionContainerName(primaryProtectionContainer.name())\n .targetResourceGroupId(secondary.id())\n .targetRecoveryFabricId(secondaryFabric.id())\n .targetRecoveryProtectionContainerId(secondaryProtectionContainer.id())\n .managedDisks(ReplicatedVMManagedDiskArgs.builder()\n .diskId(vm.storageOsDisk().applyValue(storageOsDisk -\u003e storageOsDisk.managedDiskId()))\n .stagingStorageAccountId(primaryAccount.id())\n .targetResourceGroupId(secondary.id())\n .targetDiskType(\"Premium_LRS\")\n .targetReplicaDiskType(\"Premium_LRS\")\n .build())\n .networkInterfaces(ReplicatedVMNetworkInterfaceArgs.builder()\n .sourceNetworkInterfaceId(vmNetworkInterface.id())\n .targetSubnetName(secondarySubnet.name())\n .recoveryPublicIpAddressId(secondaryPublicIp.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n container_mapping,\n network_mapping)\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSite Recovery Replicated VM's can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:siterecovery/replicatedVM:ReplicatedVM vmreplication /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/Microsoft.RecoveryServices/vaults/recovery-vault-name/replicationFabrics/fabric-name/replicationProtectionContainers/protection-container-name/replicationProtectedItems/vm-replication-name\n```\n\n", "properties": { "managedDisks": { "type": "array", @@ -257290,7 +257290,7 @@ } }, "azure:siterecovery/replicationRecoveryPlan:ReplicationRecoveryPlan": { - "description": "Manages a Site Recovery Replication Recovery Plan within a Recovery Services vault. A recovery plan gathers machines into recovery groups for the purpose of failover.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst primary = new azure.core.ResourceGroup(\"primary\", {\n name: \"tfex-replicated-vm-primary\",\n location: \"West US\",\n});\nconst secondary = new azure.core.ResourceGroup(\"secondary\", {\n name: \"tfex-replicated-vm-secondary\",\n location: \"East US\",\n});\nconst primaryVirtualNetwork = new azure.network.VirtualNetwork(\"primary\", {\n name: \"network1\",\n resourceGroupName: primary.name,\n addressSpaces: [\"192.168.1.0/24\"],\n location: primary.location,\n});\nconst primarySubnet = new azure.network.Subnet(\"primary\", {\n name: \"network1-subnet\",\n resourceGroupName: primary.name,\n virtualNetworkName: primaryVirtualNetwork.name,\n addressPrefixes: [\"192.168.1.0/24\"],\n});\nconst primaryPublicIp = new azure.network.PublicIp(\"primary\", {\n name: \"vm-public-ip-primary\",\n allocationMethod: \"Static\",\n location: primary.location,\n resourceGroupName: primary.name,\n sku: \"Basic\",\n});\nconst vmNetworkInterface = new azure.network.NetworkInterface(\"vm\", {\n name: \"vm-nic\",\n location: primary.location,\n resourceGroupName: primary.name,\n ipConfigurations: [{\n name: \"vm\",\n subnetId: primarySubnet.id,\n privateIpAddressAllocation: \"Dynamic\",\n publicIpAddressId: primaryPublicIp.id,\n }],\n});\nconst vm = new azure.compute.VirtualMachine(\"vm\", {\n name: \"vm\",\n location: primary.location,\n resourceGroupName: primary.name,\n vmSize: \"Standard_B1s\",\n networkInterfaceIds: [vmNetworkInterface.id],\n storageImageReference: {\n publisher: \"Canonical\",\n offer: \"0001-com-ubuntu-server-jammy\",\n sku: \"22_04-lts\",\n version: \"latest\",\n },\n storageOsDisk: {\n name: \"vm-os-disk\",\n osType: \"Linux\",\n caching: \"ReadWrite\",\n createOption: \"FromImage\",\n managedDiskType: \"Premium_LRS\",\n },\n osProfile: {\n adminUsername: \"test-admin-123\",\n adminPassword: \"test-pwd-123\",\n computerName: \"vm\",\n },\n osProfileLinuxConfig: {\n disablePasswordAuthentication: false,\n },\n});\nconst vault = new azure.recoveryservices.Vault(\"vault\", {\n name: \"example-recovery-vault\",\n location: secondary.location,\n resourceGroupName: secondary.name,\n sku: \"Standard\",\n});\nconst primaryFabric = new azure.siterecovery.Fabric(\"primary\", {\n name: \"primary-fabric\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n location: primary.location,\n});\nconst secondaryFabric = new azure.siterecovery.Fabric(\"secondary\", {\n name: \"secondary-fabric\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n location: secondary.location,\n});\nconst primaryProtectionContainer = new azure.siterecovery.ProtectionContainer(\"primary\", {\n name: \"primary-protection-container\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: primaryFabric.name,\n});\nconst secondaryProtectionContainer = new azure.siterecovery.ProtectionContainer(\"secondary\", {\n name: \"secondary-protection-container\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: secondaryFabric.name,\n});\nconst policy = new azure.siterecovery.ReplicationPolicy(\"policy\", {\n name: \"policy\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryPointRetentionInMinutes: 24 * 60,\n applicationConsistentSnapshotFrequencyInMinutes: 4 * 60,\n});\nconst container_mapping = new azure.siterecovery.ProtectionContainerMapping(\"container-mapping\", {\n name: \"container-mapping\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: primaryFabric.name,\n recoverySourceProtectionContainerName: primaryProtectionContainer.name,\n recoveryTargetProtectionContainerId: secondaryProtectionContainer.id,\n recoveryReplicationPolicyId: policy.id,\n});\nconst secondaryVirtualNetwork = new azure.network.VirtualNetwork(\"secondary\", {\n name: \"network2\",\n resourceGroupName: secondary.name,\n addressSpaces: [\"192.168.2.0/24\"],\n location: secondary.location,\n});\nconst network_mapping = new azure.siterecovery.NetworkMapping(\"network-mapping\", {\n name: \"network-mapping\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n sourceRecoveryFabricName: primaryFabric.name,\n targetRecoveryFabricName: secondaryFabric.name,\n sourceNetworkId: primaryVirtualNetwork.id,\n targetNetworkId: secondaryVirtualNetwork.id,\n});\nconst primaryAccount = new azure.storage.Account(\"primary\", {\n name: \"primaryrecoverycache\",\n location: primary.location,\n resourceGroupName: primary.name,\n accountTier: \"Standard\",\n accountReplicationType: \"LRS\",\n});\nconst secondarySubnet = new azure.network.Subnet(\"secondary\", {\n name: \"network2-subnet\",\n resourceGroupName: secondary.name,\n virtualNetworkName: secondaryVirtualNetwork.name,\n addressPrefixes: [\"192.168.2.0/24\"],\n});\nconst secondaryPublicIp = new azure.network.PublicIp(\"secondary\", {\n name: \"vm-public-ip-secondary\",\n allocationMethod: \"Static\",\n location: secondary.location,\n resourceGroupName: secondary.name,\n sku: \"Basic\",\n});\nconst vm_replication = new azure.siterecovery.ReplicatedVM(\"vm-replication\", {\n name: \"vm-replication\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n sourceRecoveryFabricName: primaryFabric.name,\n sourceVmId: vm.id,\n recoveryReplicationPolicyId: policy.id,\n sourceRecoveryProtectionContainerName: primaryProtectionContainer.name,\n targetResourceGroupId: secondary.id,\n targetRecoveryFabricId: secondaryFabric.id,\n targetRecoveryProtectionContainerId: secondaryProtectionContainer.id,\n managedDisks: [{\n diskId: vm.storageOsDisk.apply(storageOsDisk =\u003e storageOsDisk.managedDiskId),\n stagingStorageAccountId: primaryAccount.id,\n targetResourceGroupId: secondary.id,\n targetDiskType: \"Premium_LRS\",\n targetReplicaDiskType: \"Premium_LRS\",\n }],\n networkInterfaces: [{\n sourceNetworkInterfaceId: vmNetworkInterface.id,\n targetSubnetName: secondarySubnet.name,\n recoveryPublicIpAddressId: secondaryPublicIp.id,\n }],\n}, {\n dependsOn: [\n container_mapping,\n network_mapping,\n ],\n});\nconst example = new azure.siterecovery.ReplicationRecoveryPlan(\"example\", {\n name: \"example-recover-plan\",\n recoveryVaultId: vault.id,\n sourceRecoveryFabricId: primaryFabric.id,\n targetRecoveryFabricId: secondaryFabric.id,\n shutdownRecoveryGroup: {},\n failoverRecoveryGroup: {},\n bootRecoveryGroups: [{\n replicatedProtectedItems: [vm_replication.id],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nprimary = azure.core.ResourceGroup(\"primary\",\n name=\"tfex-replicated-vm-primary\",\n location=\"West US\")\nsecondary = azure.core.ResourceGroup(\"secondary\",\n name=\"tfex-replicated-vm-secondary\",\n location=\"East US\")\nprimary_virtual_network = azure.network.VirtualNetwork(\"primary\",\n name=\"network1\",\n resource_group_name=primary.name,\n address_spaces=[\"192.168.1.0/24\"],\n location=primary.location)\nprimary_subnet = azure.network.Subnet(\"primary\",\n name=\"network1-subnet\",\n resource_group_name=primary.name,\n virtual_network_name=primary_virtual_network.name,\n address_prefixes=[\"192.168.1.0/24\"])\nprimary_public_ip = azure.network.PublicIp(\"primary\",\n name=\"vm-public-ip-primary\",\n allocation_method=\"Static\",\n location=primary.location,\n resource_group_name=primary.name,\n sku=\"Basic\")\nvm_network_interface = azure.network.NetworkInterface(\"vm\",\n name=\"vm-nic\",\n location=primary.location,\n resource_group_name=primary.name,\n ip_configurations=[{\n \"name\": \"vm\",\n \"subnet_id\": primary_subnet.id,\n \"private_ip_address_allocation\": \"Dynamic\",\n \"public_ip_address_id\": primary_public_ip.id,\n }])\nvm = azure.compute.VirtualMachine(\"vm\",\n name=\"vm\",\n location=primary.location,\n resource_group_name=primary.name,\n vm_size=\"Standard_B1s\",\n network_interface_ids=[vm_network_interface.id],\n storage_image_reference={\n \"publisher\": \"Canonical\",\n \"offer\": \"0001-com-ubuntu-server-jammy\",\n \"sku\": \"22_04-lts\",\n \"version\": \"latest\",\n },\n storage_os_disk={\n \"name\": \"vm-os-disk\",\n \"os_type\": \"Linux\",\n \"caching\": \"ReadWrite\",\n \"create_option\": \"FromImage\",\n \"managed_disk_type\": \"Premium_LRS\",\n },\n os_profile={\n \"admin_username\": \"test-admin-123\",\n \"admin_password\": \"test-pwd-123\",\n \"computer_name\": \"vm\",\n },\n os_profile_linux_config={\n \"disable_password_authentication\": False,\n })\nvault = azure.recoveryservices.Vault(\"vault\",\n name=\"example-recovery-vault\",\n location=secondary.location,\n resource_group_name=secondary.name,\n sku=\"Standard\")\nprimary_fabric = azure.siterecovery.Fabric(\"primary\",\n name=\"primary-fabric\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n location=primary.location)\nsecondary_fabric = azure.siterecovery.Fabric(\"secondary\",\n name=\"secondary-fabric\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n location=secondary.location)\nprimary_protection_container = azure.siterecovery.ProtectionContainer(\"primary\",\n name=\"primary-protection-container\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=primary_fabric.name)\nsecondary_protection_container = azure.siterecovery.ProtectionContainer(\"secondary\",\n name=\"secondary-protection-container\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=secondary_fabric.name)\npolicy = azure.siterecovery.ReplicationPolicy(\"policy\",\n name=\"policy\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_point_retention_in_minutes=24 * 60,\n application_consistent_snapshot_frequency_in_minutes=4 * 60)\ncontainer_mapping = azure.siterecovery.ProtectionContainerMapping(\"container-mapping\",\n name=\"container-mapping\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=primary_fabric.name,\n recovery_source_protection_container_name=primary_protection_container.name,\n recovery_target_protection_container_id=secondary_protection_container.id,\n recovery_replication_policy_id=policy.id)\nsecondary_virtual_network = azure.network.VirtualNetwork(\"secondary\",\n name=\"network2\",\n resource_group_name=secondary.name,\n address_spaces=[\"192.168.2.0/24\"],\n location=secondary.location)\nnetwork_mapping = azure.siterecovery.NetworkMapping(\"network-mapping\",\n name=\"network-mapping\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n source_recovery_fabric_name=primary_fabric.name,\n target_recovery_fabric_name=secondary_fabric.name,\n source_network_id=primary_virtual_network.id,\n target_network_id=secondary_virtual_network.id)\nprimary_account = azure.storage.Account(\"primary\",\n name=\"primaryrecoverycache\",\n location=primary.location,\n resource_group_name=primary.name,\n account_tier=\"Standard\",\n account_replication_type=\"LRS\")\nsecondary_subnet = azure.network.Subnet(\"secondary\",\n name=\"network2-subnet\",\n resource_group_name=secondary.name,\n virtual_network_name=secondary_virtual_network.name,\n address_prefixes=[\"192.168.2.0/24\"])\nsecondary_public_ip = azure.network.PublicIp(\"secondary\",\n name=\"vm-public-ip-secondary\",\n allocation_method=\"Static\",\n location=secondary.location,\n resource_group_name=secondary.name,\n sku=\"Basic\")\nvm_replication = azure.siterecovery.ReplicatedVM(\"vm-replication\",\n name=\"vm-replication\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n source_recovery_fabric_name=primary_fabric.name,\n source_vm_id=vm.id,\n recovery_replication_policy_id=policy.id,\n source_recovery_protection_container_name=primary_protection_container.name,\n target_resource_group_id=secondary.id,\n target_recovery_fabric_id=secondary_fabric.id,\n target_recovery_protection_container_id=secondary_protection_container.id,\n managed_disks=[{\n \"disk_id\": vm.storage_os_disk.managed_disk_id,\n \"staging_storage_account_id\": primary_account.id,\n \"target_resource_group_id\": secondary.id,\n \"target_disk_type\": \"Premium_LRS\",\n \"target_replica_disk_type\": \"Premium_LRS\",\n }],\n network_interfaces=[{\n \"source_network_interface_id\": vm_network_interface.id,\n \"target_subnet_name\": secondary_subnet.name,\n \"recovery_public_ip_address_id\": secondary_public_ip.id,\n }],\n opts = pulumi.ResourceOptions(depends_on=[\n container_mapping,\n network_mapping,\n ]))\nexample = azure.siterecovery.ReplicationRecoveryPlan(\"example\",\n name=\"example-recover-plan\",\n recovery_vault_id=vault.id,\n source_recovery_fabric_id=primary_fabric.id,\n target_recovery_fabric_id=secondary_fabric.id,\n shutdown_recovery_group={},\n failover_recovery_group={},\n boot_recovery_groups=[{\n \"replicated_protected_items\": [vm_replication.id],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Azure.Core.ResourceGroup(\"primary\", new()\n {\n Name = \"tfex-replicated-vm-primary\",\n Location = \"West US\",\n });\n\n var secondary = new Azure.Core.ResourceGroup(\"secondary\", new()\n {\n Name = \"tfex-replicated-vm-secondary\",\n Location = \"East US\",\n });\n\n var primaryVirtualNetwork = new Azure.Network.VirtualNetwork(\"primary\", new()\n {\n Name = \"network1\",\n ResourceGroupName = primary.Name,\n AddressSpaces = new[]\n {\n \"192.168.1.0/24\",\n },\n Location = primary.Location,\n });\n\n var primarySubnet = new Azure.Network.Subnet(\"primary\", new()\n {\n Name = \"network1-subnet\",\n ResourceGroupName = primary.Name,\n VirtualNetworkName = primaryVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"192.168.1.0/24\",\n },\n });\n\n var primaryPublicIp = new Azure.Network.PublicIp(\"primary\", new()\n {\n Name = \"vm-public-ip-primary\",\n AllocationMethod = \"Static\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n Sku = \"Basic\",\n });\n\n var vmNetworkInterface = new Azure.Network.NetworkInterface(\"vm\", new()\n {\n Name = \"vm-nic\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n IpConfigurations = new[]\n {\n new Azure.Network.Inputs.NetworkInterfaceIpConfigurationArgs\n {\n Name = \"vm\",\n SubnetId = primarySubnet.Id,\n PrivateIpAddressAllocation = \"Dynamic\",\n PublicIpAddressId = primaryPublicIp.Id,\n },\n },\n });\n\n var vm = new Azure.Compute.VirtualMachine(\"vm\", new()\n {\n Name = \"vm\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n VmSize = \"Standard_B1s\",\n NetworkInterfaceIds = new[]\n {\n vmNetworkInterface.Id,\n },\n StorageImageReference = new Azure.Compute.Inputs.VirtualMachineStorageImageReferenceArgs\n {\n Publisher = \"Canonical\",\n Offer = \"0001-com-ubuntu-server-jammy\",\n Sku = \"22_04-lts\",\n Version = \"latest\",\n },\n StorageOsDisk = new Azure.Compute.Inputs.VirtualMachineStorageOsDiskArgs\n {\n Name = \"vm-os-disk\",\n OsType = \"Linux\",\n Caching = \"ReadWrite\",\n CreateOption = \"FromImage\",\n ManagedDiskType = \"Premium_LRS\",\n },\n OsProfile = new Azure.Compute.Inputs.VirtualMachineOsProfileArgs\n {\n AdminUsername = \"test-admin-123\",\n AdminPassword = \"test-pwd-123\",\n ComputerName = \"vm\",\n },\n OsProfileLinuxConfig = new Azure.Compute.Inputs.VirtualMachineOsProfileLinuxConfigArgs\n {\n DisablePasswordAuthentication = false,\n },\n });\n\n var vault = new Azure.RecoveryServices.Vault(\"vault\", new()\n {\n Name = \"example-recovery-vault\",\n Location = secondary.Location,\n ResourceGroupName = secondary.Name,\n Sku = \"Standard\",\n });\n\n var primaryFabric = new Azure.SiteRecovery.Fabric(\"primary\", new()\n {\n Name = \"primary-fabric\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n Location = primary.Location,\n });\n\n var secondaryFabric = new Azure.SiteRecovery.Fabric(\"secondary\", new()\n {\n Name = \"secondary-fabric\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n Location = secondary.Location,\n });\n\n var primaryProtectionContainer = new Azure.SiteRecovery.ProtectionContainer(\"primary\", new()\n {\n Name = \"primary-protection-container\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = primaryFabric.Name,\n });\n\n var secondaryProtectionContainer = new Azure.SiteRecovery.ProtectionContainer(\"secondary\", new()\n {\n Name = \"secondary-protection-container\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = secondaryFabric.Name,\n });\n\n var policy = new Azure.SiteRecovery.ReplicationPolicy(\"policy\", new()\n {\n Name = \"policy\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryPointRetentionInMinutes = 24 * 60,\n ApplicationConsistentSnapshotFrequencyInMinutes = 4 * 60,\n });\n\n var container_mapping = new Azure.SiteRecovery.ProtectionContainerMapping(\"container-mapping\", new()\n {\n Name = \"container-mapping\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = primaryFabric.Name,\n RecoverySourceProtectionContainerName = primaryProtectionContainer.Name,\n RecoveryTargetProtectionContainerId = secondaryProtectionContainer.Id,\n RecoveryReplicationPolicyId = policy.Id,\n });\n\n var secondaryVirtualNetwork = new Azure.Network.VirtualNetwork(\"secondary\", new()\n {\n Name = \"network2\",\n ResourceGroupName = secondary.Name,\n AddressSpaces = new[]\n {\n \"192.168.2.0/24\",\n },\n Location = secondary.Location,\n });\n\n var network_mapping = new Azure.SiteRecovery.NetworkMapping(\"network-mapping\", new()\n {\n Name = \"network-mapping\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n SourceRecoveryFabricName = primaryFabric.Name,\n TargetRecoveryFabricName = secondaryFabric.Name,\n SourceNetworkId = primaryVirtualNetwork.Id,\n TargetNetworkId = secondaryVirtualNetwork.Id,\n });\n\n var primaryAccount = new Azure.Storage.Account(\"primary\", new()\n {\n Name = \"primaryrecoverycache\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"LRS\",\n });\n\n var secondarySubnet = new Azure.Network.Subnet(\"secondary\", new()\n {\n Name = \"network2-subnet\",\n ResourceGroupName = secondary.Name,\n VirtualNetworkName = secondaryVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"192.168.2.0/24\",\n },\n });\n\n var secondaryPublicIp = new Azure.Network.PublicIp(\"secondary\", new()\n {\n Name = \"vm-public-ip-secondary\",\n AllocationMethod = \"Static\",\n Location = secondary.Location,\n ResourceGroupName = secondary.Name,\n Sku = \"Basic\",\n });\n\n var vm_replication = new Azure.SiteRecovery.ReplicatedVM(\"vm-replication\", new()\n {\n Name = \"vm-replication\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n SourceRecoveryFabricName = primaryFabric.Name,\n SourceVmId = vm.Id,\n RecoveryReplicationPolicyId = policy.Id,\n SourceRecoveryProtectionContainerName = primaryProtectionContainer.Name,\n TargetResourceGroupId = secondary.Id,\n TargetRecoveryFabricId = secondaryFabric.Id,\n TargetRecoveryProtectionContainerId = secondaryProtectionContainer.Id,\n ManagedDisks = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicatedVMManagedDiskArgs\n {\n DiskId = vm.StorageOsDisk.Apply(storageOsDisk =\u003e storageOsDisk.ManagedDiskId),\n StagingStorageAccountId = primaryAccount.Id,\n TargetResourceGroupId = secondary.Id,\n TargetDiskType = \"Premium_LRS\",\n TargetReplicaDiskType = \"Premium_LRS\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicatedVMNetworkInterfaceArgs\n {\n SourceNetworkInterfaceId = vmNetworkInterface.Id,\n TargetSubnetName = secondarySubnet.Name,\n RecoveryPublicIpAddressId = secondaryPublicIp.Id,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n container_mapping,\n network_mapping,\n },\n });\n\n var example = new Azure.SiteRecovery.ReplicationRecoveryPlan(\"example\", new()\n {\n Name = \"example-recover-plan\",\n RecoveryVaultId = vault.Id,\n SourceRecoveryFabricId = primaryFabric.Id,\n TargetRecoveryFabricId = secondaryFabric.Id,\n ShutdownRecoveryGroup = null,\n FailoverRecoveryGroup = null,\n BootRecoveryGroups = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicationRecoveryPlanBootRecoveryGroupArgs\n {\n ReplicatedProtectedItems = new[]\n {\n vm_replication.Id,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/compute\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/recoveryservices\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/siterecovery\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := core.NewResourceGroup(ctx, \"primary\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-replicated-vm-primary\"),\n\t\t\tLocation: pulumi.String(\"West US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondary, err := core.NewResourceGroup(ctx, \"secondary\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-replicated-vm-secondary\"),\n\t\t\tLocation: pulumi.String(\"East US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"primary\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"network1\"),\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.1.0/24\"),\n\t\t\t},\n\t\t\tLocation: primary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimarySubnet, err := network.NewSubnet(ctx, \"primary\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"network1-subnet\"),\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tVirtualNetworkName: primaryVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.1.0/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryPublicIp, err := network.NewPublicIp(ctx, \"primary\", \u0026network.PublicIpArgs{\n\t\t\tName: pulumi.String(\"vm-public-ip-primary\"),\n\t\t\tAllocationMethod: pulumi.String(\"Static\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tSku: pulumi.String(\"Basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvmNetworkInterface, err := network.NewNetworkInterface(ctx, \"vm\", \u0026network.NetworkInterfaceArgs{\n\t\t\tName: pulumi.String(\"vm-nic\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tIpConfigurations: network.NetworkInterfaceIpConfigurationArray{\n\t\t\t\t\u0026network.NetworkInterfaceIpConfigurationArgs{\n\t\t\t\t\tName: pulumi.String(\"vm\"),\n\t\t\t\t\tSubnetId: primarySubnet.ID(),\n\t\t\t\t\tPrivateIpAddressAllocation: pulumi.String(\"Dynamic\"),\n\t\t\t\t\tPublicIpAddressId: primaryPublicIp.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvm, err := compute.NewVirtualMachine(ctx, \"vm\", \u0026compute.VirtualMachineArgs{\n\t\t\tName: pulumi.String(\"vm\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tVmSize: pulumi.String(\"Standard_B1s\"),\n\t\t\tNetworkInterfaceIds: pulumi.StringArray{\n\t\t\t\tvmNetworkInterface.ID(),\n\t\t\t},\n\t\t\tStorageImageReference: \u0026compute.VirtualMachineStorageImageReferenceArgs{\n\t\t\t\tPublisher: pulumi.String(\"Canonical\"),\n\t\t\t\tOffer: pulumi.String(\"0001-com-ubuntu-server-jammy\"),\n\t\t\t\tSku: pulumi.String(\"22_04-lts\"),\n\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t},\n\t\t\tStorageOsDisk: \u0026compute.VirtualMachineStorageOsDiskArgs{\n\t\t\t\tName: pulumi.String(\"vm-os-disk\"),\n\t\t\t\tOsType: pulumi.String(\"Linux\"),\n\t\t\t\tCaching: pulumi.String(\"ReadWrite\"),\n\t\t\t\tCreateOption: pulumi.String(\"FromImage\"),\n\t\t\t\tManagedDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t},\n\t\t\tOsProfile: \u0026compute.VirtualMachineOsProfileArgs{\n\t\t\t\tAdminUsername: pulumi.String(\"test-admin-123\"),\n\t\t\t\tAdminPassword: pulumi.String(\"test-pwd-123\"),\n\t\t\t\tComputerName: pulumi.String(\"vm\"),\n\t\t\t},\n\t\t\tOsProfileLinuxConfig: \u0026compute.VirtualMachineOsProfileLinuxConfigArgs{\n\t\t\t\tDisablePasswordAuthentication: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvault, err := recoveryservices.NewVault(ctx, \"vault\", \u0026recoveryservices.VaultArgs{\n\t\t\tName: pulumi.String(\"example-recovery-vault\"),\n\t\t\tLocation: secondary.Location,\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tSku: pulumi.String(\"Standard\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryFabric, err := siterecovery.NewFabric(ctx, \"primary\", \u0026siterecovery.FabricArgs{\n\t\t\tName: pulumi.String(\"primary-fabric\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tLocation: primary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryFabric, err := siterecovery.NewFabric(ctx, \"secondary\", \u0026siterecovery.FabricArgs{\n\t\t\tName: pulumi.String(\"secondary-fabric\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tLocation: secondary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryProtectionContainer, err := siterecovery.NewProtectionContainer(ctx, \"primary\", \u0026siterecovery.ProtectionContainerArgs{\n\t\t\tName: pulumi.String(\"primary-protection-container\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: primaryFabric.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryProtectionContainer, err := siterecovery.NewProtectionContainer(ctx, \"secondary\", \u0026siterecovery.ProtectionContainerArgs{\n\t\t\tName: pulumi.String(\"secondary-protection-container\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: secondaryFabric.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy, err := siterecovery.NewReplicationPolicy(ctx, \"policy\", \u0026siterecovery.ReplicationPolicyArgs{\n\t\t\tName: pulumi.String(\"policy\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryPointRetentionInMinutes: int(24 * 60),\n\t\t\tApplicationConsistentSnapshotFrequencyInMinutes: int(4 * 60),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = siterecovery.NewProtectionContainerMapping(ctx, \"container-mapping\", \u0026siterecovery.ProtectionContainerMappingArgs{\n\t\t\tName: pulumi.String(\"container-mapping\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: primaryFabric.Name,\n\t\t\tRecoverySourceProtectionContainerName: primaryProtectionContainer.Name,\n\t\t\tRecoveryTargetProtectionContainerId: secondaryProtectionContainer.ID(),\n\t\t\tRecoveryReplicationPolicyId: policy.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"secondary\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"network2\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.2.0/24\"),\n\t\t\t},\n\t\t\tLocation: secondary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = siterecovery.NewNetworkMapping(ctx, \"network-mapping\", \u0026siterecovery.NetworkMappingArgs{\n\t\t\tName: pulumi.String(\"network-mapping\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceRecoveryFabricName: primaryFabric.Name,\n\t\t\tTargetRecoveryFabricName: secondaryFabric.Name,\n\t\t\tSourceNetworkId: primaryVirtualNetwork.ID(),\n\t\t\tTargetNetworkId: secondaryVirtualNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryAccount, err := storage.NewAccount(ctx, \"primary\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"primaryrecoverycache\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"LRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondarySubnet, err := network.NewSubnet(ctx, \"secondary\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"network2-subnet\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tVirtualNetworkName: secondaryVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.2.0/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryPublicIp, err := network.NewPublicIp(ctx, \"secondary\", \u0026network.PublicIpArgs{\n\t\t\tName: pulumi.String(\"vm-public-ip-secondary\"),\n\t\t\tAllocationMethod: pulumi.String(\"Static\"),\n\t\t\tLocation: secondary.Location,\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tSku: pulumi.String(\"Basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = siterecovery.NewReplicatedVM(ctx, \"vm-replication\", \u0026siterecovery.ReplicatedVMArgs{\n\t\t\tName: pulumi.String(\"vm-replication\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceRecoveryFabricName: primaryFabric.Name,\n\t\t\tSourceVmId: vm.ID(),\n\t\t\tRecoveryReplicationPolicyId: policy.ID(),\n\t\t\tSourceRecoveryProtectionContainerName: primaryProtectionContainer.Name,\n\t\t\tTargetResourceGroupId: secondary.ID(),\n\t\t\tTargetRecoveryFabricId: secondaryFabric.ID(),\n\t\t\tTargetRecoveryProtectionContainerId: secondaryProtectionContainer.ID(),\n\t\t\tManagedDisks: siterecovery.ReplicatedVMManagedDiskArray{\n\t\t\t\t\u0026siterecovery.ReplicatedVMManagedDiskArgs{\n\t\t\t\t\tDiskId: vm.StorageOsDisk.ApplyT(func(storageOsDisk compute.VirtualMachineStorageOsDisk) (*string, error) {\n\t\t\t\t\t\treturn \u0026storageOsDisk.ManagedDiskId, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\tStagingStorageAccountId: primaryAccount.ID(),\n\t\t\t\t\tTargetResourceGroupId: secondary.ID(),\n\t\t\t\t\tTargetDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t\t\tTargetReplicaDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: siterecovery.ReplicatedVMNetworkInterfaceArray{\n\t\t\t\t\u0026siterecovery.ReplicatedVMNetworkInterfaceArgs{\n\t\t\t\t\tSourceNetworkInterfaceId: vmNetworkInterface.ID(),\n\t\t\t\t\tTargetSubnetName: secondarySubnet.Name,\n\t\t\t\t\tRecoveryPublicIpAddressId: secondaryPublicIp.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcontainer_mapping,\n\t\t\tnetwork_mapping,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = siterecovery.NewReplicationRecoveryPlan(ctx, \"example\", \u0026siterecovery.ReplicationRecoveryPlanArgs{\n\t\t\tName: pulumi.String(\"example-recover-plan\"),\n\t\t\tRecoveryVaultId: vault.ID(),\n\t\t\tSourceRecoveryFabricId: primaryFabric.ID(),\n\t\t\tTargetRecoveryFabricId: secondaryFabric.ID(),\n\t\t\tShutdownRecoveryGroup: \u0026siterecovery.ReplicationRecoveryPlanShutdownRecoveryGroupArgs{},\n\t\t\tFailoverRecoveryGroup: \u0026siterecovery.ReplicationRecoveryPlanFailoverRecoveryGroupArgs{},\n\t\t\tBootRecoveryGroups: siterecovery.ReplicationRecoveryPlanBootRecoveryGroupArray{\n\t\t\t\t\u0026siterecovery.ReplicationRecoveryPlanBootRecoveryGroupArgs{\n\t\t\t\t\tReplicatedProtectedItems: pulumi.StringArray{\n\t\t\t\t\t\tvm_replication.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.Subnet;\nimport com.pulumi.azure.network.SubnetArgs;\nimport com.pulumi.azure.network.PublicIp;\nimport com.pulumi.azure.network.PublicIpArgs;\nimport com.pulumi.azure.network.NetworkInterface;\nimport com.pulumi.azure.network.NetworkInterfaceArgs;\nimport com.pulumi.azure.network.inputs.NetworkInterfaceIpConfigurationArgs;\nimport com.pulumi.azure.compute.VirtualMachine;\nimport com.pulumi.azure.compute.VirtualMachineArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineStorageImageReferenceArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineStorageOsDiskArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineOsProfileArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineOsProfileLinuxConfigArgs;\nimport com.pulumi.azure.recoveryservices.Vault;\nimport com.pulumi.azure.recoveryservices.VaultArgs;\nimport com.pulumi.azure.siterecovery.Fabric;\nimport com.pulumi.azure.siterecovery.FabricArgs;\nimport com.pulumi.azure.siterecovery.ProtectionContainer;\nimport com.pulumi.azure.siterecovery.ProtectionContainerArgs;\nimport com.pulumi.azure.siterecovery.ReplicationPolicy;\nimport com.pulumi.azure.siterecovery.ReplicationPolicyArgs;\nimport com.pulumi.azure.siterecovery.ProtectionContainerMapping;\nimport com.pulumi.azure.siterecovery.ProtectionContainerMappingArgs;\nimport com.pulumi.azure.siterecovery.NetworkMapping;\nimport com.pulumi.azure.siterecovery.NetworkMappingArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.siterecovery.ReplicatedVM;\nimport com.pulumi.azure.siterecovery.ReplicatedVMArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicatedVMManagedDiskArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicatedVMNetworkInterfaceArgs;\nimport com.pulumi.azure.siterecovery.ReplicationRecoveryPlan;\nimport com.pulumi.azure.siterecovery.ReplicationRecoveryPlanArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicationRecoveryPlanShutdownRecoveryGroupArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicationRecoveryPlanFailoverRecoveryGroupArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicationRecoveryPlanBootRecoveryGroupArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new ResourceGroup(\"primary\", ResourceGroupArgs.builder()\n .name(\"tfex-replicated-vm-primary\")\n .location(\"West US\")\n .build());\n\n var secondary = new ResourceGroup(\"secondary\", ResourceGroupArgs.builder()\n .name(\"tfex-replicated-vm-secondary\")\n .location(\"East US\")\n .build());\n\n var primaryVirtualNetwork = new VirtualNetwork(\"primaryVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"network1\")\n .resourceGroupName(primary.name())\n .addressSpaces(\"192.168.1.0/24\")\n .location(primary.location())\n .build());\n\n var primarySubnet = new Subnet(\"primarySubnet\", SubnetArgs.builder()\n .name(\"network1-subnet\")\n .resourceGroupName(primary.name())\n .virtualNetworkName(primaryVirtualNetwork.name())\n .addressPrefixes(\"192.168.1.0/24\")\n .build());\n\n var primaryPublicIp = new PublicIp(\"primaryPublicIp\", PublicIpArgs.builder()\n .name(\"vm-public-ip-primary\")\n .allocationMethod(\"Static\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .sku(\"Basic\")\n .build());\n\n var vmNetworkInterface = new NetworkInterface(\"vmNetworkInterface\", NetworkInterfaceArgs.builder()\n .name(\"vm-nic\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .ipConfigurations(NetworkInterfaceIpConfigurationArgs.builder()\n .name(\"vm\")\n .subnetId(primarySubnet.id())\n .privateIpAddressAllocation(\"Dynamic\")\n .publicIpAddressId(primaryPublicIp.id())\n .build())\n .build());\n\n var vm = new VirtualMachine(\"vm\", VirtualMachineArgs.builder()\n .name(\"vm\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .vmSize(\"Standard_B1s\")\n .networkInterfaceIds(vmNetworkInterface.id())\n .storageImageReference(VirtualMachineStorageImageReferenceArgs.builder()\n .publisher(\"Canonical\")\n .offer(\"0001-com-ubuntu-server-jammy\")\n .sku(\"22_04-lts\")\n .version(\"latest\")\n .build())\n .storageOsDisk(VirtualMachineStorageOsDiskArgs.builder()\n .name(\"vm-os-disk\")\n .osType(\"Linux\")\n .caching(\"ReadWrite\")\n .createOption(\"FromImage\")\n .managedDiskType(\"Premium_LRS\")\n .build())\n .osProfile(VirtualMachineOsProfileArgs.builder()\n .adminUsername(\"test-admin-123\")\n .adminPassword(\"test-pwd-123\")\n .computerName(\"vm\")\n .build())\n .osProfileLinuxConfig(VirtualMachineOsProfileLinuxConfigArgs.builder()\n .disablePasswordAuthentication(false)\n .build())\n .build());\n\n var vault = new Vault(\"vault\", VaultArgs.builder()\n .name(\"example-recovery-vault\")\n .location(secondary.location())\n .resourceGroupName(secondary.name())\n .sku(\"Standard\")\n .build());\n\n var primaryFabric = new Fabric(\"primaryFabric\", FabricArgs.builder()\n .name(\"primary-fabric\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .location(primary.location())\n .build());\n\n var secondaryFabric = new Fabric(\"secondaryFabric\", FabricArgs.builder()\n .name(\"secondary-fabric\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .location(secondary.location())\n .build());\n\n var primaryProtectionContainer = new ProtectionContainer(\"primaryProtectionContainer\", ProtectionContainerArgs.builder()\n .name(\"primary-protection-container\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(primaryFabric.name())\n .build());\n\n var secondaryProtectionContainer = new ProtectionContainer(\"secondaryProtectionContainer\", ProtectionContainerArgs.builder()\n .name(\"secondary-protection-container\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(secondaryFabric.name())\n .build());\n\n var policy = new ReplicationPolicy(\"policy\", ReplicationPolicyArgs.builder()\n .name(\"policy\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryPointRetentionInMinutes(24 * 60)\n .applicationConsistentSnapshotFrequencyInMinutes(4 * 60)\n .build());\n\n var container_mapping = new ProtectionContainerMapping(\"container-mapping\", ProtectionContainerMappingArgs.builder()\n .name(\"container-mapping\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(primaryFabric.name())\n .recoverySourceProtectionContainerName(primaryProtectionContainer.name())\n .recoveryTargetProtectionContainerId(secondaryProtectionContainer.id())\n .recoveryReplicationPolicyId(policy.id())\n .build());\n\n var secondaryVirtualNetwork = new VirtualNetwork(\"secondaryVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"network2\")\n .resourceGroupName(secondary.name())\n .addressSpaces(\"192.168.2.0/24\")\n .location(secondary.location())\n .build());\n\n var network_mapping = new NetworkMapping(\"network-mapping\", NetworkMappingArgs.builder()\n .name(\"network-mapping\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .sourceRecoveryFabricName(primaryFabric.name())\n .targetRecoveryFabricName(secondaryFabric.name())\n .sourceNetworkId(primaryVirtualNetwork.id())\n .targetNetworkId(secondaryVirtualNetwork.id())\n .build());\n\n var primaryAccount = new Account(\"primaryAccount\", AccountArgs.builder()\n .name(\"primaryrecoverycache\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"LRS\")\n .build());\n\n var secondarySubnet = new Subnet(\"secondarySubnet\", SubnetArgs.builder()\n .name(\"network2-subnet\")\n .resourceGroupName(secondary.name())\n .virtualNetworkName(secondaryVirtualNetwork.name())\n .addressPrefixes(\"192.168.2.0/24\")\n .build());\n\n var secondaryPublicIp = new PublicIp(\"secondaryPublicIp\", PublicIpArgs.builder()\n .name(\"vm-public-ip-secondary\")\n .allocationMethod(\"Static\")\n .location(secondary.location())\n .resourceGroupName(secondary.name())\n .sku(\"Basic\")\n .build());\n\n var vm_replication = new ReplicatedVM(\"vm-replication\", ReplicatedVMArgs.builder()\n .name(\"vm-replication\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .sourceRecoveryFabricName(primaryFabric.name())\n .sourceVmId(vm.id())\n .recoveryReplicationPolicyId(policy.id())\n .sourceRecoveryProtectionContainerName(primaryProtectionContainer.name())\n .targetResourceGroupId(secondary.id())\n .targetRecoveryFabricId(secondaryFabric.id())\n .targetRecoveryProtectionContainerId(secondaryProtectionContainer.id())\n .managedDisks(ReplicatedVMManagedDiskArgs.builder()\n .diskId(vm.storageOsDisk().applyValue(storageOsDisk -\u003e storageOsDisk.managedDiskId()))\n .stagingStorageAccountId(primaryAccount.id())\n .targetResourceGroupId(secondary.id())\n .targetDiskType(\"Premium_LRS\")\n .targetReplicaDiskType(\"Premium_LRS\")\n .build())\n .networkInterfaces(ReplicatedVMNetworkInterfaceArgs.builder()\n .sourceNetworkInterfaceId(vmNetworkInterface.id())\n .targetSubnetName(secondarySubnet.name())\n .recoveryPublicIpAddressId(secondaryPublicIp.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n container_mapping,\n network_mapping)\n .build());\n\n var example = new ReplicationRecoveryPlan(\"example\", ReplicationRecoveryPlanArgs.builder()\n .name(\"example-recover-plan\")\n .recoveryVaultId(vault.id())\n .sourceRecoveryFabricId(primaryFabric.id())\n .targetRecoveryFabricId(secondaryFabric.id())\n .shutdownRecoveryGroup()\n .failoverRecoveryGroup()\n .bootRecoveryGroups(ReplicationRecoveryPlanBootRecoveryGroupArgs.builder()\n .replicatedProtectedItems(vm_replication.id())\n .build())\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSite Recovery Fabric can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:siterecovery/replicationRecoveryPlan:ReplicationRecoveryPlan azurerm_site_recovery_replication_recovery_plan.example /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/groupName/providers/Microsoft.RecoveryServices/vaults/vaultName/replicationRecoveryPlans/planName\n```\n\n", + "description": "Manages a Site Recovery Replication Recovery Plan within a Recovery Services vault. A recovery plan gathers machines into recovery groups for the purpose of failover.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst primary = new azure.core.ResourceGroup(\"primary\", {\n name: \"tfex-replicated-vm-primary\",\n location: \"West US\",\n});\nconst secondary = new azure.core.ResourceGroup(\"secondary\", {\n name: \"tfex-replicated-vm-secondary\",\n location: \"East US\",\n});\nconst primaryVirtualNetwork = new azure.network.VirtualNetwork(\"primary\", {\n name: \"network1\",\n resourceGroupName: primary.name,\n addressSpaces: [\"192.168.1.0/24\"],\n location: primary.location,\n});\nconst primarySubnet = new azure.network.Subnet(\"primary\", {\n name: \"network1-subnet\",\n resourceGroupName: primary.name,\n virtualNetworkName: primaryVirtualNetwork.name,\n addressPrefixes: [\"192.168.1.0/24\"],\n});\nconst primaryPublicIp = new azure.network.PublicIp(\"primary\", {\n name: \"vm-public-ip-primary\",\n allocationMethod: \"Static\",\n location: primary.location,\n resourceGroupName: primary.name,\n sku: \"Basic\",\n});\nconst vmNetworkInterface = new azure.network.NetworkInterface(\"vm\", {\n name: \"vm-nic\",\n location: primary.location,\n resourceGroupName: primary.name,\n ipConfigurations: [{\n name: \"vm\",\n subnetId: primarySubnet.id,\n privateIpAddressAllocation: \"Dynamic\",\n publicIpAddressId: primaryPublicIp.id,\n }],\n});\nconst vm = new azure.compute.VirtualMachine(\"vm\", {\n name: \"vm\",\n location: primary.location,\n resourceGroupName: primary.name,\n vmSize: \"Standard_B1s\",\n networkInterfaceIds: [vmNetworkInterface.id],\n storageImageReference: {\n publisher: \"Canonical\",\n offer: \"0001-com-ubuntu-server-jammy\",\n sku: \"22_04-lts\",\n version: \"latest\",\n },\n storageOsDisk: {\n name: \"vm-os-disk\",\n osType: \"Linux\",\n caching: \"ReadWrite\",\n createOption: \"FromImage\",\n managedDiskType: \"Premium_LRS\",\n },\n osProfile: {\n adminUsername: \"test-admin-123\",\n adminPassword: \"test-pwd-123\",\n computerName: \"vm\",\n },\n osProfileLinuxConfig: {\n disablePasswordAuthentication: false,\n },\n});\nconst vault = new azure.recoveryservices.Vault(\"vault\", {\n name: \"example-recovery-vault\",\n location: secondary.location,\n resourceGroupName: secondary.name,\n sku: \"Standard\",\n});\nconst primaryFabric = new azure.siterecovery.Fabric(\"primary\", {\n name: \"primary-fabric\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n location: primary.location,\n});\nconst secondaryFabric = new azure.siterecovery.Fabric(\"secondary\", {\n name: \"secondary-fabric\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n location: secondary.location,\n});\nconst primaryProtectionContainer = new azure.siterecovery.ProtectionContainer(\"primary\", {\n name: \"primary-protection-container\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: primaryFabric.name,\n});\nconst secondaryProtectionContainer = new azure.siterecovery.ProtectionContainer(\"secondary\", {\n name: \"secondary-protection-container\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: secondaryFabric.name,\n});\nconst policy = new azure.siterecovery.ReplicationPolicy(\"policy\", {\n name: \"policy\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryPointRetentionInMinutes: 24 * 60,\n applicationConsistentSnapshotFrequencyInMinutes: 4 * 60,\n});\nconst container_mapping = new azure.siterecovery.ProtectionContainerMapping(\"container-mapping\", {\n name: \"container-mapping\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n recoveryFabricName: primaryFabric.name,\n recoverySourceProtectionContainerName: primaryProtectionContainer.name,\n recoveryTargetProtectionContainerId: secondaryProtectionContainer.id,\n recoveryReplicationPolicyId: policy.id,\n});\nconst secondaryVirtualNetwork = new azure.network.VirtualNetwork(\"secondary\", {\n name: \"network2\",\n resourceGroupName: secondary.name,\n addressSpaces: [\"192.168.2.0/24\"],\n location: secondary.location,\n});\nconst network_mapping = new azure.siterecovery.NetworkMapping(\"network-mapping\", {\n name: \"network-mapping\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n sourceRecoveryFabricName: primaryFabric.name,\n targetRecoveryFabricName: secondaryFabric.name,\n sourceNetworkId: primaryVirtualNetwork.id,\n targetNetworkId: secondaryVirtualNetwork.id,\n});\nconst primaryAccount = new azure.storage.Account(\"primary\", {\n name: \"primaryrecoverycache\",\n location: primary.location,\n resourceGroupName: primary.name,\n accountTier: \"Standard\",\n accountReplicationType: \"LRS\",\n});\nconst secondarySubnet = new azure.network.Subnet(\"secondary\", {\n name: \"network2-subnet\",\n resourceGroupName: secondary.name,\n virtualNetworkName: secondaryVirtualNetwork.name,\n addressPrefixes: [\"192.168.2.0/24\"],\n});\nconst secondaryPublicIp = new azure.network.PublicIp(\"secondary\", {\n name: \"vm-public-ip-secondary\",\n allocationMethod: \"Static\",\n location: secondary.location,\n resourceGroupName: secondary.name,\n sku: \"Basic\",\n});\nconst vm_replication = new azure.siterecovery.ReplicatedVM(\"vm-replication\", {\n name: \"vm-replication\",\n resourceGroupName: secondary.name,\n recoveryVaultName: vault.name,\n sourceRecoveryFabricName: primaryFabric.name,\n sourceVmId: vm.id,\n recoveryReplicationPolicyId: policy.id,\n sourceRecoveryProtectionContainerName: primaryProtectionContainer.name,\n targetResourceGroupId: secondary.id,\n targetRecoveryFabricId: secondaryFabric.id,\n targetRecoveryProtectionContainerId: secondaryProtectionContainer.id,\n managedDisks: [{\n diskId: vm.storageOsDisk.apply(storageOsDisk =\u003e storageOsDisk.managedDiskId),\n stagingStorageAccountId: primaryAccount.id,\n targetResourceGroupId: secondary.id,\n targetDiskType: \"Premium_LRS\",\n targetReplicaDiskType: \"Premium_LRS\",\n }],\n networkInterfaces: [{\n sourceNetworkInterfaceId: vmNetworkInterface.id,\n targetSubnetName: secondarySubnet.name,\n recoveryPublicIpAddressId: secondaryPublicIp.id,\n }],\n}, {\n dependsOn: [\n container_mapping,\n network_mapping,\n ],\n});\nconst example = new azure.siterecovery.ReplicationRecoveryPlan(\"example\", {\n name: \"example-recover-plan\",\n recoveryVaultId: vault.id,\n sourceRecoveryFabricId: primaryFabric.id,\n targetRecoveryFabricId: secondaryFabric.id,\n shutdownRecoveryGroup: {},\n failoverRecoveryGroup: {},\n bootRecoveryGroups: [{\n replicatedProtectedItems: [vm_replication.id],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nprimary = azure.core.ResourceGroup(\"primary\",\n name=\"tfex-replicated-vm-primary\",\n location=\"West US\")\nsecondary = azure.core.ResourceGroup(\"secondary\",\n name=\"tfex-replicated-vm-secondary\",\n location=\"East US\")\nprimary_virtual_network = azure.network.VirtualNetwork(\"primary\",\n name=\"network1\",\n resource_group_name=primary.name,\n address_spaces=[\"192.168.1.0/24\"],\n location=primary.location)\nprimary_subnet = azure.network.Subnet(\"primary\",\n name=\"network1-subnet\",\n resource_group_name=primary.name,\n virtual_network_name=primary_virtual_network.name,\n address_prefixes=[\"192.168.1.0/24\"])\nprimary_public_ip = azure.network.PublicIp(\"primary\",\n name=\"vm-public-ip-primary\",\n allocation_method=\"Static\",\n location=primary.location,\n resource_group_name=primary.name,\n sku=\"Basic\")\nvm_network_interface = azure.network.NetworkInterface(\"vm\",\n name=\"vm-nic\",\n location=primary.location,\n resource_group_name=primary.name,\n ip_configurations=[{\n \"name\": \"vm\",\n \"subnet_id\": primary_subnet.id,\n \"private_ip_address_allocation\": \"Dynamic\",\n \"public_ip_address_id\": primary_public_ip.id,\n }])\nvm = azure.compute.VirtualMachine(\"vm\",\n name=\"vm\",\n location=primary.location,\n resource_group_name=primary.name,\n vm_size=\"Standard_B1s\",\n network_interface_ids=[vm_network_interface.id],\n storage_image_reference={\n \"publisher\": \"Canonical\",\n \"offer\": \"0001-com-ubuntu-server-jammy\",\n \"sku\": \"22_04-lts\",\n \"version\": \"latest\",\n },\n storage_os_disk={\n \"name\": \"vm-os-disk\",\n \"os_type\": \"Linux\",\n \"caching\": \"ReadWrite\",\n \"create_option\": \"FromImage\",\n \"managed_disk_type\": \"Premium_LRS\",\n },\n os_profile={\n \"admin_username\": \"test-admin-123\",\n \"admin_password\": \"test-pwd-123\",\n \"computer_name\": \"vm\",\n },\n os_profile_linux_config={\n \"disable_password_authentication\": False,\n })\nvault = azure.recoveryservices.Vault(\"vault\",\n name=\"example-recovery-vault\",\n location=secondary.location,\n resource_group_name=secondary.name,\n sku=\"Standard\")\nprimary_fabric = azure.siterecovery.Fabric(\"primary\",\n name=\"primary-fabric\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n location=primary.location)\nsecondary_fabric = azure.siterecovery.Fabric(\"secondary\",\n name=\"secondary-fabric\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n location=secondary.location)\nprimary_protection_container = azure.siterecovery.ProtectionContainer(\"primary\",\n name=\"primary-protection-container\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=primary_fabric.name)\nsecondary_protection_container = azure.siterecovery.ProtectionContainer(\"secondary\",\n name=\"secondary-protection-container\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=secondary_fabric.name)\npolicy = azure.siterecovery.ReplicationPolicy(\"policy\",\n name=\"policy\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_point_retention_in_minutes=24 * 60,\n application_consistent_snapshot_frequency_in_minutes=4 * 60)\ncontainer_mapping = azure.siterecovery.ProtectionContainerMapping(\"container-mapping\",\n name=\"container-mapping\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n recovery_fabric_name=primary_fabric.name,\n recovery_source_protection_container_name=primary_protection_container.name,\n recovery_target_protection_container_id=secondary_protection_container.id,\n recovery_replication_policy_id=policy.id)\nsecondary_virtual_network = azure.network.VirtualNetwork(\"secondary\",\n name=\"network2\",\n resource_group_name=secondary.name,\n address_spaces=[\"192.168.2.0/24\"],\n location=secondary.location)\nnetwork_mapping = azure.siterecovery.NetworkMapping(\"network-mapping\",\n name=\"network-mapping\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n source_recovery_fabric_name=primary_fabric.name,\n target_recovery_fabric_name=secondary_fabric.name,\n source_network_id=primary_virtual_network.id,\n target_network_id=secondary_virtual_network.id)\nprimary_account = azure.storage.Account(\"primary\",\n name=\"primaryrecoverycache\",\n location=primary.location,\n resource_group_name=primary.name,\n account_tier=\"Standard\",\n account_replication_type=\"LRS\")\nsecondary_subnet = azure.network.Subnet(\"secondary\",\n name=\"network2-subnet\",\n resource_group_name=secondary.name,\n virtual_network_name=secondary_virtual_network.name,\n address_prefixes=[\"192.168.2.0/24\"])\nsecondary_public_ip = azure.network.PublicIp(\"secondary\",\n name=\"vm-public-ip-secondary\",\n allocation_method=\"Static\",\n location=secondary.location,\n resource_group_name=secondary.name,\n sku=\"Basic\")\nvm_replication = azure.siterecovery.ReplicatedVM(\"vm-replication\",\n name=\"vm-replication\",\n resource_group_name=secondary.name,\n recovery_vault_name=vault.name,\n source_recovery_fabric_name=primary_fabric.name,\n source_vm_id=vm.id,\n recovery_replication_policy_id=policy.id,\n source_recovery_protection_container_name=primary_protection_container.name,\n target_resource_group_id=secondary.id,\n target_recovery_fabric_id=secondary_fabric.id,\n target_recovery_protection_container_id=secondary_protection_container.id,\n managed_disks=[{\n \"disk_id\": vm.storage_os_disk.managed_disk_id,\n \"staging_storage_account_id\": primary_account.id,\n \"target_resource_group_id\": secondary.id,\n \"target_disk_type\": \"Premium_LRS\",\n \"target_replica_disk_type\": \"Premium_LRS\",\n }],\n network_interfaces=[{\n \"source_network_interface_id\": vm_network_interface.id,\n \"target_subnet_name\": secondary_subnet.name,\n \"recovery_public_ip_address_id\": secondary_public_ip.id,\n }],\n opts = pulumi.ResourceOptions(depends_on=[\n container_mapping,\n network_mapping,\n ]))\nexample = azure.siterecovery.ReplicationRecoveryPlan(\"example\",\n name=\"example-recover-plan\",\n recovery_vault_id=vault.id,\n source_recovery_fabric_id=primary_fabric.id,\n target_recovery_fabric_id=secondary_fabric.id,\n shutdown_recovery_group={},\n failover_recovery_group={},\n boot_recovery_groups=[{\n \"replicated_protected_items\": [vm_replication.id],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Azure.Core.ResourceGroup(\"primary\", new()\n {\n Name = \"tfex-replicated-vm-primary\",\n Location = \"West US\",\n });\n\n var secondary = new Azure.Core.ResourceGroup(\"secondary\", new()\n {\n Name = \"tfex-replicated-vm-secondary\",\n Location = \"East US\",\n });\n\n var primaryVirtualNetwork = new Azure.Network.VirtualNetwork(\"primary\", new()\n {\n Name = \"network1\",\n ResourceGroupName = primary.Name,\n AddressSpaces = new[]\n {\n \"192.168.1.0/24\",\n },\n Location = primary.Location,\n });\n\n var primarySubnet = new Azure.Network.Subnet(\"primary\", new()\n {\n Name = \"network1-subnet\",\n ResourceGroupName = primary.Name,\n VirtualNetworkName = primaryVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"192.168.1.0/24\",\n },\n });\n\n var primaryPublicIp = new Azure.Network.PublicIp(\"primary\", new()\n {\n Name = \"vm-public-ip-primary\",\n AllocationMethod = \"Static\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n Sku = \"Basic\",\n });\n\n var vmNetworkInterface = new Azure.Network.NetworkInterface(\"vm\", new()\n {\n Name = \"vm-nic\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n IpConfigurations = new[]\n {\n new Azure.Network.Inputs.NetworkInterfaceIpConfigurationArgs\n {\n Name = \"vm\",\n SubnetId = primarySubnet.Id,\n PrivateIpAddressAllocation = \"Dynamic\",\n PublicIpAddressId = primaryPublicIp.Id,\n },\n },\n });\n\n var vm = new Azure.Compute.VirtualMachine(\"vm\", new()\n {\n Name = \"vm\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n VmSize = \"Standard_B1s\",\n NetworkInterfaceIds = new[]\n {\n vmNetworkInterface.Id,\n },\n StorageImageReference = new Azure.Compute.Inputs.VirtualMachineStorageImageReferenceArgs\n {\n Publisher = \"Canonical\",\n Offer = \"0001-com-ubuntu-server-jammy\",\n Sku = \"22_04-lts\",\n Version = \"latest\",\n },\n StorageOsDisk = new Azure.Compute.Inputs.VirtualMachineStorageOsDiskArgs\n {\n Name = \"vm-os-disk\",\n OsType = \"Linux\",\n Caching = \"ReadWrite\",\n CreateOption = \"FromImage\",\n ManagedDiskType = \"Premium_LRS\",\n },\n OsProfile = new Azure.Compute.Inputs.VirtualMachineOsProfileArgs\n {\n AdminUsername = \"test-admin-123\",\n AdminPassword = \"test-pwd-123\",\n ComputerName = \"vm\",\n },\n OsProfileLinuxConfig = new Azure.Compute.Inputs.VirtualMachineOsProfileLinuxConfigArgs\n {\n DisablePasswordAuthentication = false,\n },\n });\n\n var vault = new Azure.RecoveryServices.Vault(\"vault\", new()\n {\n Name = \"example-recovery-vault\",\n Location = secondary.Location,\n ResourceGroupName = secondary.Name,\n Sku = \"Standard\",\n });\n\n var primaryFabric = new Azure.SiteRecovery.Fabric(\"primary\", new()\n {\n Name = \"primary-fabric\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n Location = primary.Location,\n });\n\n var secondaryFabric = new Azure.SiteRecovery.Fabric(\"secondary\", new()\n {\n Name = \"secondary-fabric\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n Location = secondary.Location,\n });\n\n var primaryProtectionContainer = new Azure.SiteRecovery.ProtectionContainer(\"primary\", new()\n {\n Name = \"primary-protection-container\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = primaryFabric.Name,\n });\n\n var secondaryProtectionContainer = new Azure.SiteRecovery.ProtectionContainer(\"secondary\", new()\n {\n Name = \"secondary-protection-container\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = secondaryFabric.Name,\n });\n\n var policy = new Azure.SiteRecovery.ReplicationPolicy(\"policy\", new()\n {\n Name = \"policy\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryPointRetentionInMinutes = 24 * 60,\n ApplicationConsistentSnapshotFrequencyInMinutes = 4 * 60,\n });\n\n var container_mapping = new Azure.SiteRecovery.ProtectionContainerMapping(\"container-mapping\", new()\n {\n Name = \"container-mapping\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n RecoveryFabricName = primaryFabric.Name,\n RecoverySourceProtectionContainerName = primaryProtectionContainer.Name,\n RecoveryTargetProtectionContainerId = secondaryProtectionContainer.Id,\n RecoveryReplicationPolicyId = policy.Id,\n });\n\n var secondaryVirtualNetwork = new Azure.Network.VirtualNetwork(\"secondary\", new()\n {\n Name = \"network2\",\n ResourceGroupName = secondary.Name,\n AddressSpaces = new[]\n {\n \"192.168.2.0/24\",\n },\n Location = secondary.Location,\n });\n\n var network_mapping = new Azure.SiteRecovery.NetworkMapping(\"network-mapping\", new()\n {\n Name = \"network-mapping\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n SourceRecoveryFabricName = primaryFabric.Name,\n TargetRecoveryFabricName = secondaryFabric.Name,\n SourceNetworkId = primaryVirtualNetwork.Id,\n TargetNetworkId = secondaryVirtualNetwork.Id,\n });\n\n var primaryAccount = new Azure.Storage.Account(\"primary\", new()\n {\n Name = \"primaryrecoverycache\",\n Location = primary.Location,\n ResourceGroupName = primary.Name,\n AccountTier = \"Standard\",\n AccountReplicationType = \"LRS\",\n });\n\n var secondarySubnet = new Azure.Network.Subnet(\"secondary\", new()\n {\n Name = \"network2-subnet\",\n ResourceGroupName = secondary.Name,\n VirtualNetworkName = secondaryVirtualNetwork.Name,\n AddressPrefixes = new[]\n {\n \"192.168.2.0/24\",\n },\n });\n\n var secondaryPublicIp = new Azure.Network.PublicIp(\"secondary\", new()\n {\n Name = \"vm-public-ip-secondary\",\n AllocationMethod = \"Static\",\n Location = secondary.Location,\n ResourceGroupName = secondary.Name,\n Sku = \"Basic\",\n });\n\n var vm_replication = new Azure.SiteRecovery.ReplicatedVM(\"vm-replication\", new()\n {\n Name = \"vm-replication\",\n ResourceGroupName = secondary.Name,\n RecoveryVaultName = vault.Name,\n SourceRecoveryFabricName = primaryFabric.Name,\n SourceVmId = vm.Id,\n RecoveryReplicationPolicyId = policy.Id,\n SourceRecoveryProtectionContainerName = primaryProtectionContainer.Name,\n TargetResourceGroupId = secondary.Id,\n TargetRecoveryFabricId = secondaryFabric.Id,\n TargetRecoveryProtectionContainerId = secondaryProtectionContainer.Id,\n ManagedDisks = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicatedVMManagedDiskArgs\n {\n DiskId = vm.StorageOsDisk.Apply(storageOsDisk =\u003e storageOsDisk.ManagedDiskId),\n StagingStorageAccountId = primaryAccount.Id,\n TargetResourceGroupId = secondary.Id,\n TargetDiskType = \"Premium_LRS\",\n TargetReplicaDiskType = \"Premium_LRS\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicatedVMNetworkInterfaceArgs\n {\n SourceNetworkInterfaceId = vmNetworkInterface.Id,\n TargetSubnetName = secondarySubnet.Name,\n RecoveryPublicIpAddressId = secondaryPublicIp.Id,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n container_mapping,\n network_mapping,\n },\n });\n\n var example = new Azure.SiteRecovery.ReplicationRecoveryPlan(\"example\", new()\n {\n Name = \"example-recover-plan\",\n RecoveryVaultId = vault.Id,\n SourceRecoveryFabricId = primaryFabric.Id,\n TargetRecoveryFabricId = secondaryFabric.Id,\n ShutdownRecoveryGroup = null,\n FailoverRecoveryGroup = null,\n BootRecoveryGroups = new[]\n {\n new Azure.SiteRecovery.Inputs.ReplicationRecoveryPlanBootRecoveryGroupArgs\n {\n ReplicatedProtectedItems = new[]\n {\n vm_replication.Id,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/compute\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/recoveryservices\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/siterecovery\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := core.NewResourceGroup(ctx, \"primary\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-replicated-vm-primary\"),\n\t\t\tLocation: pulumi.String(\"West US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondary, err := core.NewResourceGroup(ctx, \"secondary\", \u0026core.ResourceGroupArgs{\n\t\t\tName: pulumi.String(\"tfex-replicated-vm-secondary\"),\n\t\t\tLocation: pulumi.String(\"East US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"primary\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"network1\"),\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.1.0/24\"),\n\t\t\t},\n\t\t\tLocation: primary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimarySubnet, err := network.NewSubnet(ctx, \"primary\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"network1-subnet\"),\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tVirtualNetworkName: primaryVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.1.0/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryPublicIp, err := network.NewPublicIp(ctx, \"primary\", \u0026network.PublicIpArgs{\n\t\t\tName: pulumi.String(\"vm-public-ip-primary\"),\n\t\t\tAllocationMethod: pulumi.String(\"Static\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tSku: pulumi.String(\"Basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvmNetworkInterface, err := network.NewNetworkInterface(ctx, \"vm\", \u0026network.NetworkInterfaceArgs{\n\t\t\tName: pulumi.String(\"vm-nic\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tIpConfigurations: network.NetworkInterfaceIpConfigurationArray{\n\t\t\t\t\u0026network.NetworkInterfaceIpConfigurationArgs{\n\t\t\t\t\tName: pulumi.String(\"vm\"),\n\t\t\t\t\tSubnetId: primarySubnet.ID(),\n\t\t\t\t\tPrivateIpAddressAllocation: pulumi.String(\"Dynamic\"),\n\t\t\t\t\tPublicIpAddressId: primaryPublicIp.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvm, err := compute.NewVirtualMachine(ctx, \"vm\", \u0026compute.VirtualMachineArgs{\n\t\t\tName: pulumi.String(\"vm\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tVmSize: pulumi.String(\"Standard_B1s\"),\n\t\t\tNetworkInterfaceIds: pulumi.StringArray{\n\t\t\t\tvmNetworkInterface.ID(),\n\t\t\t},\n\t\t\tStorageImageReference: \u0026compute.VirtualMachineStorageImageReferenceArgs{\n\t\t\t\tPublisher: pulumi.String(\"Canonical\"),\n\t\t\t\tOffer: pulumi.String(\"0001-com-ubuntu-server-jammy\"),\n\t\t\t\tSku: pulumi.String(\"22_04-lts\"),\n\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t},\n\t\t\tStorageOsDisk: \u0026compute.VirtualMachineStorageOsDiskArgs{\n\t\t\t\tName: pulumi.String(\"vm-os-disk\"),\n\t\t\t\tOsType: pulumi.String(\"Linux\"),\n\t\t\t\tCaching: pulumi.String(\"ReadWrite\"),\n\t\t\t\tCreateOption: pulumi.String(\"FromImage\"),\n\t\t\t\tManagedDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t},\n\t\t\tOsProfile: \u0026compute.VirtualMachineOsProfileArgs{\n\t\t\t\tAdminUsername: pulumi.String(\"test-admin-123\"),\n\t\t\t\tAdminPassword: pulumi.String(\"test-pwd-123\"),\n\t\t\t\tComputerName: pulumi.String(\"vm\"),\n\t\t\t},\n\t\t\tOsProfileLinuxConfig: \u0026compute.VirtualMachineOsProfileLinuxConfigArgs{\n\t\t\t\tDisablePasswordAuthentication: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvault, err := recoveryservices.NewVault(ctx, \"vault\", \u0026recoveryservices.VaultArgs{\n\t\t\tName: pulumi.String(\"example-recovery-vault\"),\n\t\t\tLocation: secondary.Location,\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tSku: pulumi.String(\"Standard\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryFabric, err := siterecovery.NewFabric(ctx, \"primary\", \u0026siterecovery.FabricArgs{\n\t\t\tName: pulumi.String(\"primary-fabric\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tLocation: primary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryFabric, err := siterecovery.NewFabric(ctx, \"secondary\", \u0026siterecovery.FabricArgs{\n\t\t\tName: pulumi.String(\"secondary-fabric\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tLocation: secondary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryProtectionContainer, err := siterecovery.NewProtectionContainer(ctx, \"primary\", \u0026siterecovery.ProtectionContainerArgs{\n\t\t\tName: pulumi.String(\"primary-protection-container\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: primaryFabric.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryProtectionContainer, err := siterecovery.NewProtectionContainer(ctx, \"secondary\", \u0026siterecovery.ProtectionContainerArgs{\n\t\t\tName: pulumi.String(\"secondary-protection-container\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: secondaryFabric.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy, err := siterecovery.NewReplicationPolicy(ctx, \"policy\", \u0026siterecovery.ReplicationPolicyArgs{\n\t\t\tName: pulumi.String(\"policy\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryPointRetentionInMinutes: int(24 * 60),\n\t\t\tApplicationConsistentSnapshotFrequencyInMinutes: int(4 * 60),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcontainer_mapping, err := siterecovery.NewProtectionContainerMapping(ctx, \"container-mapping\", \u0026siterecovery.ProtectionContainerMappingArgs{\n\t\t\tName: pulumi.String(\"container-mapping\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tRecoveryFabricName: primaryFabric.Name,\n\t\t\tRecoverySourceProtectionContainerName: primaryProtectionContainer.Name,\n\t\t\tRecoveryTargetProtectionContainerId: secondaryProtectionContainer.ID(),\n\t\t\tRecoveryReplicationPolicyId: policy.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryVirtualNetwork, err := network.NewVirtualNetwork(ctx, \"secondary\", \u0026network.VirtualNetworkArgs{\n\t\t\tName: pulumi.String(\"network2\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tAddressSpaces: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.2.0/24\"),\n\t\t\t},\n\t\t\tLocation: secondary.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork_mapping, err := siterecovery.NewNetworkMapping(ctx, \"network-mapping\", \u0026siterecovery.NetworkMappingArgs{\n\t\t\tName: pulumi.String(\"network-mapping\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceRecoveryFabricName: primaryFabric.Name,\n\t\t\tTargetRecoveryFabricName: secondaryFabric.Name,\n\t\t\tSourceNetworkId: primaryVirtualNetwork.ID(),\n\t\t\tTargetNetworkId: secondaryVirtualNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryAccount, err := storage.NewAccount(ctx, \"primary\", \u0026storage.AccountArgs{\n\t\t\tName: pulumi.String(\"primaryrecoverycache\"),\n\t\t\tLocation: primary.Location,\n\t\t\tResourceGroupName: primary.Name,\n\t\t\tAccountTier: pulumi.String(\"Standard\"),\n\t\t\tAccountReplicationType: pulumi.String(\"LRS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondarySubnet, err := network.NewSubnet(ctx, \"secondary\", \u0026network.SubnetArgs{\n\t\t\tName: pulumi.String(\"network2-subnet\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tVirtualNetworkName: secondaryVirtualNetwork.Name,\n\t\t\tAddressPrefixes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.168.2.0/24\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryPublicIp, err := network.NewPublicIp(ctx, \"secondary\", \u0026network.PublicIpArgs{\n\t\t\tName: pulumi.String(\"vm-public-ip-secondary\"),\n\t\t\tAllocationMethod: pulumi.String(\"Static\"),\n\t\t\tLocation: secondary.Location,\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tSku: pulumi.String(\"Basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvm_replication, err := siterecovery.NewReplicatedVM(ctx, \"vm-replication\", \u0026siterecovery.ReplicatedVMArgs{\n\t\t\tName: pulumi.String(\"vm-replication\"),\n\t\t\tResourceGroupName: secondary.Name,\n\t\t\tRecoveryVaultName: vault.Name,\n\t\t\tSourceRecoveryFabricName: primaryFabric.Name,\n\t\t\tSourceVmId: vm.ID(),\n\t\t\tRecoveryReplicationPolicyId: policy.ID(),\n\t\t\tSourceRecoveryProtectionContainerName: primaryProtectionContainer.Name,\n\t\t\tTargetResourceGroupId: secondary.ID(),\n\t\t\tTargetRecoveryFabricId: secondaryFabric.ID(),\n\t\t\tTargetRecoveryProtectionContainerId: secondaryProtectionContainer.ID(),\n\t\t\tManagedDisks: siterecovery.ReplicatedVMManagedDiskArray{\n\t\t\t\t\u0026siterecovery.ReplicatedVMManagedDiskArgs{\n\t\t\t\t\tDiskId: vm.StorageOsDisk.ApplyT(func(storageOsDisk compute.VirtualMachineStorageOsDisk) (*string, error) {\n\t\t\t\t\t\treturn \u0026storageOsDisk.ManagedDiskId, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\tStagingStorageAccountId: primaryAccount.ID(),\n\t\t\t\t\tTargetResourceGroupId: secondary.ID(),\n\t\t\t\t\tTargetDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t\t\tTargetReplicaDiskType: pulumi.String(\"Premium_LRS\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: siterecovery.ReplicatedVMNetworkInterfaceArray{\n\t\t\t\t\u0026siterecovery.ReplicatedVMNetworkInterfaceArgs{\n\t\t\t\t\tSourceNetworkInterfaceId: vmNetworkInterface.ID(),\n\t\t\t\t\tTargetSubnetName: secondarySubnet.Name,\n\t\t\t\t\tRecoveryPublicIpAddressId: secondaryPublicIp.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcontainer_mapping,\n\t\t\tnetwork_mapping,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = siterecovery.NewReplicationRecoveryPlan(ctx, \"example\", \u0026siterecovery.ReplicationRecoveryPlanArgs{\n\t\t\tName: pulumi.String(\"example-recover-plan\"),\n\t\t\tRecoveryVaultId: vault.ID(),\n\t\t\tSourceRecoveryFabricId: primaryFabric.ID(),\n\t\t\tTargetRecoveryFabricId: secondaryFabric.ID(),\n\t\t\tShutdownRecoveryGroup: \u0026siterecovery.ReplicationRecoveryPlanShutdownRecoveryGroupArgs{},\n\t\t\tFailoverRecoveryGroup: \u0026siterecovery.ReplicationRecoveryPlanFailoverRecoveryGroupArgs{},\n\t\t\tBootRecoveryGroups: siterecovery.ReplicationRecoveryPlanBootRecoveryGroupArray{\n\t\t\t\t\u0026siterecovery.ReplicationRecoveryPlanBootRecoveryGroupArgs{\n\t\t\t\t\tReplicatedProtectedItems: pulumi.StringArray{\n\t\t\t\t\t\tvm_replication.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.ResourceGroup;\nimport com.pulumi.azure.core.ResourceGroupArgs;\nimport com.pulumi.azure.network.VirtualNetwork;\nimport com.pulumi.azure.network.VirtualNetworkArgs;\nimport com.pulumi.azure.network.Subnet;\nimport com.pulumi.azure.network.SubnetArgs;\nimport com.pulumi.azure.network.PublicIp;\nimport com.pulumi.azure.network.PublicIpArgs;\nimport com.pulumi.azure.network.NetworkInterface;\nimport com.pulumi.azure.network.NetworkInterfaceArgs;\nimport com.pulumi.azure.network.inputs.NetworkInterfaceIpConfigurationArgs;\nimport com.pulumi.azure.compute.VirtualMachine;\nimport com.pulumi.azure.compute.VirtualMachineArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineStorageImageReferenceArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineStorageOsDiskArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineOsProfileArgs;\nimport com.pulumi.azure.compute.inputs.VirtualMachineOsProfileLinuxConfigArgs;\nimport com.pulumi.azure.recoveryservices.Vault;\nimport com.pulumi.azure.recoveryservices.VaultArgs;\nimport com.pulumi.azure.siterecovery.Fabric;\nimport com.pulumi.azure.siterecovery.FabricArgs;\nimport com.pulumi.azure.siterecovery.ProtectionContainer;\nimport com.pulumi.azure.siterecovery.ProtectionContainerArgs;\nimport com.pulumi.azure.siterecovery.ReplicationPolicy;\nimport com.pulumi.azure.siterecovery.ReplicationPolicyArgs;\nimport com.pulumi.azure.siterecovery.ProtectionContainerMapping;\nimport com.pulumi.azure.siterecovery.ProtectionContainerMappingArgs;\nimport com.pulumi.azure.siterecovery.NetworkMapping;\nimport com.pulumi.azure.siterecovery.NetworkMappingArgs;\nimport com.pulumi.azure.storage.Account;\nimport com.pulumi.azure.storage.AccountArgs;\nimport com.pulumi.azure.siterecovery.ReplicatedVM;\nimport com.pulumi.azure.siterecovery.ReplicatedVMArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicatedVMManagedDiskArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicatedVMNetworkInterfaceArgs;\nimport com.pulumi.azure.siterecovery.ReplicationRecoveryPlan;\nimport com.pulumi.azure.siterecovery.ReplicationRecoveryPlanArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicationRecoveryPlanShutdownRecoveryGroupArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicationRecoveryPlanFailoverRecoveryGroupArgs;\nimport com.pulumi.azure.siterecovery.inputs.ReplicationRecoveryPlanBootRecoveryGroupArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new ResourceGroup(\"primary\", ResourceGroupArgs.builder()\n .name(\"tfex-replicated-vm-primary\")\n .location(\"West US\")\n .build());\n\n var secondary = new ResourceGroup(\"secondary\", ResourceGroupArgs.builder()\n .name(\"tfex-replicated-vm-secondary\")\n .location(\"East US\")\n .build());\n\n var primaryVirtualNetwork = new VirtualNetwork(\"primaryVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"network1\")\n .resourceGroupName(primary.name())\n .addressSpaces(\"192.168.1.0/24\")\n .location(primary.location())\n .build());\n\n var primarySubnet = new Subnet(\"primarySubnet\", SubnetArgs.builder()\n .name(\"network1-subnet\")\n .resourceGroupName(primary.name())\n .virtualNetworkName(primaryVirtualNetwork.name())\n .addressPrefixes(\"192.168.1.0/24\")\n .build());\n\n var primaryPublicIp = new PublicIp(\"primaryPublicIp\", PublicIpArgs.builder()\n .name(\"vm-public-ip-primary\")\n .allocationMethod(\"Static\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .sku(\"Basic\")\n .build());\n\n var vmNetworkInterface = new NetworkInterface(\"vmNetworkInterface\", NetworkInterfaceArgs.builder()\n .name(\"vm-nic\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .ipConfigurations(NetworkInterfaceIpConfigurationArgs.builder()\n .name(\"vm\")\n .subnetId(primarySubnet.id())\n .privateIpAddressAllocation(\"Dynamic\")\n .publicIpAddressId(primaryPublicIp.id())\n .build())\n .build());\n\n var vm = new VirtualMachine(\"vm\", VirtualMachineArgs.builder()\n .name(\"vm\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .vmSize(\"Standard_B1s\")\n .networkInterfaceIds(vmNetworkInterface.id())\n .storageImageReference(VirtualMachineStorageImageReferenceArgs.builder()\n .publisher(\"Canonical\")\n .offer(\"0001-com-ubuntu-server-jammy\")\n .sku(\"22_04-lts\")\n .version(\"latest\")\n .build())\n .storageOsDisk(VirtualMachineStorageOsDiskArgs.builder()\n .name(\"vm-os-disk\")\n .osType(\"Linux\")\n .caching(\"ReadWrite\")\n .createOption(\"FromImage\")\n .managedDiskType(\"Premium_LRS\")\n .build())\n .osProfile(VirtualMachineOsProfileArgs.builder()\n .adminUsername(\"test-admin-123\")\n .adminPassword(\"test-pwd-123\")\n .computerName(\"vm\")\n .build())\n .osProfileLinuxConfig(VirtualMachineOsProfileLinuxConfigArgs.builder()\n .disablePasswordAuthentication(false)\n .build())\n .build());\n\n var vault = new Vault(\"vault\", VaultArgs.builder()\n .name(\"example-recovery-vault\")\n .location(secondary.location())\n .resourceGroupName(secondary.name())\n .sku(\"Standard\")\n .build());\n\n var primaryFabric = new Fabric(\"primaryFabric\", FabricArgs.builder()\n .name(\"primary-fabric\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .location(primary.location())\n .build());\n\n var secondaryFabric = new Fabric(\"secondaryFabric\", FabricArgs.builder()\n .name(\"secondary-fabric\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .location(secondary.location())\n .build());\n\n var primaryProtectionContainer = new ProtectionContainer(\"primaryProtectionContainer\", ProtectionContainerArgs.builder()\n .name(\"primary-protection-container\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(primaryFabric.name())\n .build());\n\n var secondaryProtectionContainer = new ProtectionContainer(\"secondaryProtectionContainer\", ProtectionContainerArgs.builder()\n .name(\"secondary-protection-container\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(secondaryFabric.name())\n .build());\n\n var policy = new ReplicationPolicy(\"policy\", ReplicationPolicyArgs.builder()\n .name(\"policy\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryPointRetentionInMinutes(24 * 60)\n .applicationConsistentSnapshotFrequencyInMinutes(4 * 60)\n .build());\n\n var container_mapping = new ProtectionContainerMapping(\"container-mapping\", ProtectionContainerMappingArgs.builder()\n .name(\"container-mapping\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .recoveryFabricName(primaryFabric.name())\n .recoverySourceProtectionContainerName(primaryProtectionContainer.name())\n .recoveryTargetProtectionContainerId(secondaryProtectionContainer.id())\n .recoveryReplicationPolicyId(policy.id())\n .build());\n\n var secondaryVirtualNetwork = new VirtualNetwork(\"secondaryVirtualNetwork\", VirtualNetworkArgs.builder()\n .name(\"network2\")\n .resourceGroupName(secondary.name())\n .addressSpaces(\"192.168.2.0/24\")\n .location(secondary.location())\n .build());\n\n var network_mapping = new NetworkMapping(\"network-mapping\", NetworkMappingArgs.builder()\n .name(\"network-mapping\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .sourceRecoveryFabricName(primaryFabric.name())\n .targetRecoveryFabricName(secondaryFabric.name())\n .sourceNetworkId(primaryVirtualNetwork.id())\n .targetNetworkId(secondaryVirtualNetwork.id())\n .build());\n\n var primaryAccount = new Account(\"primaryAccount\", AccountArgs.builder()\n .name(\"primaryrecoverycache\")\n .location(primary.location())\n .resourceGroupName(primary.name())\n .accountTier(\"Standard\")\n .accountReplicationType(\"LRS\")\n .build());\n\n var secondarySubnet = new Subnet(\"secondarySubnet\", SubnetArgs.builder()\n .name(\"network2-subnet\")\n .resourceGroupName(secondary.name())\n .virtualNetworkName(secondaryVirtualNetwork.name())\n .addressPrefixes(\"192.168.2.0/24\")\n .build());\n\n var secondaryPublicIp = new PublicIp(\"secondaryPublicIp\", PublicIpArgs.builder()\n .name(\"vm-public-ip-secondary\")\n .allocationMethod(\"Static\")\n .location(secondary.location())\n .resourceGroupName(secondary.name())\n .sku(\"Basic\")\n .build());\n\n var vm_replication = new ReplicatedVM(\"vm-replication\", ReplicatedVMArgs.builder()\n .name(\"vm-replication\")\n .resourceGroupName(secondary.name())\n .recoveryVaultName(vault.name())\n .sourceRecoveryFabricName(primaryFabric.name())\n .sourceVmId(vm.id())\n .recoveryReplicationPolicyId(policy.id())\n .sourceRecoveryProtectionContainerName(primaryProtectionContainer.name())\n .targetResourceGroupId(secondary.id())\n .targetRecoveryFabricId(secondaryFabric.id())\n .targetRecoveryProtectionContainerId(secondaryProtectionContainer.id())\n .managedDisks(ReplicatedVMManagedDiskArgs.builder()\n .diskId(vm.storageOsDisk().applyValue(storageOsDisk -\u003e storageOsDisk.managedDiskId()))\n .stagingStorageAccountId(primaryAccount.id())\n .targetResourceGroupId(secondary.id())\n .targetDiskType(\"Premium_LRS\")\n .targetReplicaDiskType(\"Premium_LRS\")\n .build())\n .networkInterfaces(ReplicatedVMNetworkInterfaceArgs.builder()\n .sourceNetworkInterfaceId(vmNetworkInterface.id())\n .targetSubnetName(secondarySubnet.name())\n .recoveryPublicIpAddressId(secondaryPublicIp.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n container_mapping,\n network_mapping)\n .build());\n\n var example = new ReplicationRecoveryPlan(\"example\", ReplicationRecoveryPlanArgs.builder()\n .name(\"example-recover-plan\")\n .recoveryVaultId(vault.id())\n .sourceRecoveryFabricId(primaryFabric.id())\n .targetRecoveryFabricId(secondaryFabric.id())\n .shutdownRecoveryGroup()\n .failoverRecoveryGroup()\n .bootRecoveryGroups(ReplicationRecoveryPlanBootRecoveryGroupArgs.builder()\n .replicatedProtectedItems(vm_replication.id())\n .build())\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSite Recovery Fabric can be imported using the `resource id`, e.g.\n\n```sh\n$ pulumi import azure:siterecovery/replicationRecoveryPlan:ReplicationRecoveryPlan azurerm_site_recovery_replication_recovery_plan.example /subscriptions/00000000-0000-0000-0000-00000000000/resourceGroups/groupName/providers/Microsoft.RecoveryServices/vaults/vaultName/replicationRecoveryPlans/planName\n```\n\n", "properties": { "azureToAzureSettings": { "$ref": "#/types/azure:siterecovery/ReplicationRecoveryPlanAzureToAzureSettings:ReplicationRecoveryPlanAzureToAzureSettings", @@ -276530,7 +276530,7 @@ } }, "azure:authorization/getRoleDefinition:getRoleDefinition": { - "description": "Use this data source to access information about an existing Role Definition.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst primary = azure.core.getSubscription({});\nconst customRoleDefinition = new azure.authorization.RoleDefinition(\"custom\", {\n roleDefinitionId: \"00000000-0000-0000-0000-000000000000\",\n name: \"CustomRoleDef\",\n scope: primary.then(primary =\u003e primary.id),\n});\nconst custom = pulumi.all([customRoleDefinition.roleDefinitionId, primary]).apply(([roleDefinitionId, primary]) =\u003e azure.authorization.getRoleDefinitionOutput({\n roleDefinitionId: roleDefinitionId,\n scope: primary.id,\n}));\nconst custom-byname = pulumi.all([customRoleDefinition.name, primary]).apply(([name, primary]) =\u003e azure.authorization.getRoleDefinitionOutput({\n name: name,\n scope: primary.id,\n}));\nconst builtin = azure.authorization.getRoleDefinition({\n name: \"Contributor\",\n});\nexport const customRoleDefinitionId = custom.apply(custom =\u003e custom.id);\nexport const contributorRoleDefinitionId = builtin.then(builtin =\u003e builtin.id);\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nprimary = azure.core.get_subscription()\ncustom_role_definition = azure.authorization.RoleDefinition(\"custom\",\n role_definition_id=\"00000000-0000-0000-0000-000000000000\",\n name=\"CustomRoleDef\",\n scope=primary.id)\ncustom = custom_role_definition.role_definition_id.apply(lambda role_definition_id: azure.authorization.get_role_definition_output(role_definition_id=role_definition_id,\n scope=primary.id))\ncustom_byname = custom_role_definition.name.apply(lambda name: azure.authorization.get_role_definition_output(name=name,\n scope=primary.id))\nbuiltin = azure.authorization.get_role_definition(name=\"Contributor\")\npulumi.export(\"customRoleDefinitionId\", custom.id)\npulumi.export(\"contributorRoleDefinitionId\", builtin.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = Azure.Core.GetSubscription.Invoke();\n\n var customRoleDefinition = new Azure.Authorization.RoleDefinition(\"custom\", new()\n {\n RoleDefinitionId = \"00000000-0000-0000-0000-000000000000\",\n Name = \"CustomRoleDef\",\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var custom = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n RoleDefinitionId = customRoleDefinition.RoleDefinitionId,\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var custom_byname = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n Name = customRoleDefinition.Name,\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var builtin = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n Name = \"Contributor\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"customRoleDefinitionId\"] = custom.Apply(getRoleDefinitionResult =\u003e getRoleDefinitionResult.Id),\n [\"contributorRoleDefinitionId\"] = builtin.Apply(getRoleDefinitionResult =\u003e getRoleDefinitionResult.Id),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := core.LookupSubscription(ctx, \u0026core.LookupSubscriptionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustomRoleDefinition, err := authorization.NewRoleDefinition(ctx, \"custom\", \u0026authorization.RoleDefinitionArgs{\n\t\t\tRoleDefinitionId: pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tName: pulumi.String(\"CustomRoleDef\"),\n\t\t\tScope: pulumi.String(primary.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustom := customRoleDefinition.RoleDefinitionId.ApplyT(func(roleDefinitionId string) (authorization.GetRoleDefinitionResult, error) {\n\t\t\treturn authorization.GetRoleDefinitionResult(interface{}(authorization.LookupRoleDefinitionOutput(ctx, authorization.GetRoleDefinitionOutputArgs{\n\t\t\t\tRoleDefinitionId: roleDefinitionId,\n\t\t\t\tScope: primary.Id,\n\t\t\t}, nil))), nil\n\t\t}).(authorization.GetRoleDefinitionResultOutput)\n\t\t_ = customRoleDefinition.Name.ApplyT(func(name string) (authorization.GetRoleDefinitionResult, error) {\n\t\t\treturn authorization.GetRoleDefinitionResult(interface{}(authorization.LookupRoleDefinitionOutput(ctx, authorization.GetRoleDefinitionOutputArgs{\n\t\t\t\tName: name,\n\t\t\t\tScope: primary.Id,\n\t\t\t}, nil))), nil\n\t\t}).(authorization.GetRoleDefinitionResultOutput)\n\t\tbuiltin, err := authorization.LookupRoleDefinition(ctx, \u0026authorization.LookupRoleDefinitionArgs{\n\t\t\tName: pulumi.StringRef(\"Contributor\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"customRoleDefinitionId\", custom.ApplyT(func(custom authorization.GetRoleDefinitionResult) (*string, error) {\n\t\t\treturn \u0026custom.Id, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"contributorRoleDefinitionId\", builtin.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.inputs.GetSubscriptionArgs;\nimport com.pulumi.azure.authorization.RoleDefinition;\nimport com.pulumi.azure.authorization.RoleDefinitionArgs;\nimport com.pulumi.azure.authorization.AuthorizationFunctions;\nimport com.pulumi.azure.authorization.inputs.GetRoleDefinitionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var primary = CoreFunctions.getSubscription();\n\n var customRoleDefinition = new RoleDefinition(\"customRoleDefinition\", RoleDefinitionArgs.builder()\n .roleDefinitionId(\"00000000-0000-0000-0000-000000000000\")\n .name(\"CustomRoleDef\")\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var custom = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .roleDefinitionId(customRoleDefinition.roleDefinitionId())\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var custom-byname = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .name(customRoleDefinition.name())\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var builtin = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .name(\"Contributor\")\n .build());\n\n ctx.export(\"customRoleDefinitionId\", custom.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult).applyValue(custom -\u003e custom.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult.id())));\n ctx.export(\"contributorRoleDefinitionId\", builtin.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult.id()));\n }\n}\n```\n```yaml\nresources:\n customRoleDefinition:\n type: azure:authorization:RoleDefinition\n name: custom\n properties:\n roleDefinitionId: 00000000-0000-0000-0000-000000000000\n name: CustomRoleDef\n scope: ${primary.id}\nvariables:\n primary:\n fn::invoke:\n function: azure:core:getSubscription\n arguments: {}\n custom:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n roleDefinitionId: ${customRoleDefinition.roleDefinitionId}\n scope: ${primary.id}\n custom-byname:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n name: ${customRoleDefinition.name}\n scope: ${primary.id}\n builtin:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n name: Contributor\noutputs:\n customRoleDefinitionId: ${custom.id}\n contributorRoleDefinitionId: ${builtin.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Use this data source to access information about an existing Role Definition.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst primary = azure.core.getSubscription({});\nconst customRoleDefinition = new azure.authorization.RoleDefinition(\"custom\", {\n roleDefinitionId: \"00000000-0000-0000-0000-000000000000\",\n name: \"CustomRoleDef\",\n scope: primary.then(primary =\u003e primary.id),\n});\nconst custom = pulumi.all([customRoleDefinition.roleDefinitionId, primary]).apply(([roleDefinitionId, primary]) =\u003e azure.authorization.getRoleDefinitionOutput({\n roleDefinitionId: roleDefinitionId,\n scope: primary.id,\n}));\nconst custom_byname = pulumi.all([customRoleDefinition.name, primary]).apply(([name, primary]) =\u003e azure.authorization.getRoleDefinitionOutput({\n name: name,\n scope: primary.id,\n}));\nconst builtin = azure.authorization.getRoleDefinition({\n name: \"Contributor\",\n});\nexport const customRoleDefinitionId = custom.apply(custom =\u003e custom.id);\nexport const contributorRoleDefinitionId = builtin.then(builtin =\u003e builtin.id);\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nprimary = azure.core.get_subscription()\ncustom_role_definition = azure.authorization.RoleDefinition(\"custom\",\n role_definition_id=\"00000000-0000-0000-0000-000000000000\",\n name=\"CustomRoleDef\",\n scope=primary.id)\ncustom = custom_role_definition.role_definition_id.apply(lambda role_definition_id: azure.authorization.get_role_definition_output(role_definition_id=role_definition_id,\n scope=primary.id))\ncustom_byname = custom_role_definition.name.apply(lambda name: azure.authorization.get_role_definition_output(name=name,\n scope=primary.id))\nbuiltin = azure.authorization.get_role_definition(name=\"Contributor\")\npulumi.export(\"customRoleDefinitionId\", custom.id)\npulumi.export(\"contributorRoleDefinitionId\", builtin.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = Azure.Core.GetSubscription.Invoke();\n\n var customRoleDefinition = new Azure.Authorization.RoleDefinition(\"custom\", new()\n {\n RoleDefinitionId = \"00000000-0000-0000-0000-000000000000\",\n Name = \"CustomRoleDef\",\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var custom = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n RoleDefinitionId = customRoleDefinition.RoleDefinitionId,\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var custom_byname = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n Name = customRoleDefinition.Name,\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var builtin = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n Name = \"Contributor\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"customRoleDefinitionId\"] = custom.Apply(getRoleDefinitionResult =\u003e getRoleDefinitionResult.Id),\n [\"contributorRoleDefinitionId\"] = builtin.Apply(getRoleDefinitionResult =\u003e getRoleDefinitionResult.Id),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := core.LookupSubscription(ctx, \u0026core.LookupSubscriptionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustomRoleDefinition, err := authorization.NewRoleDefinition(ctx, \"custom\", \u0026authorization.RoleDefinitionArgs{\n\t\t\tRoleDefinitionId: pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tName: pulumi.String(\"CustomRoleDef\"),\n\t\t\tScope: pulumi.String(primary.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustom := customRoleDefinition.RoleDefinitionId.ApplyT(func(roleDefinitionId string) (authorization.GetRoleDefinitionResult, error) {\n\t\t\treturn authorization.GetRoleDefinitionResult(interface{}(authorization.LookupRoleDefinitionOutput(ctx, authorization.GetRoleDefinitionOutputArgs{\n\t\t\t\tRoleDefinitionId: roleDefinitionId,\n\t\t\t\tScope: primary.Id,\n\t\t\t}, nil))), nil\n\t\t}).(authorization.GetRoleDefinitionResultOutput)\n\t\t_ = customRoleDefinition.Name.ApplyT(func(name string) (authorization.GetRoleDefinitionResult, error) {\n\t\t\treturn authorization.GetRoleDefinitionResult(interface{}(authorization.LookupRoleDefinitionOutput(ctx, authorization.GetRoleDefinitionOutputArgs{\n\t\t\t\tName: name,\n\t\t\t\tScope: primary.Id,\n\t\t\t}, nil))), nil\n\t\t}).(authorization.GetRoleDefinitionResultOutput)\n\t\tbuiltin, err := authorization.LookupRoleDefinition(ctx, \u0026authorization.LookupRoleDefinitionArgs{\n\t\t\tName: pulumi.StringRef(\"Contributor\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"customRoleDefinitionId\", custom.ApplyT(func(custom authorization.GetRoleDefinitionResult) (*string, error) {\n\t\t\treturn \u0026custom.Id, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"contributorRoleDefinitionId\", builtin.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.inputs.GetSubscriptionArgs;\nimport com.pulumi.azure.authorization.RoleDefinition;\nimport com.pulumi.azure.authorization.RoleDefinitionArgs;\nimport com.pulumi.azure.authorization.AuthorizationFunctions;\nimport com.pulumi.azure.authorization.inputs.GetRoleDefinitionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var primary = CoreFunctions.getSubscription();\n\n var customRoleDefinition = new RoleDefinition(\"customRoleDefinition\", RoleDefinitionArgs.builder()\n .roleDefinitionId(\"00000000-0000-0000-0000-000000000000\")\n .name(\"CustomRoleDef\")\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var custom = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .roleDefinitionId(customRoleDefinition.roleDefinitionId())\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var custom-byname = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .name(customRoleDefinition.name())\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var builtin = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .name(\"Contributor\")\n .build());\n\n ctx.export(\"customRoleDefinitionId\", custom.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult).applyValue(custom -\u003e custom.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult.id())));\n ctx.export(\"contributorRoleDefinitionId\", builtin.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult.id()));\n }\n}\n```\n```yaml\nresources:\n customRoleDefinition:\n type: azure:authorization:RoleDefinition\n name: custom\n properties:\n roleDefinitionId: 00000000-0000-0000-0000-000000000000\n name: CustomRoleDef\n scope: ${primary.id}\nvariables:\n primary:\n fn::invoke:\n function: azure:core:getSubscription\n arguments: {}\n custom:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n roleDefinitionId: ${customRoleDefinition.roleDefinitionId}\n scope: ${primary.id}\n custom-byname:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n name: ${customRoleDefinition.name}\n scope: ${primary.id}\n builtin:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n name: Contributor\noutputs:\n customRoleDefinitionId: ${custom.id}\n contributorRoleDefinitionId: ${builtin.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getRoleDefinition.\n", "properties": { @@ -301584,7 +301584,7 @@ }, "azure:role/getRoleDefinition:getRoleDefinition": { "deprecationMessage": "azure.role.getRoleDefinition has been deprecated in favor of azure.authorization.getRoleDefinition", - "description": "Use this data source to access information about an existing Role Definition.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst primary = azure.core.getSubscription({});\nconst customRoleDefinition = new azure.authorization.RoleDefinition(\"custom\", {\n roleDefinitionId: \"00000000-0000-0000-0000-000000000000\",\n name: \"CustomRoleDef\",\n scope: primary.then(primary =\u003e primary.id),\n});\nconst custom = pulumi.all([customRoleDefinition.roleDefinitionId, primary]).apply(([roleDefinitionId, primary]) =\u003e azure.authorization.getRoleDefinitionOutput({\n roleDefinitionId: roleDefinitionId,\n scope: primary.id,\n}));\nconst custom-byname = pulumi.all([customRoleDefinition.name, primary]).apply(([name, primary]) =\u003e azure.authorization.getRoleDefinitionOutput({\n name: name,\n scope: primary.id,\n}));\nconst builtin = azure.authorization.getRoleDefinition({\n name: \"Contributor\",\n});\nexport const customRoleDefinitionId = custom.apply(custom =\u003e custom.id);\nexport const contributorRoleDefinitionId = builtin.then(builtin =\u003e builtin.id);\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nprimary = azure.core.get_subscription()\ncustom_role_definition = azure.authorization.RoleDefinition(\"custom\",\n role_definition_id=\"00000000-0000-0000-0000-000000000000\",\n name=\"CustomRoleDef\",\n scope=primary.id)\ncustom = custom_role_definition.role_definition_id.apply(lambda role_definition_id: azure.authorization.get_role_definition_output(role_definition_id=role_definition_id,\n scope=primary.id))\ncustom_byname = custom_role_definition.name.apply(lambda name: azure.authorization.get_role_definition_output(name=name,\n scope=primary.id))\nbuiltin = azure.authorization.get_role_definition(name=\"Contributor\")\npulumi.export(\"customRoleDefinitionId\", custom.id)\npulumi.export(\"contributorRoleDefinitionId\", builtin.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = Azure.Core.GetSubscription.Invoke();\n\n var customRoleDefinition = new Azure.Authorization.RoleDefinition(\"custom\", new()\n {\n RoleDefinitionId = \"00000000-0000-0000-0000-000000000000\",\n Name = \"CustomRoleDef\",\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var custom = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n RoleDefinitionId = customRoleDefinition.RoleDefinitionId,\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var custom_byname = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n Name = customRoleDefinition.Name,\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var builtin = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n Name = \"Contributor\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"customRoleDefinitionId\"] = custom.Apply(getRoleDefinitionResult =\u003e getRoleDefinitionResult.Id),\n [\"contributorRoleDefinitionId\"] = builtin.Apply(getRoleDefinitionResult =\u003e getRoleDefinitionResult.Id),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := core.LookupSubscription(ctx, \u0026core.LookupSubscriptionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustomRoleDefinition, err := authorization.NewRoleDefinition(ctx, \"custom\", \u0026authorization.RoleDefinitionArgs{\n\t\t\tRoleDefinitionId: pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tName: pulumi.String(\"CustomRoleDef\"),\n\t\t\tScope: pulumi.String(primary.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustom := customRoleDefinition.RoleDefinitionId.ApplyT(func(roleDefinitionId string) (authorization.GetRoleDefinitionResult, error) {\n\t\t\treturn authorization.GetRoleDefinitionResult(interface{}(authorization.LookupRoleDefinitionOutput(ctx, authorization.GetRoleDefinitionOutputArgs{\n\t\t\t\tRoleDefinitionId: roleDefinitionId,\n\t\t\t\tScope: primary.Id,\n\t\t\t}, nil))), nil\n\t\t}).(authorization.GetRoleDefinitionResultOutput)\n\t\t_ = customRoleDefinition.Name.ApplyT(func(name string) (authorization.GetRoleDefinitionResult, error) {\n\t\t\treturn authorization.GetRoleDefinitionResult(interface{}(authorization.LookupRoleDefinitionOutput(ctx, authorization.GetRoleDefinitionOutputArgs{\n\t\t\t\tName: name,\n\t\t\t\tScope: primary.Id,\n\t\t\t}, nil))), nil\n\t\t}).(authorization.GetRoleDefinitionResultOutput)\n\t\tbuiltin, err := authorization.LookupRoleDefinition(ctx, \u0026authorization.LookupRoleDefinitionArgs{\n\t\t\tName: pulumi.StringRef(\"Contributor\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"customRoleDefinitionId\", custom.ApplyT(func(custom authorization.GetRoleDefinitionResult) (*string, error) {\n\t\t\treturn \u0026custom.Id, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"contributorRoleDefinitionId\", builtin.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.inputs.GetSubscriptionArgs;\nimport com.pulumi.azure.authorization.RoleDefinition;\nimport com.pulumi.azure.authorization.RoleDefinitionArgs;\nimport com.pulumi.azure.authorization.AuthorizationFunctions;\nimport com.pulumi.azure.authorization.inputs.GetRoleDefinitionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var primary = CoreFunctions.getSubscription();\n\n var customRoleDefinition = new RoleDefinition(\"customRoleDefinition\", RoleDefinitionArgs.builder()\n .roleDefinitionId(\"00000000-0000-0000-0000-000000000000\")\n .name(\"CustomRoleDef\")\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var custom = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .roleDefinitionId(customRoleDefinition.roleDefinitionId())\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var custom-byname = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .name(customRoleDefinition.name())\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var builtin = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .name(\"Contributor\")\n .build());\n\n ctx.export(\"customRoleDefinitionId\", custom.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult).applyValue(custom -\u003e custom.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult.id())));\n ctx.export(\"contributorRoleDefinitionId\", builtin.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult.id()));\n }\n}\n```\n```yaml\nresources:\n customRoleDefinition:\n type: azure:authorization:RoleDefinition\n name: custom\n properties:\n roleDefinitionId: 00000000-0000-0000-0000-000000000000\n name: CustomRoleDef\n scope: ${primary.id}\nvariables:\n primary:\n fn::invoke:\n function: azure:core:getSubscription\n arguments: {}\n custom:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n roleDefinitionId: ${customRoleDefinition.roleDefinitionId}\n scope: ${primary.id}\n custom-byname:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n name: ${customRoleDefinition.name}\n scope: ${primary.id}\n builtin:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n name: Contributor\noutputs:\n customRoleDefinitionId: ${custom.id}\n contributorRoleDefinitionId: ${builtin.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Use this data source to access information about an existing Role Definition.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azure from \"@pulumi/azure\";\n\nconst primary = azure.core.getSubscription({});\nconst customRoleDefinition = new azure.authorization.RoleDefinition(\"custom\", {\n roleDefinitionId: \"00000000-0000-0000-0000-000000000000\",\n name: \"CustomRoleDef\",\n scope: primary.then(primary =\u003e primary.id),\n});\nconst custom = pulumi.all([customRoleDefinition.roleDefinitionId, primary]).apply(([roleDefinitionId, primary]) =\u003e azure.authorization.getRoleDefinitionOutput({\n roleDefinitionId: roleDefinitionId,\n scope: primary.id,\n}));\nconst custom_byname = pulumi.all([customRoleDefinition.name, primary]).apply(([name, primary]) =\u003e azure.authorization.getRoleDefinitionOutput({\n name: name,\n scope: primary.id,\n}));\nconst builtin = azure.authorization.getRoleDefinition({\n name: \"Contributor\",\n});\nexport const customRoleDefinitionId = custom.apply(custom =\u003e custom.id);\nexport const contributorRoleDefinitionId = builtin.then(builtin =\u003e builtin.id);\n```\n```python\nimport pulumi\nimport pulumi_azure as azure\n\nprimary = azure.core.get_subscription()\ncustom_role_definition = azure.authorization.RoleDefinition(\"custom\",\n role_definition_id=\"00000000-0000-0000-0000-000000000000\",\n name=\"CustomRoleDef\",\n scope=primary.id)\ncustom = custom_role_definition.role_definition_id.apply(lambda role_definition_id: azure.authorization.get_role_definition_output(role_definition_id=role_definition_id,\n scope=primary.id))\ncustom_byname = custom_role_definition.name.apply(lambda name: azure.authorization.get_role_definition_output(name=name,\n scope=primary.id))\nbuiltin = azure.authorization.get_role_definition(name=\"Contributor\")\npulumi.export(\"customRoleDefinitionId\", custom.id)\npulumi.export(\"contributorRoleDefinitionId\", builtin.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Azure = Pulumi.Azure;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = Azure.Core.GetSubscription.Invoke();\n\n var customRoleDefinition = new Azure.Authorization.RoleDefinition(\"custom\", new()\n {\n RoleDefinitionId = \"00000000-0000-0000-0000-000000000000\",\n Name = \"CustomRoleDef\",\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var custom = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n RoleDefinitionId = customRoleDefinition.RoleDefinitionId,\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var custom_byname = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n Name = customRoleDefinition.Name,\n Scope = primary.Apply(getSubscriptionResult =\u003e getSubscriptionResult.Id),\n });\n\n var builtin = Azure.Authorization.GetRoleDefinition.Invoke(new()\n {\n Name = \"Contributor\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"customRoleDefinitionId\"] = custom.Apply(getRoleDefinitionResult =\u003e getRoleDefinitionResult.Id),\n [\"contributorRoleDefinitionId\"] = builtin.Apply(getRoleDefinitionResult =\u003e getRoleDefinitionResult.Id),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/authorization\"\n\t\"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := core.LookupSubscription(ctx, \u0026core.LookupSubscriptionArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustomRoleDefinition, err := authorization.NewRoleDefinition(ctx, \"custom\", \u0026authorization.RoleDefinitionArgs{\n\t\t\tRoleDefinitionId: pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tName: pulumi.String(\"CustomRoleDef\"),\n\t\t\tScope: pulumi.String(primary.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustom := customRoleDefinition.RoleDefinitionId.ApplyT(func(roleDefinitionId string) (authorization.GetRoleDefinitionResult, error) {\n\t\t\treturn authorization.GetRoleDefinitionResult(interface{}(authorization.LookupRoleDefinitionOutput(ctx, authorization.GetRoleDefinitionOutputArgs{\n\t\t\t\tRoleDefinitionId: roleDefinitionId,\n\t\t\t\tScope: primary.Id,\n\t\t\t}, nil))), nil\n\t\t}).(authorization.GetRoleDefinitionResultOutput)\n\t\t_ = customRoleDefinition.Name.ApplyT(func(name string) (authorization.GetRoleDefinitionResult, error) {\n\t\t\treturn authorization.GetRoleDefinitionResult(interface{}(authorization.LookupRoleDefinitionOutput(ctx, authorization.GetRoleDefinitionOutputArgs{\n\t\t\t\tName: name,\n\t\t\t\tScope: primary.Id,\n\t\t\t}, nil))), nil\n\t\t}).(authorization.GetRoleDefinitionResultOutput)\n\t\tbuiltin, err := authorization.LookupRoleDefinition(ctx, \u0026authorization.LookupRoleDefinitionArgs{\n\t\t\tName: pulumi.StringRef(\"Contributor\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"customRoleDefinitionId\", custom.ApplyT(func(custom authorization.GetRoleDefinitionResult) (*string, error) {\n\t\t\treturn \u0026custom.Id, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"contributorRoleDefinitionId\", builtin.Id)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azure.core.CoreFunctions;\nimport com.pulumi.azure.core.inputs.GetSubscriptionArgs;\nimport com.pulumi.azure.authorization.RoleDefinition;\nimport com.pulumi.azure.authorization.RoleDefinitionArgs;\nimport com.pulumi.azure.authorization.AuthorizationFunctions;\nimport com.pulumi.azure.authorization.inputs.GetRoleDefinitionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var primary = CoreFunctions.getSubscription();\n\n var customRoleDefinition = new RoleDefinition(\"customRoleDefinition\", RoleDefinitionArgs.builder()\n .roleDefinitionId(\"00000000-0000-0000-0000-000000000000\")\n .name(\"CustomRoleDef\")\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var custom = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .roleDefinitionId(customRoleDefinition.roleDefinitionId())\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var custom-byname = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .name(customRoleDefinition.name())\n .scope(primary.applyValue(getSubscriptionResult -\u003e getSubscriptionResult.id()))\n .build());\n\n final var builtin = AuthorizationFunctions.getRoleDefinition(GetRoleDefinitionArgs.builder()\n .name(\"Contributor\")\n .build());\n\n ctx.export(\"customRoleDefinitionId\", custom.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult).applyValue(custom -\u003e custom.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult.id())));\n ctx.export(\"contributorRoleDefinitionId\", builtin.applyValue(getRoleDefinitionResult -\u003e getRoleDefinitionResult.id()));\n }\n}\n```\n```yaml\nresources:\n customRoleDefinition:\n type: azure:authorization:RoleDefinition\n name: custom\n properties:\n roleDefinitionId: 00000000-0000-0000-0000-000000000000\n name: CustomRoleDef\n scope: ${primary.id}\nvariables:\n primary:\n fn::invoke:\n function: azure:core:getSubscription\n arguments: {}\n custom:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n roleDefinitionId: ${customRoleDefinition.roleDefinitionId}\n scope: ${primary.id}\n custom-byname:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n name: ${customRoleDefinition.name}\n scope: ${primary.id}\n builtin:\n fn::invoke:\n function: azure:authorization:getRoleDefinition\n arguments:\n name: Contributor\noutputs:\n customRoleDefinitionId: ${custom.id}\n contributorRoleDefinitionId: ${builtin.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getRoleDefinition.\n", "properties": { diff --git a/provider/go.mod b/provider/go.mod index fdb6571c52..238726c7f8 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -273,3 +273,7 @@ require ( lukechampine.com/frand v1.4.2 // indirect software.sslmate.com/src/go-pkcs12 v0.4.0 // indirect ) + +replace github.com/pulumi/pulumi/pkg/v3 => github.com/pulumi/pulumi/pkg/v3 v3.147.1-0.20250204110054-ef37ccd6ccc6 + +replace github.com/pulumi/pulumi/sdk/v3 => github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250204110054-ef37ccd6ccc6 diff --git a/provider/go.sum b/provider/go.sum index a6c7b085b9..b4997f1964 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -2215,10 +2215,10 @@ github.com/pulumi/pulumi-terraform-bridge/v3 v3.102.0 h1:shzw3WluUr/TcK92njRDFxp github.com/pulumi/pulumi-terraform-bridge/v3 v3.102.0/go.mod h1:LwhiXOl9rpoRImUuDTfQQH2vTjL1JACnIFm/kWp1znU= github.com/pulumi/pulumi-yaml v1.12.0 h1:ThJP+EBqeJyCnS6w6/PwcEFOT5o112qv0lObhefmFCk= github.com/pulumi/pulumi-yaml v1.12.0/go.mod h1:EhZd1XDfuLa15O51qVVE16U6r8ldK9mLIBclqWCX27Y= -github.com/pulumi/pulumi/pkg/v3 v3.147.0 h1:aFzP2kXBL/nPPDao625xIkjAhqT5GKe3XfPXbG07oFA= -github.com/pulumi/pulumi/pkg/v3 v3.147.0/go.mod h1:WqLJy8lfzbGTEqz5Rukd+GrqBYNBf8Y3dJ+Wde+G6g4= -github.com/pulumi/pulumi/sdk/v3 v3.147.0 h1:8ZDZnEsCZa6shw1dwIDUssbYMooYyebhpmx5feuZCqM= -github.com/pulumi/pulumi/sdk/v3 v3.147.0/go.mod h1:+WC9aIDo8fMgd2g0jCHuZU2S/VYNLRAZ3QXt6YVgwaA= +github.com/pulumi/pulumi/pkg/v3 v3.147.1-0.20250204110054-ef37ccd6ccc6 h1:Owln0Gvs3xRM4wiN8e7g2LMiyw8bB78MIicni1DqS6M= +github.com/pulumi/pulumi/pkg/v3 v3.147.1-0.20250204110054-ef37ccd6ccc6/go.mod h1:WqLJy8lfzbGTEqz5Rukd+GrqBYNBf8Y3dJ+Wde+G6g4= +github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250204110054-ef37ccd6ccc6 h1:UDC+mokojDo66CQQltNMcbnYsHb8g3TBuxQJIpyeesA= +github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250204110054-ef37ccd6ccc6/go.mod h1:+WC9aIDo8fMgd2g0jCHuZU2S/VYNLRAZ3QXt6YVgwaA= github.com/pulumi/schema-tools v0.1.2 h1:Fd9xvUjgck4NA+7/jSk7InqCUT4Kj940+EcnbQKpfZo= github.com/pulumi/schema-tools v0.1.2/go.mod h1:62lgj52Tzq11eqWTIaKd+EVyYAu5dEcDJxMhTjvMO/k= github.com/pulumi/terraform-diff-reader v0.0.2 h1:kTE4nEXU3/SYXESvAIem+wyHMI3abqkI3OhJ0G04LLI= diff --git a/sdk/go.mod b/sdk/go.mod index 7a855dafba..339a137cd9 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -93,3 +93,7 @@ require ( lukechampine.com/frand v1.4.2 // indirect pgregory.net/rapid v0.6.1 // indirect ) + +replace github.com/pulumi/pulumi/pkg/v3 => github.com/pulumi/pulumi/pkg/v3 v3.147.1-0.20250204110054-ef37ccd6ccc6 + +replace github.com/pulumi/pulumi/sdk/v3 => github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250204110054-ef37ccd6ccc6 diff --git a/sdk/go.sum b/sdk/go.sum index bda857191d..c63c0d6539 100644 --- a/sdk/go.sum +++ b/sdk/go.sum @@ -148,8 +148,8 @@ github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435 github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= github.com/pulumi/esc v0.9.1 h1:HH5eEv8sgyxSpY5a8yePyqFXzA8cvBvapfH8457+mIs= github.com/pulumi/esc v0.9.1/go.mod h1:oEJ6bOsjYlQUpjf70GiX+CXn3VBmpwFDxUTlmtUN84c= -github.com/pulumi/pulumi/sdk/v3 v3.147.0 h1:8ZDZnEsCZa6shw1dwIDUssbYMooYyebhpmx5feuZCqM= -github.com/pulumi/pulumi/sdk/v3 v3.147.0/go.mod h1:+WC9aIDo8fMgd2g0jCHuZU2S/VYNLRAZ3QXt6YVgwaA= +github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250204110054-ef37ccd6ccc6 h1:UDC+mokojDo66CQQltNMcbnYsHb8g3TBuxQJIpyeesA= +github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250204110054-ef37ccd6ccc6/go.mod h1:+WC9aIDo8fMgd2g0jCHuZU2S/VYNLRAZ3QXt6YVgwaA= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= From 3279f9db9bf5f715e4f2f41ce70261a76cdfa511 Mon Sep 17 00:00:00 2001 From: pulumi-bot Date: Tue, 4 Feb 2025 11:23:37 +0000 Subject: [PATCH 2/2] make build_sdks --- .../appservice/slotVirtualNetworkSwiftConnection.go | 2 +- sdk/go/azure/backup/protectedFileShare.go | 2 +- sdk/go/azure/compute/diskEncryptionSet.go | 4 ++-- sdk/go/azure/machinelearning/workspace.go | 12 ++++++------ sdk/go/azure/network/virtualNetworkPeering.go | 8 ++++---- sdk/go/azure/siterecovery/replicatedVM.go | 4 ++-- sdk/go/azure/siterecovery/replicationRecoveryPlan.go | 6 +++--- sdk/nodejs/authorization/getRoleDefinition.ts | 4 ++-- sdk/nodejs/lb/backendAddressPoolAddress.ts | 2 +- sdk/nodejs/role/getRoleDefinition.ts | 4 ++-- sdk/python/pulumi_azure/_utilities.py | 12 ++++++++---- 11 files changed, 32 insertions(+), 28 deletions(-) diff --git a/sdk/go/azure/appservice/slotVirtualNetworkSwiftConnection.go b/sdk/go/azure/appservice/slotVirtualNetworkSwiftConnection.go index a9a5e47f3e..69dc388036 100644 --- a/sdk/go/azure/appservice/slotVirtualNetworkSwiftConnection.go +++ b/sdk/go/azure/appservice/slotVirtualNetworkSwiftConnection.go @@ -91,7 +91,7 @@ import ( // if err != nil { // return err // } -// _, err = appservice.NewSlot(ctx, "example-staging", &appservice.SlotArgs{ +// example_staging, err := appservice.NewSlot(ctx, "example-staging", &appservice.SlotArgs{ // Name: pulumi.String("staging"), // AppServiceName: exampleAppService.Name, // Location: example.Location, diff --git a/sdk/go/azure/backup/protectedFileShare.go b/sdk/go/azure/backup/protectedFileShare.go index 3aa944fa3d..0d572d2df4 100644 --- a/sdk/go/azure/backup/protectedFileShare.go +++ b/sdk/go/azure/backup/protectedFileShare.go @@ -65,7 +65,7 @@ import ( // if err != nil { // return err // } -// _, err = backup.NewContainerStorageAccount(ctx, "protection-container", &backup.ContainerStorageAccountArgs{ +// protection_container, err := backup.NewContainerStorageAccount(ctx, "protection-container", &backup.ContainerStorageAccountArgs{ // ResourceGroupName: example.Name, // RecoveryVaultName: vault.Name, // StorageAccountId: sa.ID(), diff --git a/sdk/go/azure/compute/diskEncryptionSet.go b/sdk/go/azure/compute/diskEncryptionSet.go index ff2ad47fca..a1318751cc 100644 --- a/sdk/go/azure/compute/diskEncryptionSet.go +++ b/sdk/go/azure/compute/diskEncryptionSet.go @@ -56,7 +56,7 @@ import ( // if err != nil { // return err // } -// _, err = keyvault.NewAccessPolicy(ctx, "example-user", &keyvault.AccessPolicyArgs{ +// example_user, err := keyvault.NewAccessPolicy(ctx, "example-user", &keyvault.AccessPolicyArgs{ // KeyVaultId: exampleKeyVault.ID(), // TenantId: pulumi.String(current.TenantId), // ObjectId: pulumi.String(current.ObjectId), @@ -186,7 +186,7 @@ import ( // if err != nil { // return err // } -// _, err = keyvault.NewAccessPolicy(ctx, "example-user", &keyvault.AccessPolicyArgs{ +// example_user, err := keyvault.NewAccessPolicy(ctx, "example-user", &keyvault.AccessPolicyArgs{ // KeyVaultId: exampleKeyVault.ID(), // TenantId: pulumi.String(current.TenantId), // ObjectId: pulumi.String(current.ObjectId), diff --git a/sdk/go/azure/machinelearning/workspace.go b/sdk/go/azure/machinelearning/workspace.go index 854c07fc89..35483beb64 100644 --- a/sdk/go/azure/machinelearning/workspace.go +++ b/sdk/go/azure/machinelearning/workspace.go @@ -304,7 +304,7 @@ import ( // if err != nil { // return err // } -// _, err = keyvault.NewAccessPolicy(ctx, "example-sp", &keyvault.AccessPolicyArgs{ +// example_sp, err := keyvault.NewAccessPolicy(ctx, "example-sp", &keyvault.AccessPolicyArgs{ // KeyVaultId: exampleKeyVault.ID(), // TenantId: pulumi.String(current.TenantId), // ObjectId: pulumi.String(current.ObjectId), @@ -326,7 +326,7 @@ import ( // if err != nil { // return err // } -// _, err = keyvault.NewAccessPolicy(ctx, "example-cosmosdb", &keyvault.AccessPolicyArgs{ +// example_cosmosdb, err := keyvault.NewAccessPolicy(ctx, "example-cosmosdb", &keyvault.AccessPolicyArgs{ // KeyVaultId: exampleKeyVault.ID(), // TenantId: pulumi.String(current.TenantId), // ObjectId: pulumi.String(test.ObjectId), @@ -363,7 +363,7 @@ import ( // if err != nil { // return err // } -// _, err = authorization.NewAssignment(ctx, "example-role1", &authorization.AssignmentArgs{ +// example_role1, err := authorization.NewAssignment(ctx, "example-role1", &authorization.AssignmentArgs{ // Scope: exampleKeyVault.ID(), // RoleDefinitionName: pulumi.String("Contributor"), // PrincipalId: exampleUserAssignedIdentity.PrincipalId, @@ -371,7 +371,7 @@ import ( // if err != nil { // return err // } -// _, err = authorization.NewAssignment(ctx, "example-role2", &authorization.AssignmentArgs{ +// example_role2, err := authorization.NewAssignment(ctx, "example-role2", &authorization.AssignmentArgs{ // Scope: exampleAccount.ID(), // RoleDefinitionName: pulumi.String("Storage Blob Data Contributor"), // PrincipalId: exampleUserAssignedIdentity.PrincipalId, @@ -379,7 +379,7 @@ import ( // if err != nil { // return err // } -// _, err = authorization.NewAssignment(ctx, "example-role3", &authorization.AssignmentArgs{ +// example_role3, err := authorization.NewAssignment(ctx, "example-role3", &authorization.AssignmentArgs{ // Scope: exampleAccount.ID(), // RoleDefinitionName: pulumi.String("Contributor"), // PrincipalId: exampleUserAssignedIdentity.PrincipalId, @@ -387,7 +387,7 @@ import ( // if err != nil { // return err // } -// _, err = authorization.NewAssignment(ctx, "example-role4", &authorization.AssignmentArgs{ +// example_role4, err := authorization.NewAssignment(ctx, "example-role4", &authorization.AssignmentArgs{ // Scope: exampleInsights.ID(), // RoleDefinitionName: pulumi.String("Contributor"), // PrincipalId: exampleUserAssignedIdentity.PrincipalId, diff --git a/sdk/go/azure/network/virtualNetworkPeering.go b/sdk/go/azure/network/virtualNetworkPeering.go index 799b62784a..a96d782832 100644 --- a/sdk/go/azure/network/virtualNetworkPeering.go +++ b/sdk/go/azure/network/virtualNetworkPeering.go @@ -37,7 +37,7 @@ import ( // if err != nil { // return err // } -// _, err = network.NewVirtualNetwork(ctx, "example-1", &network.VirtualNetworkArgs{ +// example_1, err := network.NewVirtualNetwork(ctx, "example-1", &network.VirtualNetworkArgs{ // Name: pulumi.String("peternetwork1"), // ResourceGroupName: example.Name, // AddressSpaces: pulumi.StringArray{ @@ -48,7 +48,7 @@ import ( // if err != nil { // return err // } -// _, err = network.NewVirtualNetwork(ctx, "example-2", &network.VirtualNetworkArgs{ +// example_2, err := network.NewVirtualNetwork(ctx, "example-2", &network.VirtualNetworkArgs{ // Name: pulumi.String("peternetwork2"), // ResourceGroupName: example.Name, // AddressSpaces: pulumi.StringArray{ @@ -106,7 +106,7 @@ import ( // if err != nil { // return err // } -// _, err = network.NewVirtualNetwork(ctx, "example-1", &network.VirtualNetworkArgs{ +// example_1, err := network.NewVirtualNetwork(ctx, "example-1", &network.VirtualNetworkArgs{ // Name: pulumi.String("peternetwork1"), // ResourceGroupName: example.Name, // AddressSpaces: pulumi.StringArray{ @@ -117,7 +117,7 @@ import ( // if err != nil { // return err // } -// _, err = network.NewVirtualNetwork(ctx, "example-2", &network.VirtualNetworkArgs{ +// example_2, err := network.NewVirtualNetwork(ctx, "example-2", &network.VirtualNetworkArgs{ // Name: pulumi.String("peternetwork2"), // ResourceGroupName: example.Name, // AddressSpaces: pulumi.StringArray{ diff --git a/sdk/go/azure/siterecovery/replicatedVM.go b/sdk/go/azure/siterecovery/replicatedVM.go index 370297474b..ef780f511b 100644 --- a/sdk/go/azure/siterecovery/replicatedVM.go +++ b/sdk/go/azure/siterecovery/replicatedVM.go @@ -183,7 +183,7 @@ import ( // if err != nil { // return err // } -// _, err = siterecovery.NewProtectionContainerMapping(ctx, "container-mapping", &siterecovery.ProtectionContainerMappingArgs{ +// container_mapping, err := siterecovery.NewProtectionContainerMapping(ctx, "container-mapping", &siterecovery.ProtectionContainerMappingArgs{ // Name: pulumi.String("container-mapping"), // ResourceGroupName: secondary.Name, // RecoveryVaultName: vault.Name, @@ -206,7 +206,7 @@ import ( // if err != nil { // return err // } -// _, err = siterecovery.NewNetworkMapping(ctx, "network-mapping", &siterecovery.NetworkMappingArgs{ +// network_mapping, err := siterecovery.NewNetworkMapping(ctx, "network-mapping", &siterecovery.NetworkMappingArgs{ // Name: pulumi.String("network-mapping"), // ResourceGroupName: secondary.Name, // RecoveryVaultName: vault.Name, diff --git a/sdk/go/azure/siterecovery/replicationRecoveryPlan.go b/sdk/go/azure/siterecovery/replicationRecoveryPlan.go index e3e5efcced..a54a7116ff 100644 --- a/sdk/go/azure/siterecovery/replicationRecoveryPlan.go +++ b/sdk/go/azure/siterecovery/replicationRecoveryPlan.go @@ -183,7 +183,7 @@ import ( // if err != nil { // return err // } -// _, err = siterecovery.NewProtectionContainerMapping(ctx, "container-mapping", &siterecovery.ProtectionContainerMappingArgs{ +// container_mapping, err := siterecovery.NewProtectionContainerMapping(ctx, "container-mapping", &siterecovery.ProtectionContainerMappingArgs{ // Name: pulumi.String("container-mapping"), // ResourceGroupName: secondary.Name, // RecoveryVaultName: vault.Name, @@ -206,7 +206,7 @@ import ( // if err != nil { // return err // } -// _, err = siterecovery.NewNetworkMapping(ctx, "network-mapping", &siterecovery.NetworkMappingArgs{ +// network_mapping, err := siterecovery.NewNetworkMapping(ctx, "network-mapping", &siterecovery.NetworkMappingArgs{ // Name: pulumi.String("network-mapping"), // ResourceGroupName: secondary.Name, // RecoveryVaultName: vault.Name, @@ -249,7 +249,7 @@ import ( // if err != nil { // return err // } -// _, err = siterecovery.NewReplicatedVM(ctx, "vm-replication", &siterecovery.ReplicatedVMArgs{ +// vm_replication, err := siterecovery.NewReplicatedVM(ctx, "vm-replication", &siterecovery.ReplicatedVMArgs{ // Name: pulumi.String("vm-replication"), // ResourceGroupName: secondary.Name, // RecoveryVaultName: vault.Name, diff --git a/sdk/nodejs/authorization/getRoleDefinition.ts b/sdk/nodejs/authorization/getRoleDefinition.ts index 78d897bff6..e702cb019b 100644 --- a/sdk/nodejs/authorization/getRoleDefinition.ts +++ b/sdk/nodejs/authorization/getRoleDefinition.ts @@ -25,7 +25,7 @@ import * as utilities from "../utilities"; * roleDefinitionId: roleDefinitionId, * scope: primary.id, * })); - * const custom-byname = pulumi.all([customRoleDefinition.name, primary]).apply(([name, primary]) => azure.authorization.getRoleDefinitionOutput({ + * const custom_byname = pulumi.all([customRoleDefinition.name, primary]).apply(([name, primary]) => azure.authorization.getRoleDefinitionOutput({ * name: name, * scope: primary.id, * })); @@ -115,7 +115,7 @@ export interface GetRoleDefinitionResult { * roleDefinitionId: roleDefinitionId, * scope: primary.id, * })); - * const custom-byname = pulumi.all([customRoleDefinition.name, primary]).apply(([name, primary]) => azure.authorization.getRoleDefinitionOutput({ + * const custom_byname = pulumi.all([customRoleDefinition.name, primary]).apply(([name, primary]) => azure.authorization.getRoleDefinitionOutput({ * name: name, * scope: primary.id, * })); diff --git a/sdk/nodejs/lb/backendAddressPoolAddress.ts b/sdk/nodejs/lb/backendAddressPoolAddress.ts index dcd0875d26..dff1c56283 100644 --- a/sdk/nodejs/lb/backendAddressPoolAddress.ts +++ b/sdk/nodejs/lb/backendAddressPoolAddress.ts @@ -35,7 +35,7 @@ import * as utilities from "../utilities"; * virtualNetworkId: example.then(example => example.id), * ipAddress: "10.0.0.1", * }); - * const backend-pool-cr = exampleGetLB.then(exampleGetLB => azure.lb.getBackendAddressPool({ + * const backend_pool_cr = exampleGetLB.then(exampleGetLB => azure.lb.getBackendAddressPool({ * name: "globalLBBackendPool", * loadbalancerId: exampleGetLB.id, * })); diff --git a/sdk/nodejs/role/getRoleDefinition.ts b/sdk/nodejs/role/getRoleDefinition.ts index 72c5d374cf..74422be241 100644 --- a/sdk/nodejs/role/getRoleDefinition.ts +++ b/sdk/nodejs/role/getRoleDefinition.ts @@ -25,7 +25,7 @@ import * as utilities from "../utilities"; * roleDefinitionId: roleDefinitionId, * scope: primary.id, * })); - * const custom-byname = pulumi.all([customRoleDefinition.name, primary]).apply(([name, primary]) => azure.authorization.getRoleDefinitionOutput({ + * const custom_byname = pulumi.all([customRoleDefinition.name, primary]).apply(([name, primary]) => azure.authorization.getRoleDefinitionOutput({ * name: name, * scope: primary.id, * })); @@ -117,7 +117,7 @@ export interface GetRoleDefinitionResult { * roleDefinitionId: roleDefinitionId, * scope: primary.id, * })); - * const custom-byname = pulumi.all([customRoleDefinition.name, primary]).apply(([name, primary]) => azure.authorization.getRoleDefinitionOutput({ + * const custom_byname = pulumi.all([customRoleDefinition.name, primary]).apply(([name, primary]) => azure.authorization.getRoleDefinitionOutput({ * name: name, * scope: primary.id, * })); diff --git a/sdk/python/pulumi_azure/_utilities.py b/sdk/python/pulumi_azure/_utilities.py index 3ce408d5ff..56d3cfb87c 100644 --- a/sdk/python/pulumi_azure/_utilities.py +++ b/sdk/python/pulumi_azure/_utilities.py @@ -89,12 +89,16 @@ def _get_semver_version(): elif pep440_version.pre_tag == 'rc': prerelease = f"rc.{pep440_version.pre}" elif pep440_version.dev is not None: + # PEP440 has explicit support for dev builds, while semver encodes them as "prerelease" versions. To bridge + # between the two, we convert our dev build version into a prerelease tag. This matches what all of our other + # packages do when constructing their own semver string. prerelease = f"dev.{pep440_version.dev}" + elif pep440_version.local is not None: + # PEP440 only allows a small set of prerelease tags, so when converting an arbitrary prerelease, + # PypiVersion in /pkg/codegen/python/utilities.go converts it to a local version. Therefore, we need to + # do the reverse conversion here and set the local version as the prerelease tag. + prerelease = pep440_version.local - # The only significant difference between PEP440 and semver as it pertains to us is that PEP440 has explicit support - # for dev builds, while semver encodes them as "prerelease" versions. In order to bridge between the two, we convert - # our dev build version into a prerelease tag. This matches what all of our other packages do when constructing - # their own semver string. return SemverVersion(major=major, minor=minor, patch=patch, prerelease=prerelease)