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 temporarysecretfromgenerate_temp_credentialsAPI.exchange_username(String) Username for certificate exchange with remote PowerStore system. Required for PowerStore-to-PowerStore connections. Can be the admin username or a temporaryclient_idfromgenerate_temp_credentialsAPI.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 whentypeisUniversalanddata_connection_typeisFC. 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