VmwareReplicatedVmArgs

data class VmwareReplicatedVmArgs(val applianceName: Output<String>? = null, val defaultLogStorageAccountId: Output<String>? = null, val defaultRecoveryDiskType: Output<String>? = null, val defaultTargetDiskEncryptionSetId: Output<String>? = null, val licenseType: Output<String>? = null, val managedDisks: Output<List<VmwareReplicatedVmManagedDiskArgs>>? = null, val multiVmGroupName: Output<String>? = null, val name: Output<String>? = null, val networkInterfaces: Output<List<VmwareReplicatedVmNetworkInterfaceArgs>>? = null, val physicalServerCredentialName: Output<String>? = null, val recoveryReplicationPolicyId: Output<String>? = null, val recoveryVaultId: Output<String>? = null, val sourceVmName: Output<String>? = null, val targetAvailabilitySetId: Output<String>? = null, val targetBootDiagnosticsStorageAccountId: Output<String>? = null, val targetNetworkId: Output<String>? = null, val targetProximityPlacementGroupId: Output<String>? = null, val targetResourceGroupId: Output<String>? = null, val targetVmName: Output<String>? = null, val targetVmSize: Output<String>? = null, val targetZone: Output<String>? = null, val testNetworkId: Output<String>? = null) : ConvertibleToJava<VmwareReplicatedVmArgs>

Manages a VMWare replicated VM using Azure Site Recovery (VMWare to Azure only). A replicated VM keeps a copiously updated image of the VM in Azure in order to be able to start the VM in Azure in case of a disaster.

Example Usage

