The azure-native:storagemover:Agent resource, part of the Pulumi Azure Native provider, registers Azure Arc-enabled machines as Storage Mover agents that execute migration jobs. This guide focuses on three capabilities: agent registration with Arc machines, bandwidth throttling schedules, and multi-window time configurations.
Agents require existing Azure Arc-enabled machines and Storage Mover resources. The examples are intentionally small. Combine them with your own Arc infrastructure and Storage Mover deployments.
Register an agent with a Storage Mover
Storage Mover agents run on-premises or in Azure VMs to execute migration jobs. Registration connects an Arc-enabled machine to a Storage Mover resource.
import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";
const agent = new azure_native.storagemover.Agent("agent", {
agentName: "examples-agentName",
arcResourceId: "/subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.HybridCompute/machines/examples-hybridComputeName",
arcVmUuid: "3bb2c024-eba9-4d18-9e7a-1d772fcc5fe9",
resourceGroupName: "examples-rg",
storageMoverName: "examples-storageMoverName",
});
import pulumi
import pulumi_azure_native as azure_native
agent = azure_native.storagemover.Agent("agent",
agent_name="examples-agentName",
arc_resource_id="/subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.HybridCompute/machines/examples-hybridComputeName",
arc_vm_uuid="3bb2c024-eba9-4d18-9e7a-1d772fcc5fe9",
resource_group_name="examples-rg",
storage_mover_name="examples-storageMoverName")
package main
import (
storagemover "github.com/pulumi/pulumi-azure-native-sdk/storagemover/v3"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := storagemover.NewAgent(ctx, "agent", &storagemover.AgentArgs{
AgentName: pulumi.String("examples-agentName"),
ArcResourceId: pulumi.String("/subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.HybridCompute/machines/examples-hybridComputeName"),
ArcVmUuid: pulumi.String("3bb2c024-eba9-4d18-9e7a-1d772fcc5fe9"),
ResourceGroupName: pulumi.String("examples-rg"),
StorageMoverName: pulumi.String("examples-storageMoverName"),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var agent = new AzureNative.StorageMover.Agent("agent", new()
{
AgentName = "examples-agentName",
ArcResourceId = "/subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.HybridCompute/machines/examples-hybridComputeName",
ArcVmUuid = "3bb2c024-eba9-4d18-9e7a-1d772fcc5fe9",
ResourceGroupName = "examples-rg",
StorageMoverName = "examples-storageMoverName",
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.storagemover.Agent;
import com.pulumi.azurenative.storagemover.AgentArgs;
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 agent = new Agent("agent", AgentArgs.builder()
.agentName("examples-agentName")
.arcResourceId("/subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.HybridCompute/machines/examples-hybridComputeName")
.arcVmUuid("3bb2c024-eba9-4d18-9e7a-1d772fcc5fe9")
.resourceGroupName("examples-rg")
.storageMoverName("examples-storageMoverName")
.build());
}
}
resources:
agent:
type: azure-native:storagemover:Agent
properties:
agentName: examples-agentName
arcResourceId: /subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.HybridCompute/machines/examples-hybridComputeName
arcVmUuid: 3bb2c024-eba9-4d18-9e7a-1d772fcc5fe9
resourceGroupName: examples-rg
storageMoverName: examples-storageMoverName
The arcResourceId property identifies the Azure Arc-enabled machine (a Hybrid Compute resource) that will run migration jobs. The arcVmUuid provides the VM’s unique identifier. Together, these properties bind the agent to a specific machine. The storageMoverName references the parent Storage Mover resource that orchestrates migration projects.
Throttle bandwidth during business hours
Migration workloads can saturate WAN links, affecting production traffic. Upload limit schedules restrict agent bandwidth to specific time windows.
import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";
const agent = new azure_native.storagemover.Agent("agent", {
agentName: "examples-agentName",
arcResourceId: "/subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.HybridCompute/machines/examples-hybridComputeName",
arcVmUuid: "3bb2c024-eba9-4d18-9e7a-1d772fcc5fe9",
description: "Example Agent Description",
resourceGroupName: "examples-rg",
storageMoverName: "examples-storageMoverName",
uploadLimitSchedule: {
weeklyRecurrences: [{
days: [azure_native.storagemover.DayOfWeek.Monday],
endTime: {
hour: 18,
minute: 30,
},
limitInMbps: 2000,
startTime: {
hour: 9,
minute: 0,
},
}],
},
});
import pulumi
import pulumi_azure_native as azure_native
agent = azure_native.storagemover.Agent("agent",
agent_name="examples-agentName",
arc_resource_id="/subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.HybridCompute/machines/examples-hybridComputeName",
arc_vm_uuid="3bb2c024-eba9-4d18-9e7a-1d772fcc5fe9",
description="Example Agent Description",
resource_group_name="examples-rg",
storage_mover_name="examples-storageMoverName",
upload_limit_schedule={
"weekly_recurrences": [{
"days": [azure_native.storagemover.DayOfWeek.MONDAY],
"end_time": {
"hour": 18,
"minute": 30,
},
"limit_in_mbps": 2000,
"start_time": {
"hour": 9,
"minute": 0,
},
}],
})
package main
import (
storagemover "github.com/pulumi/pulumi-azure-native-sdk/storagemover/v3"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := storagemover.NewAgent(ctx, "agent", &storagemover.AgentArgs{
AgentName: pulumi.String("examples-agentName"),
ArcResourceId: pulumi.String("/subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.HybridCompute/machines/examples-hybridComputeName"),
ArcVmUuid: pulumi.String("3bb2c024-eba9-4d18-9e7a-1d772fcc5fe9"),
Description: pulumi.String("Example Agent Description"),
ResourceGroupName: pulumi.String("examples-rg"),
StorageMoverName: pulumi.String("examples-storageMoverName"),
UploadLimitSchedule: &storagemover.UploadLimitScheduleArgs{
WeeklyRecurrences: storagemover.UploadLimitWeeklyRecurrenceArray{
&storagemover.UploadLimitWeeklyRecurrenceArgs{
Days: storagemover.DayOfWeekArray{
storagemover.DayOfWeekMonday,
},
EndTime: &storagemover.TimeArgs{
Hour: pulumi.Int(18),
Minute: pulumi.Float64(30),
},
LimitInMbps: pulumi.Int(2000),
StartTime: &storagemover.TimeArgs{
Hour: pulumi.Int(9),
Minute: pulumi.Float64(0),
},
},
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var agent = new AzureNative.StorageMover.Agent("agent", new()
{
AgentName = "examples-agentName",
ArcResourceId = "/subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.HybridCompute/machines/examples-hybridComputeName",
ArcVmUuid = "3bb2c024-eba9-4d18-9e7a-1d772fcc5fe9",
Description = "Example Agent Description",
ResourceGroupName = "examples-rg",
StorageMoverName = "examples-storageMoverName",
UploadLimitSchedule = new AzureNative.StorageMover.Inputs.UploadLimitScheduleArgs
{
WeeklyRecurrences = new[]
{
new AzureNative.StorageMover.Inputs.UploadLimitWeeklyRecurrenceArgs
{
Days = new[]
{
AzureNative.StorageMover.DayOfWeek.Monday,
},
EndTime = new AzureNative.StorageMover.Inputs.TimeArgs
{
Hour = 18,
Minute = 30,
},
LimitInMbps = 2000,
StartTime = new AzureNative.StorageMover.Inputs.TimeArgs
{
Hour = 9,
Minute = 0,
},
},
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.storagemover.Agent;
import com.pulumi.azurenative.storagemover.AgentArgs;
import com.pulumi.azurenative.storagemover.inputs.UploadLimitScheduleArgs;
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 agent = new Agent("agent", AgentArgs.builder()
.agentName("examples-agentName")
.arcResourceId("/subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.HybridCompute/machines/examples-hybridComputeName")
.arcVmUuid("3bb2c024-eba9-4d18-9e7a-1d772fcc5fe9")
.description("Example Agent Description")
.resourceGroupName("examples-rg")
.storageMoverName("examples-storageMoverName")
.uploadLimitSchedule(UploadLimitScheduleArgs.builder()
.weeklyRecurrences(UploadLimitWeeklyRecurrenceArgs.builder()
.days("Monday")
.endTime(TimeArgs.builder()
.hour(18)
.minute(30.0)
.build())
.limitInMbps(2000)
.startTime(TimeArgs.builder()
.hour(9)
.minute(0.0)
.build())
.build())
.build())
.build());
}
}
resources:
agent:
type: azure-native:storagemover:Agent
properties:
agentName: examples-agentName
arcResourceId: /subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.HybridCompute/machines/examples-hybridComputeName
arcVmUuid: 3bb2c024-eba9-4d18-9e7a-1d772fcc5fe9
description: Example Agent Description
resourceGroupName: examples-rg
storageMoverName: examples-storageMoverName
uploadLimitSchedule:
weeklyRecurrences:
- days:
- Monday
endTime:
hour: 18
minute: 30
limitInMbps: 2000
startTime:
hour: 9
minute: 0
The uploadLimitSchedule property defines when bandwidth limits apply. Each weeklyRecurrences entry specifies days, start and end times, and a bandwidth cap in Mbps. In this configuration, the agent limits uploads to 2000 Mbps on Mondays between 9:00 AM and 6:30 PM. Outside this window, the agent uses available bandwidth without restriction.
Schedule overnight and weekend bandwidth windows
Organizations with strict business-hours requirements often need multiple time windows to cover overnight periods that span midnight.
import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";
const agent = new azure_native.storagemover.Agent("agent", {
agentName: "examples-agentName",
arcResourceId: "/subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.HybridCompute/machines/examples-hybridComputeName",
arcVmUuid: "3bb2c024-eba9-4d18-9e7a-1d772fcc5fe9",
resourceGroupName: "examples-rg",
storageMoverName: "examples-storageMoverName",
uploadLimitSchedule: {
weeklyRecurrences: [
{
days: [
azure_native.storagemover.DayOfWeek.Monday,
azure_native.storagemover.DayOfWeek.Tuesday,
azure_native.storagemover.DayOfWeek.Wednesday,
azure_native.storagemover.DayOfWeek.Thursday,
azure_native.storagemover.DayOfWeek.Friday,
azure_native.storagemover.DayOfWeek.Saturday,
azure_native.storagemover.DayOfWeek.Sunday,
],
endTime: {
hour: 24,
minute: 0,
},
limitInMbps: 2000,
startTime: {
hour: 18,
minute: 0,
},
},
{
days: [
azure_native.storagemover.DayOfWeek.Monday,
azure_native.storagemover.DayOfWeek.Tuesday,
azure_native.storagemover.DayOfWeek.Wednesday,
azure_native.storagemover.DayOfWeek.Thursday,
azure_native.storagemover.DayOfWeek.Friday,
azure_native.storagemover.DayOfWeek.Saturday,
azure_native.storagemover.DayOfWeek.Sunday,
],
endTime: {
hour: 9,
minute: 0,
},
limitInMbps: 2000,
startTime: {
hour: 0,
minute: 0,
},
},
],
},
});
import pulumi
import pulumi_azure_native as azure_native
agent = azure_native.storagemover.Agent("agent",
agent_name="examples-agentName",
arc_resource_id="/subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.HybridCompute/machines/examples-hybridComputeName",
arc_vm_uuid="3bb2c024-eba9-4d18-9e7a-1d772fcc5fe9",
resource_group_name="examples-rg",
storage_mover_name="examples-storageMoverName",
upload_limit_schedule={
"weekly_recurrences": [
{
"days": [
azure_native.storagemover.DayOfWeek.MONDAY,
azure_native.storagemover.DayOfWeek.TUESDAY,
azure_native.storagemover.DayOfWeek.WEDNESDAY,
azure_native.storagemover.DayOfWeek.THURSDAY,
azure_native.storagemover.DayOfWeek.FRIDAY,
azure_native.storagemover.DayOfWeek.SATURDAY,
azure_native.storagemover.DayOfWeek.SUNDAY,
],
"end_time": {
"hour": 24,
"minute": 0,
},
"limit_in_mbps": 2000,
"start_time": {
"hour": 18,
"minute": 0,
},
},
{
"days": [
azure_native.storagemover.DayOfWeek.MONDAY,
azure_native.storagemover.DayOfWeek.TUESDAY,
azure_native.storagemover.DayOfWeek.WEDNESDAY,
azure_native.storagemover.DayOfWeek.THURSDAY,
azure_native.storagemover.DayOfWeek.FRIDAY,
azure_native.storagemover.DayOfWeek.SATURDAY,
azure_native.storagemover.DayOfWeek.SUNDAY,
],
"end_time": {
"hour": 9,
"minute": 0,
},
"limit_in_mbps": 2000,
"start_time": {
"hour": 0,
"minute": 0,
},
},
],
})
package main
import (
storagemover "github.com/pulumi/pulumi-azure-native-sdk/storagemover/v3"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := storagemover.NewAgent(ctx, "agent", &storagemover.AgentArgs{
AgentName: pulumi.String("examples-agentName"),
ArcResourceId: pulumi.String("/subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.HybridCompute/machines/examples-hybridComputeName"),
ArcVmUuid: pulumi.String("3bb2c024-eba9-4d18-9e7a-1d772fcc5fe9"),
ResourceGroupName: pulumi.String("examples-rg"),
StorageMoverName: pulumi.String("examples-storageMoverName"),
UploadLimitSchedule: &storagemover.UploadLimitScheduleArgs{
WeeklyRecurrences: storagemover.UploadLimitWeeklyRecurrenceArray{
&storagemover.UploadLimitWeeklyRecurrenceArgs{
Days: storagemover.DayOfWeekArray{
storagemover.DayOfWeekMonday,
storagemover.DayOfWeekTuesday,
storagemover.DayOfWeekWednesday,
storagemover.DayOfWeekThursday,
storagemover.DayOfWeekFriday,
storagemover.DayOfWeekSaturday,
storagemover.DayOfWeekSunday,
},
EndTime: &storagemover.TimeArgs{
Hour: pulumi.Int(24),
Minute: pulumi.Float64(0),
},
LimitInMbps: pulumi.Int(2000),
StartTime: &storagemover.TimeArgs{
Hour: pulumi.Int(18),
Minute: pulumi.Float64(0),
},
},
&storagemover.UploadLimitWeeklyRecurrenceArgs{
Days: storagemover.DayOfWeekArray{
storagemover.DayOfWeekMonday,
storagemover.DayOfWeekTuesday,
storagemover.DayOfWeekWednesday,
storagemover.DayOfWeekThursday,
storagemover.DayOfWeekFriday,
storagemover.DayOfWeekSaturday,
storagemover.DayOfWeekSunday,
},
EndTime: &storagemover.TimeArgs{
Hour: pulumi.Int(9),
Minute: pulumi.Float64(0),
},
LimitInMbps: pulumi.Int(2000),
StartTime: &storagemover.TimeArgs{
Hour: pulumi.Int(0),
Minute: pulumi.Float64(0),
},
},
},
},
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var agent = new AzureNative.StorageMover.Agent("agent", new()
{
AgentName = "examples-agentName",
ArcResourceId = "/subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.HybridCompute/machines/examples-hybridComputeName",
ArcVmUuid = "3bb2c024-eba9-4d18-9e7a-1d772fcc5fe9",
ResourceGroupName = "examples-rg",
StorageMoverName = "examples-storageMoverName",
UploadLimitSchedule = new AzureNative.StorageMover.Inputs.UploadLimitScheduleArgs
{
WeeklyRecurrences = new[]
{
new AzureNative.StorageMover.Inputs.UploadLimitWeeklyRecurrenceArgs
{
Days = new[]
{
AzureNative.StorageMover.DayOfWeek.Monday,
AzureNative.StorageMover.DayOfWeek.Tuesday,
AzureNative.StorageMover.DayOfWeek.Wednesday,
AzureNative.StorageMover.DayOfWeek.Thursday,
AzureNative.StorageMover.DayOfWeek.Friday,
AzureNative.StorageMover.DayOfWeek.Saturday,
AzureNative.StorageMover.DayOfWeek.Sunday,
},
EndTime = new AzureNative.StorageMover.Inputs.TimeArgs
{
Hour = 24,
Minute = 0,
},
LimitInMbps = 2000,
StartTime = new AzureNative.StorageMover.Inputs.TimeArgs
{
Hour = 18,
Minute = 0,
},
},
new AzureNative.StorageMover.Inputs.UploadLimitWeeklyRecurrenceArgs
{
Days = new[]
{
AzureNative.StorageMover.DayOfWeek.Monday,
AzureNative.StorageMover.DayOfWeek.Tuesday,
AzureNative.StorageMover.DayOfWeek.Wednesday,
AzureNative.StorageMover.DayOfWeek.Thursday,
AzureNative.StorageMover.DayOfWeek.Friday,
AzureNative.StorageMover.DayOfWeek.Saturday,
AzureNative.StorageMover.DayOfWeek.Sunday,
},
EndTime = new AzureNative.StorageMover.Inputs.TimeArgs
{
Hour = 9,
Minute = 0,
},
LimitInMbps = 2000,
StartTime = new AzureNative.StorageMover.Inputs.TimeArgs
{
Hour = 0,
Minute = 0,
},
},
},
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.storagemover.Agent;
import com.pulumi.azurenative.storagemover.AgentArgs;
import com.pulumi.azurenative.storagemover.inputs.UploadLimitScheduleArgs;
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 agent = new Agent("agent", AgentArgs.builder()
.agentName("examples-agentName")
.arcResourceId("/subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.HybridCompute/machines/examples-hybridComputeName")
.arcVmUuid("3bb2c024-eba9-4d18-9e7a-1d772fcc5fe9")
.resourceGroupName("examples-rg")
.storageMoverName("examples-storageMoverName")
.uploadLimitSchedule(UploadLimitScheduleArgs.builder()
.weeklyRecurrences(
UploadLimitWeeklyRecurrenceArgs.builder()
.days(
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday")
.endTime(TimeArgs.builder()
.hour(24)
.minute(0.0)
.build())
.limitInMbps(2000)
.startTime(TimeArgs.builder()
.hour(18)
.minute(0.0)
.build())
.build(),
UploadLimitWeeklyRecurrenceArgs.builder()
.days(
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday")
.endTime(TimeArgs.builder()
.hour(9)
.minute(0.0)
.build())
.limitInMbps(2000)
.startTime(TimeArgs.builder()
.hour(0)
.minute(0.0)
.build())
.build())
.build())
.build());
}
}
resources:
agent:
type: azure-native:storagemover:Agent
properties:
agentName: examples-agentName
arcResourceId: /subscriptions/60bcfc77-6589-4da2-b7fd-f9ec9322cf95/resourceGroups/examples-rg/providers/Microsoft.HybridCompute/machines/examples-hybridComputeName
arcVmUuid: 3bb2c024-eba9-4d18-9e7a-1d772fcc5fe9
resourceGroupName: examples-rg
storageMoverName: examples-storageMoverName
uploadLimitSchedule:
weeklyRecurrences:
- days:
- Monday
- Tuesday
- Wednesday
- Thursday
- Friday
- Saturday
- Sunday
endTime:
hour: 24
minute: 0
limitInMbps: 2000
startTime:
hour: 18
minute: 0
- days:
- Monday
- Tuesday
- Wednesday
- Thursday
- Friday
- Saturday
- Sunday
endTime:
hour: 9
minute: 0
limitInMbps: 2000
startTime:
hour: 0
minute: 0
When a bandwidth window crosses midnight, define it as two separate recurrences. The first recurrence runs from 6:00 PM to midnight (hour 24), and the second runs from midnight (hour 0) to 9:00 AM. Both apply to all seven days, creating a continuous overnight window with consistent bandwidth limits.
Beyond these examples
These snippets focus on specific agent-level features: agent registration with Arc-enabled machines, bandwidth throttling schedules, and multi-window time configurations. They’re intentionally minimal rather than full migration deployments.
The examples reference pre-existing infrastructure such as Azure Arc-enabled machines, Storage Mover resources, and resource groups. They focus on configuring the agent rather than provisioning the surrounding infrastructure.
To keep things focused, common agent patterns are omitted, including:
- Agent status monitoring (agentStatus, lastStatusUpdate)
- Agent capabilities reporting (memoryInMB, numberOfCores, uptimeInSeconds)
- Error handling and diagnostics (errorDetails)
- Time zone configuration (timeZone)
These omissions are intentional: the goal is to illustrate how each agent feature is wired, not provide drop-in migration modules. See the Storage Mover Agent resource reference for all available configuration options.
Let's configure Azure Storage Mover Agents
Get started with Pulumi Cloud, then follow our quick setup guide to deploy this infrastructure.
Try Pulumi Cloud for FREEFrequently Asked Questions
Setup & Prerequisites
arcResourceId (full resource ID like /subscriptions/.../Microsoft.HybridCompute/machines/...) and arcVmUuid from this machine, plus agentName, resourceGroupName, and storageMoverName.arcResourceId, arcVmUuid, agentName, resourceGroupName, and storageMoverName properties are immutable. To change any of these, you must delete and recreate the agent.Bandwidth Management
uploadLimitSchedule with weeklyRecurrences. Each recurrence specifies days (array of weekdays), startTime, endTime, and limitInMbps. For example, to limit to 2000 Mbps on Mondays from 9:00 AM to 6:30 PM, set days: [Monday], startTime: {hour: 9, minute: 0}, endTime: {hour: 18, minute: 30}, and limitInMbps: 2000.startTime: {hour: 18, minute: 0} and endTime: {hour: 24, minute: 0}, and another with startTime: {hour: 0, minute: 0} and endTime: {hour: 9, minute: 0}.timeZone output property.Monitoring & Status
agentStatus, agentVersion, lastStatusUpdate, localIPAddress, memoryInMB, numberOfCores, uptimeInSeconds, timeZone, and errorDetails through the agent’s output properties.description is optional. The MinimumSet example shows an agent created without it.