Skip to content

Latest commit

 

History

History
161 lines (129 loc) · 8.32 KB

File metadata and controls

161 lines (129 loc) · 8.32 KB
page_title duploai_storage_account Resource - duploai
subcategory
description Manages a DuploCloud AI Helpdesk Azure Storage Account, provisioned within an environment and resource group.

duploai_storage_account (Resource)

Manages a DuploCloud AI Helpdesk Azure Storage Account, provisioned within an environment and resource group.

Example Usage

# Minimal Azure Storage Account — provisioned in an environment + resource group.
# sku_name, kind, access tier, TLS, and data protection all default.
resource "duploai_storage_account" "basic" {
  workspace_id      = "<workspace-id>"
  name              = "prodsa001" # 3-24 chars, lowercase alphanumeric, globally unique
  environment_id    = "<environment-id>"
  resource_group_id = "<resource-group-id>"
}

# Full example — geo-redundant, hardened, Data Lake Gen2 (HNS) with SFTP, custom
# data protection, and tags. sku_name / kind / is_hns_enabled / is_nfs_v3_enabled
# are immutable (changing them replaces the account).
resource "duploai_storage_account" "full" {
  workspace_id      = "<workspace-id>"
  name              = "proddatalake01"
  environment_id    = "<environment-id>"
  resource_group_id = "<resource-group-id>"

  sku_name                  = "Standard_GRS"
  access_tier               = "Hot"
  minimum_tls_version       = "TLS1_2"
  enable_https_traffic_only = true
  allow_blob_public_access  = false

  # Data Lake Gen2 with SFTP (both require hierarchical namespace).
  is_hns_enabled  = true
  is_sftp_enabled = true

  data_protection = {
    enable_blob_soft_delete         = true
    blob_soft_delete_retention_days = 14
    enable_container_soft_delete    = true
    enable_versioning               = true
    enable_point_in_time_restore    = true
  }

  tags = {
    team        = "platform"
    environment = "production"
  }

  timeouts {
    create = "30m"
    update = "20m"
    delete = "20m"
  }
}

Schema

Required

  • environment_id (String) ID of the environment in which the storage account is provisioned.
  • name (String) Storage account name. 3-24 characters, lowercase letters and numbers, globally unique across Azure. Immutable after creation.
  • resource_group_id (String) ID of the resource group in which the storage account is provisioned.
  • workspace_id (String) ID of the workspace that owns this storage account.

Optional

  • access_tier (String) Default blob access tier.
  • allow_blob_public_access (Boolean) Allow anonymous public read access to blobs/containers.
  • allow_cross_tenant_replication (Boolean) Allow object replication across Azure AD tenants.
  • data_protection (Attributes) Blob/container/file-share data protection settings (soft delete, versioning, point-in-time restore). Applied on update. (see below for nested schema)
  • enable_https_traffic_only (Boolean) Require HTTPS for all traffic to the storage account.
  • failure_retries (Number) Number of extra polls to tolerate a transient failure status during provisioning before treating it as terminal. Overrides the resource's default; leave unset to use it.
  • is_hns_enabled (Boolean) Enable hierarchical namespace (Azure Data Lake Storage Gen2). Immutable after creation.
  • is_nfs_v3_enabled (Boolean) Enable NFS v3 protocol support (requires is_hns_enabled). Immutable after creation.
  • is_sftp_enabled (Boolean) Enable SFTP support (requires is_hns_enabled).
  • kind (String) Storage account kind. Immutable after creation.
  • minimum_tls_version (String) Minimum TLS version accepted for requests.
  • provisioner_type (String) Provisioner type. Defaults to DirectApiCall for Azure passthrough resources.
  • provisioner_version (String) Optional provisioner version.
  • sku_name (String) Redundancy/performance SKU (e.g. Standard_LRS, Standard_GRS, Premium_LRS). Immutable after creation.
  • tags (Map of String) Tags applied to the storage account. The platform adds its own managed duplocloud-ai-* tags server-side; those are filtered out of state so only your tags are managed by Terraform.
  • timeouts (Block, Optional) (see below for nested schema)

Read-Only

  • azure_resource_group_name (String) Azure resource group the storage account is created in. Derived from the linked resource group; not user-settable.
  • azure_resource_id (String) Full Azure resource ID (ARM ID) of the provisioned storage account.
  • created_at (String) Timestamp when the storage account was created (RFC 3339).
  • id (String) Composite resource identifier (workspace_id/id).
  • primary_blob_endpoint (String) Primary Blob service endpoint URL.
  • primary_file_endpoint (String) Primary File service endpoint URL.
  • primary_queue_endpoint (String) Primary Queue service endpoint URL.
  • primary_table_endpoint (String) Primary Table service endpoint URL.
  • private_endpoint_infos (Attributes List) Private endpoints connected to the storage account. (see below for nested schema)
  • provisioning_state (String) Azure provisioning state of the storage account (e.g. Succeeded).
  • scope_ids (List of String) Scope IDs linking this storage account to a cloud provider account. Inherited from the resource group; not user-settable.
  • status (String) Current provisioning status of the storage account.
  • storage_account_id (String) ID of this storage account, for reference by dependent resources.
  • updated_at (String) Timestamp when the storage account was last updated (RFC 3339).
  • version (Number) Version counter, incremented on each update.

Nested Schema for data_protection

Optional:

  • blob_soft_delete_retention_days (Number) Retention period (days) for soft-deleted blobs.
  • container_soft_delete_retention_days (Number) Retention period (days) for soft-deleted containers.
  • enable_blob_soft_delete (Boolean) Enable soft delete for blobs.
  • enable_container_soft_delete (Boolean) Enable soft delete for containers.
  • enable_file_share_soft_delete (Boolean) Enable soft delete for file shares.
  • enable_point_in_time_restore (Boolean) Enable point-in-time restore for block blobs (auto-enables versioning and blob soft delete).
  • enable_versioning (Boolean) Enable blob versioning.
  • file_share_soft_delete_retention_days (Number) Retention period (days) for soft-deleted file shares.
  • point_in_time_restore_retention_days (Number) Point-in-time restore window (days). Must be less than the blob soft-delete retention.

Nested Schema for timeouts

Optional:

  • create (String) A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).
  • delete (String) A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.
  • update (String) A string that can be parsed as a duration consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).

Nested Schema for private_endpoint_infos

Read-Only:

  • id (String) Private endpoint resource ID.
  • name (String) Private endpoint name.
  • provisioning_state (String) Provisioning state of the private endpoint.
  • status (String) Connection status of the private endpoint.

Import

Import is supported using the following syntax:

The terraform import command can be used, for example:

# Import an existing Azure storage account.
#  - WORKSPACE_ID is the ID of the workspace (e.g. 69b2aa30675718845bfe87a0)
#  - STORAGE_ACCOUNT_ID is the ID of the storage account (e.g. 6a2258e94703bc957a1b824e)
terraform import duploai_storage_account.mysa WORKSPACE_ID/STORAGE_ACCOUNT_ID
# Example:
# terraform import duploai_storage_account.mysa 69b2aa30675718845bfe87a0/6a2258e94703bc957a1b824e