import * as pulumi from "@pulumi/pulumi";
import * as azure from "@pulumi/azure";
const example = new azure.core.ResourceGroup("example", {
name: "example-rg",
location: "West US",
});
const exampleVault = new azure.recoveryservices.Vault("example", {
name: "example-recovery-vault",
location: example.location,
resourceGroupName: example.name,
sku: "Standard",
});
const exampleVMWareReplicationPolicy = new azure.siterecovery.VMWareReplicationPolicy("example", {
recoveryVaultId: exampleVault.id,
name: "example-policy",
recoveryPointRetentionInMinutes: 1440,
applicationConsistentSnapshotFrequencyInMinutes: 240,
});
const test = new azure.siterecovery.VmwareReplicationPolicyAssociation("test", {
name: "example-association",
recoveryVaultId: exampleVault.id,
policyId: exampleVMWareReplicationPolicy.id,
});
const exampleAccount = new azure.storage.Account("example", {
name: "examplestorageacc",
resourceGroupName: example.name,
location: example.location,
accountTier: "Standard",
accountKind: "StorageV2",
accountReplicationType: "LRS",
});
const exampleVirtualNetwork = new azure.network.VirtualNetwork("example", {
name: "example-net",
resourceGroupName: example.name,
addressSpaces: ["192&#46;168&#46;2&#46;0/24"],
location: example.location,
});
const exampleSubnet = new azure.network.Subnet("example", {
name: "example-subnet",
resourceGroupName: example.name,
virtualNetworkName: exampleVirtualNetwork.name,
addressPrefixes: ["192&#46;168&#46;2&#46;0/24"],
});
const exampleVmwareReplicatedVm = new azure.siterecovery.VmwareReplicatedVm("example", {
name: "example-vmware-vm",
recoveryVaultId: exampleVault.id,
sourceVmName: "example-vm",
applianceName: "example-appliance",
recoveryReplicationPolicyId: exampleAzurermSiteRecoveryVmwareReplicationPolicyAssociation.policyId,
physicalServerCredentialName: "example-creds",
licenseType: "NotSpecified",
targetBootDiagnosticsStorageAccountId: exampleAccount.id,
targetVmName: "example_replicated_vm",
targetResourceGroupId: example.id,
defaultLogStorageAccountId: exampleAccount.id,
defaultRecoveryDiskType: "Standard_LRS",
targetNetworkId: exampleVirtualNetwork.id,
networkInterfaces: [{
sourceMacAddress: "00:00:00:00:00:00",
targetSubnetName: exampleSubnet.name,
isPrimary: true,
}],
});
import pulumi
import pulumi_azure as azure
example = azure.core.ResourceGroup("example",
name="example-rg",
location="West US")
example_vault = azure.recoveryservices.Vault("example",
name="example-recovery-vault",
location=example.location,
resource_group_name=example.name,
sku="Standard")
example_vm_ware_replication_policy = azure.siterecovery.VMWareReplicationPolicy("example",
recovery_vault_id=example_vault.id,
name="example-policy",
recovery_point_retention_in_minutes=1440,
application_consistent_snapshot_frequency_in_minutes=240)
test = azure.siterecovery.VmwareReplicationPolicyAssociation("test",
name="example-association",
recovery_vault_id=example_vault.id,
policy_id=example_vm_ware_replication_policy.id)
example_account = azure.storage.Account("example",
name="examplestorageacc",
resource_group_name=example.name,
location=example.location,
account_tier="Standard",
account_kind="StorageV2",
account_replication_type="LRS")
example_virtual_network = azure.network.VirtualNetwork("example",
name="example-net",
resource_group_name=example.name,
address_spaces=["192&#46;168&#46;2&#46;0/24"],
location=example.location)
example_subnet = azure.network.Subnet("example",
name="example-subnet",
resource_group_name=example.name,
virtual_network_name=example_virtual_network.name,
address_prefixes=["192&#46;168&#46;2&#46;0/24"])
example_vmware_replicated_vm = azure.siterecovery.VmwareReplicatedVm("example",
name="example-vmware-vm",
recovery_vault_id=example_vault.id,
source_vm_name="example-vm",
appliance_name="example-appliance",
recovery_replication_policy_id=example_azurerm_site_recovery_vmware_replication_policy_association["policyId"],
physical_server_credential_name="example-creds",
license_type="NotSpecified",
target_boot_diagnostics_storage_account_id=example_account.id,
target_vm_name="example_replicated_vm",
target_resource_group_id=example.id,
default_log_storage_account_id=example_account.id,
default_recovery_disk_type="Standard_LRS",
target_network_id=example_virtual_network.id,
network_interfaces=[{
"source_mac_address": "00:00:00:00:00:00",
"target_subnet_name": example_subnet.name,
"is_primary": True,
}])
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Azure = Pulumi.Azure;
return await Deployment.RunAsync(() =>
{
var example = new Azure.Core.ResourceGroup("example", new()
{
Name = "example-rg",
Location = "West US",
});
var exampleVault = new Azure.RecoveryServices.Vault("example", new()
{
Name = "example-recovery-vault",
Location = example.Location,
ResourceGroupName = example.Name,
Sku = "Standard",
});
var exampleVMWareReplicationPolicy = new Azure.SiteRecovery.VMWareReplicationPolicy("example", new()
{
RecoveryVaultId = exampleVault.Id,
Name = "example-policy",
RecoveryPointRetentionInMinutes = 1440,
ApplicationConsistentSnapshotFrequencyInMinutes = 240,
});
var test = new Azure.SiteRecovery.VmwareReplicationPolicyAssociation("test", new()
{
Name = "example-association",
RecoveryVaultId = exampleVault.Id,
PolicyId = exampleVMWareReplicationPolicy.Id,
});
var exampleAccount = new Azure.Storage.Account("example", new()
{
Name = "examplestorageacc",
ResourceGroupName = example.Name,
Location = example.Location,
AccountTier = "Standard",
AccountKind = "StorageV2",
AccountReplicationType = "LRS",
});
var exampleVirtualNetwork = new Azure.Network.VirtualNetwork("example", new()
{
Name = "example-net",
ResourceGroupName = example.Name,
AddressSpaces = new[]
{
"192.168.2.0/24",
},
Location = example.Location,
});
var exampleSubnet = new Azure.Network.Subnet("example", new()
{
Name = "example-subnet",
ResourceGroupName = example.Name,
VirtualNetworkName = exampleVirtualNetwork.Name,
AddressPrefixes = new[]
{
"192.168.2.0/24",
},
});
var exampleVmwareReplicatedVm = new Azure.SiteRecovery.VmwareReplicatedVm("example", new()
{
Name = "example-vmware-vm",
RecoveryVaultId = exampleVault.Id,
SourceVmName = "example-vm",
ApplianceName = "example-appliance",
RecoveryReplicationPolicyId = exampleAzurermSiteRecoveryVmwareReplicationPolicyAssociation.PolicyId,
PhysicalServerCredentialName = "example-creds",
LicenseType = "NotSpecified",
TargetBootDiagnosticsStorageAccountId = exampleAccount.Id,
TargetVmName = "example_replicated_vm",
TargetResourceGroupId = example.Id,
DefaultLogStorageAccountId = exampleAccount.Id,
DefaultRecoveryDiskType = "Standard_LRS",
TargetNetworkId = exampleVirtualNetwork.Id,
NetworkInterfaces = new[]
{
new Azure.SiteRecovery.Inputs.VmwareReplicatedVmNetworkInterfaceArgs
{
SourceMacAddress = "00:00:00:00:00:00",
TargetSubnetName = exampleSubnet.Name,
IsPrimary = true,
},
},
});
});
package main
import (
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/network"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/recoveryservices"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/siterecovery"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/storage"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
example, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
Name: pulumi.String("example-rg"),
Location: pulumi.String("West US"),
})
if err != nil {
return err
}
exampleVault, err := recoveryservices.NewVault(ctx, "example", &recoveryservices.VaultArgs{
Name: pulumi.String("example-recovery-vault"),
Location: example.Location,
ResourceGroupName: example.Name,
Sku: pulumi.String("Standard"),
})
if err != nil {
return err
}
exampleVMWareReplicationPolicy, err := siterecovery.NewVMWareReplicationPolicy(ctx, "example", &siterecovery.VMWareReplicationPolicyArgs{
RecoveryVaultId: exampleVault.ID(),
Name: pulumi.String("example-policy"),
RecoveryPointRetentionInMinutes: pulumi.Int(1440),
ApplicationConsistentSnapshotFrequencyInMinutes: pulumi.Int(240),
})
if err != nil {
return err
}
_, err = siterecovery.NewVmwareReplicationPolicyAssociation(ctx, "test", &siterecovery.VmwareReplicationPolicyAssociationArgs{
Name: pulumi.String("example-association"),
RecoveryVaultId: exampleVault.ID(),
PolicyId: exampleVMWareReplicationPolicy.ID(),
})
if err != nil {
return err
}
exampleAccount, err := storage.NewAccount(ctx, "example", &storage.AccountArgs{
Name: pulumi.String("examplestorageacc"),
ResourceGroupName: example.Name,
Location: example.Location,
AccountTier: pulumi.String("Standard"),
AccountKind: pulumi.String("StorageV2"),
AccountReplicationType: pulumi.String("LRS"),
})
if err != nil {
return err
}
exampleVirtualNetwork, err := network.NewVirtualNetwork(ctx, "example", &network.VirtualNetworkArgs{
Name: pulumi.String("example-net"),
ResourceGroupName: example.Name,
AddressSpaces: pulumi.StringArray{
pulumi.String("192.168.2.0/24"),
},
Location: example.Location,
})
if err != nil {
return err
}
exampleSubnet, err := network.NewSubnet(ctx, "example", &network.SubnetArgs{
Name: pulumi.String("example-subnet"),
ResourceGroupName: example.Name,
VirtualNetworkName: exampleVirtualNetwork.Name,
AddressPrefixes: pulumi.StringArray{
pulumi.String("192.168.2.0/24"),
},
})
if err != nil {
return err
}
_, err = siterecovery.NewVmwareReplicatedVm(ctx, "example", &siterecovery.VmwareReplicatedVmArgs{
Name: pulumi.String("example-vmware-vm"),
RecoveryVaultId: exampleVault.ID(),
SourceVmName: pulumi.String("example-vm"),
ApplianceName: pulumi.String("example-appliance"),
RecoveryReplicationPolicyId: pulumi.Any(exampleAzurermSiteRecoveryVmwareReplicationPolicyAssociation.PolicyId),
PhysicalServerCredentialName: pulumi.String("example-creds"),
LicenseType: pulumi.String("NotSpecified"),
TargetBootDiagnosticsStorageAccountId: exampleAccount.ID(),
TargetVmName: pulumi.String("example_replicated_vm"),
TargetResourceGroupId: example.ID(),
DefaultLogStorageAccountId: exampleAccount.ID(),
DefaultRecoveryDiskType: pulumi.String("Standard_LRS"),
TargetNetworkId: exampleVirtualNetwork.ID(),
NetworkInterfaces: siterecovery.VmwareReplicatedVmNetworkInterfaceArray{
&siterecovery.VmwareReplicatedVmNetworkInterfaceArgs{
SourceMacAddress: pulumi.String("00:00:00:00:00:00"),
TargetSubnetName: exampleSubnet.Name,
IsPrimary: pulumi.Bool(true),
},
},
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azure.core.ResourceGroup;
import com.pulumi.azure.core.ResourceGroupArgs;
import com.pulumi.azure.recoveryservices.Vault;
import com.pulumi.azure.recoveryservices.VaultArgs;
import com.pulumi.azure.siterecovery.VMWareReplicationPolicy;
import com.pulumi.azure.siterecovery.VMWareReplicationPolicyArgs;
import com.pulumi.azure.siterecovery.VmwareReplicationPolicyAssociation;
import com.pulumi.azure.siterecovery.VmwareReplicationPolicyAssociationArgs;
import com.pulumi.azure.storage.Account;
import com.pulumi.azure.storage.AccountArgs;
import com.pulumi.azure.network.VirtualNetwork;
import com.pulumi.azure.network.VirtualNetworkArgs;
import com.pulumi.azure.network.Subnet;
import com.pulumi.azure.network.SubnetArgs;
import com.pulumi.azure.siterecovery.VmwareReplicatedVm;
import com.pulumi.azure.siterecovery.VmwareReplicatedVmArgs;
import com.pulumi.azure.siterecovery.inputs.VmwareReplicatedVmNetworkInterfaceArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var example = new ResourceGroup("example", ResourceGroupArgs.builder()
.name("example-rg")
.location("West US")
.build());
var exampleVault = new Vault("exampleVault", VaultArgs.builder()
.name("example-recovery-vault")
.location(example.location())
.resourceGroupName(example.name())
.sku("Standard")
.build());
var exampleVMWareReplicationPolicy = new VMWareReplicationPolicy("exampleVMWareReplicationPolicy", VMWareReplicationPolicyArgs.builder()
.recoveryVaultId(exampleVault.id())
.name("example-policy")
.recoveryPointRetentionInMinutes(1440)
.applicationConsistentSnapshotFrequencyInMinutes(240)
.build());
var test = new VmwareReplicationPolicyAssociation("test", VmwareReplicationPolicyAssociationArgs.builder()
.name("example-association")
.recoveryVaultId(exampleVault.id())
.policyId(exampleVMWareReplicationPolicy.id())
.build());
var exampleAccount = new Account("exampleAccount", AccountArgs.builder()
.name("examplestorageacc")
.resourceGroupName(example.name())
.location(example.location())
.accountTier("Standard")
.accountKind("StorageV2")
.accountReplicationType("LRS")
.build());
var exampleVirtualNetwork = new VirtualNetwork("exampleVirtualNetwork", VirtualNetworkArgs.builder()
.name("example-net")
.resourceGroupName(example.name())
.addressSpaces("192.168.2.0/24")
.location(example.location())
.build());
var exampleSubnet = new Subnet("exampleSubnet", SubnetArgs.builder()
.name("example-subnet")
.resourceGroupName(example.name())
.virtualNetworkName(exampleVirtualNetwork.name())
.addressPrefixes("192.168.2.0/24")
.build());
var exampleVmwareReplicatedVm = new VmwareReplicatedVm("exampleVmwareReplicatedVm", VmwareReplicatedVmArgs.builder()
.name("example-vmware-vm")
.recoveryVaultId(exampleVault.id())
.sourceVmName("example-vm")
.applianceName("example-appliance")
.recoveryReplicationPolicyId(exampleAzurermSiteRecoveryVmwareReplicationPolicyAssociation.policyId())
.physicalServerCredentialName("example-creds")
.licenseType("NotSpecified")
.targetBootDiagnosticsStorageAccountId(exampleAccount.id())
.targetVmName("example_replicated_vm")
.targetResourceGroupId(example.id())
.defaultLogStorageAccountId(exampleAccount.id())
.defaultRecoveryDiskType("Standard_LRS")
.targetNetworkId(exampleVirtualNetwork.id())
.networkInterfaces(VmwareReplicatedVmNetworkInterfaceArgs.builder()
.sourceMacAddress("00:00:00:00:00:00")
.targetSubnetName(exampleSubnet.name())
.isPrimary(true)
.build())
.build());
}
}
resources:
example:
type: azure:core:ResourceGroup
properties:
name: example-rg
location: West US
exampleVault:
type: azure:recoveryservices:Vault
name: example
properties:
name: example-recovery-vault
location: ${example.location}
resourceGroupName: ${example.name}
sku: Standard
exampleVMWareReplicationPolicy:
type: azure:siterecovery:VMWareReplicationPolicy
name: example
properties:
recoveryVaultId: ${exampleVault.id}
name: example-policy
recoveryPointRetentionInMinutes: 1440
applicationConsistentSnapshotFrequencyInMinutes: 240
test:
type: azure:siterecovery:VmwareReplicationPolicyAssociation
properties:
name: example-association
recoveryVaultId: ${exampleVault.id}
policyId: ${exampleVMWareReplicationPolicy.id}
exampleAccount:
type: azure:storage:Account
name: example
properties:
name: examplestorageacc
resourceGroupName: ${example.name}
location: ${example.location}
accountTier: Standard
accountKind: StorageV2
accountReplicationType: LRS
exampleVirtualNetwork:
type: azure:network:VirtualNetwork
name: example
properties:
name: example-net
resourceGroupName: ${example.name}
addressSpaces:
- 192.168.2.0/24
location: ${example.location}
exampleSubnet:
type: azure:network:Subnet
name: example
properties:
name: example-subnet
resourceGroupName: ${example.name}
virtualNetworkName: ${exampleVirtualNetwork.name}
addressPrefixes:
- 192.168.2.0/24
exampleVmwareReplicatedVm:
type: azure:siterecovery:VmwareReplicatedVm
name: example
properties:
name: example-vmware-vm
recoveryVaultId: ${exampleVault.id}
sourceVmName: example-vm
applianceName: example-appliance
recoveryReplicationPolicyId: ${exampleAzurermSiteRecoveryVmwareReplicationPolicyAssociation.policyId}
physicalServerCredentialName: example-creds
licenseType: NotSpecified
targetBootDiagnosticsStorageAccountId: ${exampleAccount.id}
targetVmName: example_replicated_vm
targetResourceGroupId: ${example.id}
defaultLogStorageAccountId: ${exampleAccount.id}
defaultRecoveryDiskType: Standard_LRS
targetNetworkId: ${exampleVirtualNetwork.id}
networkInterfaces:
- sourceMacAddress: 00:00:00:00:00:00
targetSubnetName: ${exampleSubnet.name}
isPrimary: true

