qumulo_snapshot_policy (Resource)¶
Manages a snapshot policy on a Qumulo cluster.
Snapshot policies automate the creation of point-in-time snapshots on a schedule. You can configure daily, weekly, monthly, or more frequent snapshots with automatic expiration.
Example Usage¶
Daily Snapshots (using source_path)¶
resource "qumulo_snapshot_policy" "daily" {
connection_profile = "prod"
policy_name = "daily-backup"
source_path = "/data" # Automatically resolved to file ID
schedule {
timezone = "America/Los_Angeles"
frequency = "SCHEDULE_DAILY_OR_WEEKLY"
hour = 2
minute = 0
on_days = ["EVERY_DAY"]
expiration_time_to_live = "7days"
}
}
Hourly During Business Hours¶
resource "qumulo_snapshot_policy" "hourly" {
connection_profile = "prod"
policy_name = "business-hours"
source_path = "/projects"
schedule {
timezone = "UTC"
frequency = "SCHEDULE_HOURLY_OR_LESS"
on_days = ["MON", "TUE", "WED", "THU", "FRI"]
window_start_hour = 9
window_start_minute = 0
window_end_hour = 17
window_end_minute = 0
fire_every_interval = "FIRE_IN_HOURS"
fire_every = 1
expiration_time_to_live = "24hours"
}
}
Monthly Archive¶
resource "qumulo_snapshot_policy" "monthly" {
connection_profile = "prod"
policy_name = "monthly-archive"
source_file_id = "2" # Direct file ID if known
schedule {
timezone = "UTC"
frequency = "SCHEDULE_MONTHLY"
day_of_month = 1
hour = 0
minute = 0
expiration_time_to_live = "never"
}
}
Multi-Cluster with for_each¶
variable "clusters" {
type = set(string)
default = ["prod", "dr"]
}
resource "qumulo_snapshot_policy" "backup" {
for_each = var.clusters
connection_profile = each.value
policy_name = "standard-backup"
source_path = "/data"
schedule {
timezone = "UTC"
frequency = "SCHEDULE_DAILY_OR_WEEKLY"
hour = 3
minute = 0
on_days = ["EVERY_DAY"]
expiration_time_to_live = "14days"
}
}
Schema¶
Required¶
connection_profile(String) Name of a connection profile from the provider block. See the provider reference for how to define profiles.policy_name(String) The name of the snapshot policy.
Optional¶
enabled(Boolean) Whether the policy is enabled. Defaults to true.schedule(Block, Optional) The schedule configuration for when snapshots are taken. (see below for nested schema)snapshot_name_template(String) The naming template for snapshots. Uses placeholders like {ID}, {Policy}, {Directory}. Defaults to {ID}{Policy} for root or {ID} for subdirectories.}_{Directorysource_file_id(String) The file ID of the directory to snapshot. Computed if source_path is provided. Use either source_path or source_file_id, not both. Changing this value will replace the policy.source_path(String) The filesystem path to snapshot. This is resolved to a file ID automatically. Use either source_path or source_file_id, not both. Changing this value will replace the policy.
Read-Only¶
id(String) The unique ID of the snapshot policy.schedule_id(Number) The schedule ID associated with this policy.
Nested Schema for schedule¶
Required:
frequency(String) The frequency type: SCHEDULE_MONTHLY, SCHEDULE_DAILY_OR_WEEKLY, or SCHEDULE_HOURLY_OR_LESS.timezone(String) The timezone for the schedule (e.g., 'UTC', 'America/Los_Angeles'). Uses standard IANA timezone names.
Optional:
day_of_month(Number) Day of month [1-27] to take snapshot, or 128 for last day of month. Required for SCHEDULE_MONTHLY.expiration_time_to_live(String) Duration after which snapshots expire (e.g., '7days', '24hours', '2weeks'). Use 'never' or empty string for no expiration.fire_every(Number) Interval value [1-99] for how often to take snapshots within the window. Required for SCHEDULE_HOURLY_OR_LESS.fire_every_interval(String) Interval unit: FIRE_IN_MINUTES or FIRE_IN_HOURS. Required for SCHEDULE_HOURLY_OR_LESS.hour(Number) Hour of day [0-23] to take snapshot. Required for SCHEDULE_MONTHLY and SCHEDULE_DAILY_OR_WEEKLY.minute(Number) Minute of hour [0-59] to take snapshot. Required for SCHEDULE_MONTHLY and SCHEDULE_DAILY_OR_WEEKLY.on_days(List of String) Days of the week: SUN, MON, TUE, WED, THU, FRI, SAT, or EVERY_DAY. Required for SCHEDULE_DAILY_OR_WEEKLY and SCHEDULE_HOURLY_OR_LESS.window_end_hour(Number) End hour [0-23] of the snapshot window. Required for SCHEDULE_HOURLY_OR_LESS.window_end_minute(Number) End minute [0-59] of the snapshot window. Required for SCHEDULE_HOURLY_OR_LESS.window_start_hour(Number) Start hour [0-23] of the snapshot window. Required for SCHEDULE_HOURLY_OR_LESS.window_start_minute(Number) Start minute [0-59] of the snapshot window. Required for SCHEDULE_HOURLY_OR_LESS.