powerstore_remote_system (Resource)

This resource is used to manage remote system relationships on PowerStore. A remote system represents a connection to another storage system for replication or data import. For PowerStore-to-PowerStore connections, only management_address and data_network_latency are required. Non-PowerStore remote systems require additional parameters such as remote_username, remote_password, and type. Running terraform destroy will delete the remote system relationship.

Example Usage

/*
Copyright (c) 2025 Dell Inc., or its subsidiaries. All Rights Reserved.

Licensed under the Mozilla Public License Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://mozilla.org/MPL/2.0/


Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

# Commands to run this tf file : terraform init && terraform plan && terraform apply
# Create, Update, Delete is supported for this resource
# To import, check import.sh for more info
# management_address is the required attribute to create
# description and data_network_latency are the optional attributes
# For PowerStore-to-PowerStore connections, only management_address and data_network_latency are required
# For non-PowerStore remote systems, additional parameters like type, remote_username, remote_password are required

# Example: PowerStore-to-PowerStore remote system (TCP)
resource "powerstore_remote_system" "ps_to_ps" {
  management_address   = "100.1.1.1"
  description          = "Remote PowerStore for replication"
  data_network_latency = "Low"
}

# Example: Universal FC remote system
resource "powerstore_remote_system" "fc_universal" {
  management_address   = "100.2.2.2"
  description          = "Universal FC remote system for block replication"
  type                 = "Universal"
  data_connection_type = "FC"
  data_network_latency = "Low"
  universal_details = {
    fc_targets = [
      {
        wwnn = "58:cc:f0:98:49:21:07:00"
        wwpn = "58:cc:f0:98:49:21:07:01"
      },
      {
        wwnn = "58:cc:f0:98:49:21:07:00"
        wwpn = "58:cc:f0:98:49:21:07:02"
      }
    ]
  }
}

Schema

Required

  • management_address (String) Management address of the remote system instance. IPv4, IPv6, and FQDN are supported for PowerStore remote systems.

Optional

  • data_connection_type (String) Data connection type. Valid values: iSCSI, TCP, FC, DD_Boost.
  • data_network_latency (String) Network latency for the remote system. Valid values: Low, High.
  • description (String) User-specified description of the remote system.
  • exchange_password (String, Sensitive) Password for certificate exchange with remote PowerStore system. Required for PowerStore-to-PowerStore connections. Can be the admin password or a temporary secret from generate_temp_credentials API.
  • exchange_username (String) Username for certificate exchange with remote PowerStore system. Required for PowerStore-to-PowerStore connections. Can be the admin username or a temporary client_id from generate_temp_credentials API.
  • iscsi_addresses (List of String) iSCSI target IP addresses for the data connection. Required for non-PowerStore remote systems with iSCSI.
  • name (String) User-specified name of the remote system. Used only for non-PowerStore systems.
  • remote_password (String, Sensitive) Password used to access the remote system. Used only for PowerProtect DD and non-PowerStore systems.
  • remote_username (String) Username used to access the remote system. Used only for PowerProtect DD and non-PowerStore systems.
  • type (String) Type of the remote system. For PowerStore-to-PowerStore, this is auto-detected.
  • universal_details (Attributes) FC target configuration for Universal-type remote systems. Required when type is Universal and data_connection_type is FC. Contains FC target WWNN/WWPN pairs for manual FC target specification. (see below for nested schema)

Read-Only

  • capabilities (List of String) List of supported remote protection capabilities.
  • data_connection_state (String) Data connection state of the remote system.
  • fc_target_wwns (List of String) FC target World Wide Names discovered for the data connection. Populated by the system after creation.
  • id (String) Unique identifier of the remote system.
  • serial_number (String) Serial number of the remote system.
  • state (String) Current state of the remote system.
  • version (String) Version of the remote system.

Nested Schema for universal_details

Required:

  • fc_targets (Attributes List) List of FC targets with World Wide Node Name and World Wide Port Name pairs. (see below for nested schema)

Nested Schema for universal_details.fc_targets

Required:

  • wwpn (String) World Wide Port Name of the FC target.

Optional:

  • wwnn (String) World Wide Node Name of the FC target.

Import

Import is supported using the following syntax:

#Copyright (c) 2025 Dell Inc., or its subsidiaries. All Rights Reserved.
#
#Licensed under the Mozilla Public License Version 2.0 (the "License");
#you may not use this file except in compliance with the License.
#You may obtain a copy of the License at
#
#    http://mozilla.org/MPL/2.0/
#
#
#Unless required by applicable law or agreed to in writing, software
#distributed under the License is distributed on an "AS IS" BASIS,
#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#See the License for the specific language governing permissions and
#limitations under the License.


# Below are the steps to import remote system:
# Step 1 - To import a remote system, we need the id of that remote system
# Step 2 - To check the id of the remote system, we can make GET request to remote_system endpoint.
#          eg. https://100.1.1.1/api/rest/remote_system which will return list of all remote system ids.
# Step 3 - Add empty resource block in tf file.
# eg.
# resource "powerstore_remote_system" "resource_block_name" {
#   management_address = "100.1.1.1"
#   description        = "Imported remote system"
#   data_network_latency = "Low"
# }
# Step 4 - Execute the command: terraform import "powerstore_remote_system.resource_block_name" "id_of_the_remote_system"
#          (resource_block_name must be taken from step 3 and id must be taken from step 2)
# Step 5 - After successful execution of the command, check the state file