API Providers

This resource uses the following Azure API Providers:

  • Microsoft.OffAzure: 2020-01-01

  • Microsoft.RecoveryServices: 2024-04-01

Import

Site Recovery VMWare Replicated VM's can be imported using the resource id, e.g.

$ pulumi import azure:siterecovery/vmwareReplicatedVm:VmwareReplicatedVm 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

Constructors

Link copied to clipboard
constructor(applianceName: Output<String>? = null, defaultLogStorageAccountId: Output<String>? = null, defaultRecoveryDiskType: Output<String>? = null, defaultTargetDiskEncryptionSetId: Output<String>? = null, licenseType: Output<String>? = null, managedDisks: Output<List<VmwareReplicatedVmManagedDiskArgs>>? = null, multiVmGroupName: Output<String>? = null, name: Output<String>? = null, networkInterfaces: Output<List<VmwareReplicatedVmNetworkInterfaceArgs>>? = null, physicalServerCredentialName: Output<String>? = null, recoveryReplicationPolicyId: Output<String>? = null, recoveryVaultId: Output<String>? = null, sourceVmName: Output<String>? = null, targetAvailabilitySetId: Output<String>? = null, targetBootDiagnosticsStorageAccountId: Output<String>? = null, targetNetworkId: Output<String>? = null, targetProximityPlacementGroupId: Output<String>? = null, targetResourceGroupId: Output<String>? = null, targetVmName: Output<String>? = null, targetVmSize: Output<String>? = null, targetZone: Output<String>? = null, testNetworkId: Output<String>? = null)

Properties

Link copied to clipboard
val applianceName: Output<String>? = null

The name of VMWare appliance which handles the replication. Changing this forces a new resource to be created.

Link copied to clipboard
val defaultLogStorageAccountId: Output<String>? = null

The ID of the stroage account that should be used for logging during replication.

Link copied to clipboard
val defaultRecoveryDiskType: Output<String>? = null

The type of storage account that should be used for recovery disks when a failover is done. Possible values are Premium_LRS, Standard_LRS and StandardSSD_LRS.

Link copied to clipboard

The ID of the default Disk Encryption Set that should be used for the disks when a failover is done.

Link copied to clipboard
val licenseType: Output<String>? = null

The license type of the VM. Possible values are NoLicenseType, NotSpecified and WindowsServer. Defaults to NotSpecified.

Link copied to clipboard

One or more managed_disk block as defined below. It's available only if mobility service is already installed on the source VM.

Link copied to clipboard
val multiVmGroupName: Output<String>? = null

Name of group in which all machines will replicate together and have shared crash consistent and app-consistent recovery points when failed over.

Link copied to clipboard
val name: Output<String>? = null

The name of the replicated VM. Changing this forces a new resource to be created.

Link copied to clipboard

One or more network_interface block as defined below.

Link copied to clipboard

The name of the credential to access the source VM. Changing this forces a new resource to be created. More information about the credentials could be found here.

Link copied to clipboard
val recoveryReplicationPolicyId: Output<String>? = null

The ID of the policy to use for this replicated VM.

Link copied to clipboard
val recoveryVaultId: Output<String>? = null

The ID of the Recovery Services Vault where the replicated VM is created.

Link copied to clipboard
val sourceVmName: Output<String>? = null

The name of the source VM in VMWare. Changing this forces a new resource to be created.

Link copied to clipboard
val targetAvailabilitySetId: Output<String>? = null

The ID of availability set that the new VM should belong to when a failover is done.

Link copied to clipboard

The ID of the storage account that should be used for boot diagnostics when a failover is done.

Link copied to clipboard
val targetNetworkId: Output<String>? = null

The ID of network to use when a failover is done.

Link copied to clipboard

The ID of Proximity Placement Group the new VM should belong to when a failover is done.

Link copied to clipboard
val targetResourceGroupId: Output<String>? = null

The ID of resource group where the VM should be created when a failover is done.

Link copied to clipboard
val targetVmName: Output<String>? = null

Name of the VM that should be created when a failover is done. Changing this forces a new resource to be created.

Link copied to clipboard
val targetVmSize: Output<String>? = null

Size of the VM that should be created when a failover is done, such as Standard_F2. If it's not specified, it will automatically be set by detecting the source VM size.

Link copied to clipboard
val targetZone: Output<String>? = null

Specifies the Availability Zone where the Failover VM should exist.

Link copied to clipboard
val testNetworkId: Output<String>? = null

The ID of network to use when a test failover is done.

Functions

Link copied to clipboard
open override fun toJava(): VmwareReplicatedVmArgs