Cette page explique comment configurer le peering pour le pool de stockage ONTAP dans Google Cloud NetApp Volumes.
L'appairage de clusters et de machines virtuelles de stockage (SVM) permet de connecter votre pool de stockage FlexUnified ONTAP à un autre cluster. Cela permet l'exécution de services tels que SnapMirror et FlexCache.
Utilisez le script peer_cluster.py pour accepter une offre et saisir une phrase secrète pour un pool en mode ONTAP. Pour en savoir plus, consultez Script d'appairage de clusters.
Choisir une procédure
Choisissez l'une des procédures de peering suivantes en fonction de votre configuration :
Peering hybride : vous migrez ou répliquez un pool en mode ONTAP vers un volume NetApp Volumes en mode par défaut (Standard, Premium, Extreme ou Flex Unified en mode par défaut). NetApp Volumes commence l'appairage à partir de la destination. Vous effectuez le peering sur le pool source en mode ONTAP.
Peering manuel : vous établissez vous-même le peering et vous n'utilisez pas de workflow de migration hybride ni de réplication externe. Sélectionnez un scénario :
Un pool en mode ONTAP et un cluster ONTAP externe sur site ou en dehors de NetApp Volumes.
Deux pools en mode ONTAP.
Pour en savoir plus sur les options de peering supplémentaires sur le cluster ONTAP externe, consultez la documentation NetApp ONTAP.
Fonctionnement de l'appairage de clusters sur un pool en mode ONTAP
Le processus d'appairage de clusters suit un workflow d'offre et d'acceptation :
Offre : un cluster lance le peering vers les adresses IC-LIF homologues et reçoit une phrase secrète.
Accepter : le cluster pair effectue le peering à l'aide des adresses IC-LIF et de la phrase secrète du cluster proposant.
Le proxy CLI ONTAP n'est pas interactif. La commande cluster peer create -generate-passphrase ne demande pas de saisie, vous pouvez donc exécuter l'offre sur un pool en mode ONTAP à l'aide de ontap_execute. Listez toutes les adresses IC-LIF distantes sous forme de valeur -peer-addrs séparée par une virgule. La commande cluster peer accept invite à saisir la phrase secrète. Cette étape échoue donc via le proxy. Utilisez peer_cluster.py lorsqu'un pool en mode ONTAP doit accepter une offre.
Pour appairer les clusters, utilisez l'un des scénarios suivants :
Scénario A (mode ONTAP et ONTAP externe) : exécutez
cluster peer create-generate-passphrasesur le pool en mode ONTAP à l'aide deontap_executeavec toutes les adresses IC-LIF homologues. L'administrateur ONTAP externe exécutecluster peer acceptà l'invite du cluster avec toutes les adresses IC-LIF en mode ONTAP et saisit la phrase secrète.Scénario B (deux pools en mode ONTAP) : exécutez
cluster peer create-generate-passphrasesur le pool A à l'aide deontap_execute, puis exécutezpeer_cluster.pyavecPEER_MODE=acceptsur le pool B.
Appairez la SVM en exécutant vserver peer accept à l'aide de ontap_execute sur le pool en mode ONTAP. Dans le scénario A, le cluster ONTAP externe exécute vserver peer create.
Méthodes de réplication nécessitant le peering
Les méthodes de réplication suivantes nécessitent le peering :
Toute source ONTAP vers le mode ONTAP Flex Unified (SnapMirror) : associez le pool en mode ONTAP.
Mode ONTAP Flex Unified vers n'importe quelle destination ONTAP (SnapMirror) : peering sur le pool en mode ONTAP.
Source en mode ONTAP vers NetApp Volumes en mode par défaut (migration de volumes ou réplication externe) : utilisez le peering hybride sur le pool source en mode ONTAP.
La réplication de volume en mode par défaut dans NetApp Volumes n'utilise pas l'appairage de clusters ONTAP.
Peering hybride
Utilisez cette section lorsque la source est un pool en mode ONTAP et que la destination est un volume en mode par défaut dans NetApp Volumes.
Fonctionnement de NetApp Volumes
Le workflow de peering hybride comprend les étapes suivantes :
Vous pouvez créer une migration de volumes ou une réplication externe sur le volume de destination dans la console Google Cloud ou à l'aide de Google Cloud CLI. Vous spécifiez le nom du cluster source en mode ONTAP, la SVM, le volume et les adresses IC-LIF sources.
Si le peering de cluster n'est pas encore établi, NetApp Volumes vérifie la connectivité à la destination, génère une phrase secrète et affiche les instructions de peering.
Vous devez effectuer les étapes de peering restantes sur votre pool source en mode ONTAP, car NetApp Volumes n'exécute pas de commandes automatisées sur votre pool source.
Vous ne pouvez pas inverser cet ordre. Vous devez d'abord créer la destination en mode par défaut.
Effectuer l'appairage de cluster sur la source en mode ONTAP
Récupérez la phrase secrète et les adresses IC-LIF de destination dans la console Google Cloud , dans l'onglet "Réplication" ou "Migration", ou à l'aide de Google Cloud CLI :
gcloud netapp volumes replications list --volume=DESTINATION_VOLUME --location=LOCATION \ --format="table(hybridPeeringDetails.command,hybridPeeringDetails.passphrase,hybridPeeringDetails.subnetIp)"
Dans le pool source en mode ONTAP, acceptez le peering que NetApp Volumes a proposé dans la destination. Configurez ontap_execute comme décrit dans Procédures courantes en mode ONTAP.
Définissez POOL_NAME et LOCATION pour le pool source. Répertoriez toutes les adresses IC-LIF de destination dans PEER_IC_LIF_IPS, puis exécutez peer_cluster.py avec PEER_MODE=accept :
export PROJECT_ID="myproject" export LOCATION="us-central1-a" export POOL_NAME="ontap-mode-source-pool" export PEER_MODE="accept" export PEER_IC_LIF_IPS="DESTINATION_IC_LIF_IP_1,DESTINATION_IC_LIF_IP_2" export PASSPHRASE="passphrase-from-gcnv-console" python3 peer_cluster.py
Vérifiez la configuration du pool source :
ontap_execute "cluster peer show"
Appairez la SVM sur la source en mode ONTAP.
Si NetApp Volumes ne termine pas l'appairage SVM automatiquement, il affiche une commande d'homologue vserver. Exécutez la commande à l'aide de ontap_execute ou acceptez le pair en attente :
ontap_execute "vserver peer accept -vserver SOURCE_SVM_NAME -peer-vserver PEER_SVM_NAME"
Vérifiez la configuration :
ontap_execute "vserver peer show"
Revenez au workflow hybride dans la console Google Cloud ou exécutez gcloud netapp volumes replications list pour vérifier que la réplication ou la migration sont en cours.
Peering manuel
Utilisez cette section lorsque vous établissez vous-même le peering sans workflow hybride, par exemple avant SnapMirror entre un pool en mode ONTAP et un cluster ONTAP externe, ou entre deux pools en mode ONTAP.
Avant de commencer
Remplissez les conditions préalables suivantes :
Vérifiez que les IC-LIF du pool en mode ONTAP atteignent les IC-LIF du cluster pair. Les IC-LIF des pools en mode ONTAP se trouvent dans l'espace IP
Gcnv, tandis que ceux des clusters ONTAP externes se trouvent dans l'espace IPDefault. Testez les ports ICMP et inter-clusters requis.Configurez ontap_execute avant de commencer.
Collectez le nom du cluster, le nom de la SVM et toutes les adresses IP IC-LIF des clusters pairs dans le pool en mode ONTAP. Indiquez une adresse par nœud, séparée par une virgule. Le nombre d'IC-LIF correspond au nombre de nœuds du cluster pair.
Communiquez le nom du cluster, le nom de la SVM et toutes les adresses IC-LIF de votre pool à l'administrateur du cluster pair.
Présentation
Pour associer manuellement vos clusters et vos SVM, procédez comme suit :
Rechercher des noms et des IC-LIF
Sur chaque pool en mode ONTAP, exécutez les commandes de recherche décrites dans Procédures courantes en mode ONTAP.
Listez les adresses IC-LIF, qui dépendent de la taille du pool, et fournissez-les à l'administrateur du cluster pair.
Valider la connectivité
Exécutez une commande ping pour associer les interfaces IC-LIF de votre pool à l'aide du flag -vserver Gcnv :
ontap_execute "network ping -vserver Gcnv -destination PEER_IC_LIF_IP -lif intercluster-1"
Corrigez les problèmes de routage ou de pare-feu avant de continuer. Si le ping échoue entre les pools, consultez Pourquoi vos NetApp Volumes ne peuvent pas accéder à Active Directory (et à d'autres réseaux derrière votre VPC) pour obtenir des conseils sur le VPC et le réseau partenaire.
Clusters de pairs
Pour appairer les clusters, utilisez l'un des scénarios suivants :
Scénario A : pool en mode ONTAP et ONTAP externe
Pour associer un pool en mode ONTAP à un cluster ONTAP externe, procédez comme suit :
Proposer sur le pool en mode ONTAP : exécutez la commande
cluster peer create -generate-passphraseà l'aide deontap_executeavec toutes les adresses IC-LIF homologues. Copiez la phrase secrète à partir du résultat de la commande.Accepter sur le système ONTAP externe : l'administrateur du cluster homologue exécute la commande
cluster peer acceptà l'invite ONTAP avec toutes les adresses IC-LIF en mode ONTAP et saisit la phrase secrète.
Pour proposer le peering sur le pool en mode ONTAP :
ontap_execute "cluster peer create -ipspace Gcnv -peer-addrs PEER_IC_LIF_1,PEER_IC_LIF_2 -generate-passphrase"
Listez toutes les adresses IC-LIF du cluster pair dans l'indicateur -peer-addrs, séparées par des virgules. Ajoutez des adresses supplémentaires si le cluster pair comporte plus de deux nœuds.
ONTAP affiche la phrase secrète dans le résultat de la commande sous Passphrase:. Copiez immédiatement la phrase secrète. ONTAP vous avertit qu'il ne pourra plus l'afficher.
Si la commande échoue ou si le résultat n'inclut pas de phrase secrète, utilisez peer_cluster.py avec PEER_MODE=offer à la place. Pour en savoir plus, consultez la page Script d'appairage de clusters.
Copiez la phrase secrète et envoyez-la à l'administrateur ONTAP externe. Acceptez l'offre pendant la période de validité de la phrase secrète (une heure par défaut).
Acceptez l'offre sur le cluster ONTAP externe à l'invite du cluster pair en listant toutes les adresses IC-LIF en mode ONTAP :
cluster peer accept -ipspace Default -peer-addrs ONTAP_MODE_IC_LIF_1,ONTAP_MODE_IC_LIF_2
Saisissez la phrase secrète lorsque ONTAP vous y invite. Incluez toutes les adresses IC-LIF du pool en mode ONTAP.
Vérifiez la configuration du pool en mode ONTAP :
ontap_execute "cluster peer show"
Scénario B : Deux pools en mode ONTAP
Pour associer deux pools en mode ONTAP, procédez comme suit :
Offre sur le pool A : exécutez la commande
cluster peer create -generate-passphraseen utilisantontap_executesur le pool A. Listez toutes les adresses IC-LIF du pool B dans-peer-addrs. Copiez la phrase secrète.Accepter sur le pool B : exécutez
peer_cluster.pyavecPEER_MODE=acceptsur le pool B et listez toutes les adresses IC-LIF du pool A dansPEER_IC_LIF_IPS.
Offre sur le pool A :
ontap_execute "cluster peer create -ipspace Gcnv -peer-addrs POOL_B_IC_LIF_1,POOL_B_IC_LIF_2 -generate-passphrase"
Listez chaque IC-LIF du pool B, séparé par une virgule. Ajoutez des adresses supplémentaires lorsque le pool B comporte plus de deux nœuds. Copiez la valeur Passphrase: à partir du résultat de la commande.
Si la commande échoue, utilisez peer_cluster.py avec PEER_MODE=offer sur le pool A.
Accepter sur le pool B :
export PROJECT_ID="myproject" export LOCATION="us-west1-b" export POOL_NAME="pool-b" export PEER_MODE="accept" export PEER_IC_LIF_IPS="POOL_A_IC_LIF_1,POOL_A_IC_LIF_2" export PASSPHRASE="passphrase-from-pool-a" python3 peer_cluster.py
Listez chaque IC-LIF du pool A dans PEER_IC_LIF_IPS.
Vérifiez la configuration de chaque pool :
ontap_execute "cluster peer show"
Vérifiez que la disponibilité est "Disponible" et que l'authentification est "OK".
SVM de pairs
Une fois le peering de cluster réussi, créez un pair SVM pour SnapMirror. Si vous avez besoin de FlexCache, ajoutez-le à l'indicateur -applications.
Scénario A : pool en mode ONTAP et ONTAP externe
Pour associer un pool en mode ONTAP à un cluster ONTAP externe, procédez comme suit :
Créer sur ONTAP externe : l'administrateur du cluster pair exécute la commande
vserver peer createà l'invite ONTAP.Acceptez sur le pool en mode ONTAP : exécutez la commande
vserver peer accepten utilisantontap_execute.
Créez le pair sur le cluster ONTAP externe à l'invite du cluster pair :
vserver peer create -vserver PEER_SVM_NAME -peer-vserver ONTAP_MODE_SVM_NAME \ -peer-cluster ONTAP_MODE_CLUSTER_NAME -applications snapmirror
Acceptez le pair sur le pool en mode ONTAP :
ontap_execute "vserver peer accept -vserver ONTAP_MODE_SVM_NAME -peer-vserver PEER_SVM_NAME"
Scénario B : Deux pools en mode ONTAP
Pour associer deux pools en mode ONTAP, procédez comme suit :
Créez sur le pool A : exécutez la commande
vserver peer createen utilisantontap_executesur le pool A (oupeer_svm.pysi la commande create n'est pas disponible).Accepter sur le pool B : exécutez la commande
vserver peer accepten utilisantontap_executesur le pool B.
Créez le pair sur le pool A :
ontap_execute "vserver peer create -vserver POOL_A_SVM -peer-vserver POOL_B_SVM -peer-cluster POOL_B_CLUSTER_NAME -applications snapmirror"
Acceptez le pair dans le pool B :
ontap_execute "vserver peer accept -vserver POOL_B_SVM -peer-vserver POOL_A_SVM"
Ne créez pas le même pair SVM dans les deux pools.
Vérifier l'appairage
Pour vérifier l'appairage sur le pool en mode ONTAP :
ontap_execute "cluster peer show" ontap_execute "vserver peer show"
Vérifiez que la disponibilité du pair de cluster est "Disponible" et que l'état du pair SVM est "Appairé".
Pour le scénario B, répétez la procédure sur le deuxième pool. L'administrateur ONTAP externe peut vérifier la configuration en exécutant cluster peer show et vserver peer show sur le cluster pair.
Lorsqu'il n'existe aucun pair de cluster, la commande cluster peer show renvoie que l'entrée n'existe pas.
Supprimer l'appairage
Supprimez les pairs SVM avant les pairs de cluster.
Pour supprimer un pair SVM sur un pool, supprimez-le pour supprimer la relation des deux côtés lorsque les pools sont accessibles.
ontap_execute "vserver peer delete -vserver LOCAL_SVM_NAME -peer-vserver PEER_SVM_NAME"
Le proxy CLI ONTAP n'est pas compatible avec la suppression des pairs de cluster. Pour supprimer un pair de cluster, supprimez-le par UUID à l'aide de l'API REST.
Commencez par lister les pairs pour trouver l'UUID :
TOKEN=$(gcloud auth print-access-token) curl -s -H "Authorization: Bearer $TOKEN" \ "https://netapp.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/storagePools/POOL_NAME/ontap/api/cluster/peers"
Supprimez chaque UUID renvoyé :
curl -s -X DELETE -H "Authorization: Bearer $TOKEN" \ "https://netapp.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/storagePools/POOL_NAME/ontap/api/cluster/peers/PEER_UUID"
Répétez ce processus sur les deux pools en mode ONTAP dans le scénario B. Pour le scénario A, exécutez cluster peer delete sur le cluster ONTAP externe si nécessaire.
Script d'appairage de clusters
Enregistrez le fichier suivant sous le nom peer_cluster.py. Utilisez-le sur un pool en mode ONTAP lorsque ce pool doit accepter une offre d'appairage de cluster (PEER_MODE=accept). L'appairage hybride et le scénario B utilisent le mode accept. N'utilisez le mode offer (PEER_MODE=offer) que si cluster peer create -generate-passphrase échoue via ontap_execute ou ne renvoie pas de phrase secrète. Ce script nécessite Python 3.8 ou version ultérieure, ainsi que la bibliothèque standard Python.
#!/usr/bin/env python3
"""Cluster peer offer or accept on an ONTAP-mode pool through the NetApp Volumes REST proxy."""
import json
import os
import subprocess
import sys
import time
import urllib.error
import urllib.request
REQUIRED = ("PROJECT_ID", "LOCATION", "POOL_NAME", "PEER_MODE")
missing = [name for name in REQUIRED if not os.environ.get(name)]
if missing:
sys.exit(f"Set required environment variables: {', '.join(missing)}")
PROJECT_ID = os.environ["PROJECT_ID"]
LOCATION = os.environ["LOCATION"]
POOL_NAME = os.environ["POOL_NAME"]
PEER_MODE = os.environ["PEER_MODE"].lower()
POLL_INTERVAL = int(os.environ.get("POLL_INTERVAL", "10"))
API_ROOT = (
f"https://netapp.googleapis.com/v1/projects/{PROJECT_ID}"
f"/locations/{LOCATION}/storagePools/{POOL_NAME}/ontap/api"
)
def parse_ip_list(value: str) -> list:
return [ip.strip() for ip in value.replace("#", ",").split(",") if ip.strip()]
def get_access_token() -> str:
return subprocess.check_output(
["gcloud", "auth", "print-access-token"], text=True
).strip()
def api_request(method: str, path: str, body=None) -> dict:
headers = {
"Authorization": f"Bearer {get_access_token()}",
"Content-Type": "application/json",
}
data = json.dumps(body).encode() if body is not None else None
req = urllib.request.Request(f"{API_ROOT}{path}", data=data, headers=headers, method=method)
try:
with urllib.request.urlopen(req) as resp:
return json.loads(resp.read())
except urllib.error.HTTPError as exc:
detail = exc.read().decode()
sys.exit(f"API request failed ({exc.code}): {detail}")
def job_record(response: dict) -> dict:
return response.get("rawResponse") or response.get("body") or response
def job_state(response: dict) -> str:
return job_record(response).get("state", "")
def format_job_error(response: dict) -> str:
record = job_record(response)
message = record.get("message") or record.get("error", {}).get("message")
if message:
return message
return json.dumps(response, indent=2)
def wait_for_job(job_uuid: str) -> None:
print(f"ONTAP job UUID: {job_uuid}")
while True:
response = api_request("GET", f"/cluster/jobs/{job_uuid}")
state = job_state(response)
print(f" Job state: {state}")
if state == "success":
return
if state in ("failure", "error"):
sys.exit(f"Job failed: {format_job_error(response)}")
time.sleep(POLL_INTERVAL)
def extract_passphrase(response: dict) -> str:
body = response.get("body") or response.get("rawResponse") or {}
records = body.get("records") or []
if records:
auth = records[0].get("authentication") or {}
if auth.get("passphrase"):
return auth["passphrase"]
auth = body.get("authentication") or {}
return auth.get("passphrase", "")
def build_offer_body() -> dict:
if not os.environ.get("PEER_IC_LIF_IPS"):
sys.exit("Set PEER_IC_LIF_IPS for offer mode")
payload = {
"remote": {"ip_addresses": parse_ip_list(os.environ["PEER_IC_LIF_IPS"])},
"authentication": {"generate_passphrase": True},
"ipspace": {"name": os.environ.get("IPSPACE", "Gcnv")},
}
expiry = os.environ.get("EXPIRY_TIME")
if expiry:
payload["authentication"]["expiry_time"] = expiry
local_svm = os.environ.get("LOCAL_SVM_NAME")
if local_svm:
payload["initial_allowed_svms"] = [{"name": local_svm}]
apps = os.environ.get("PEER_APPLICATIONS", "snapmirror")
payload["peer_applications"] = [a.strip() for a in apps.split(",") if a.strip()]
encryption = os.environ.get("ENCRYPTION_PROPOSED")
if encryption:
payload["encryption"] = {"proposed": encryption}
return {"body": payload}
def build_accept_body() -> dict:
for name in ("PEER_IC_LIF_IPS", "PASSPHRASE"):
if not os.environ.get(name):
sys.exit(f"Set {name} for accept mode")
return {
"body": {
"remote": {"ip_addresses": parse_ip_list(os.environ["PEER_IC_LIF_IPS"])},
"authentication": {"passphrase": os.environ["PASSPHRASE"]},
"ipspace": {"name": os.environ.get("IPSPACE", "Gcnv")},
}
}
def main() -> None:
if PEER_MODE == "offer":
body = build_offer_body()
print("Creating cluster peer offer...")
elif PEER_MODE == "accept":
body = build_accept_body()
print("Accepting cluster peer offer...")
else:
sys.exit("PEER_MODE must be 'offer' or 'accept'")
response = api_request("POST", "/cluster/peers?return_records=true", body)
job = (response.get("body") or {}).get("job") or response.get("job")
if job and job.get("uuid"):
wait_for_job(job["uuid"])
if PEER_MODE == "offer":
passphrase = extract_passphrase(response)
if passphrase:
print(f"\nPassphrase (provide to the peer pool): {passphrase}")
else:
print(json.dumps(response, indent=2))
if __name__ == "__main__":
main()
Variables d'environnement facultatives : EXPIRY_TIME, PEER_APPLICATIONS (par défaut snapmirror), ENCRYPTION_PROPOSED et IPSPACE (par défaut Gcnv).
Script d'appairage SVM (solution de secours)
N'utilisez peer_svm.py que lorsque vserver peer create n'est pas disponible via le proxy de l'interface de ligne de commande ONTAP. Utilisez plutôt vserver peer create et vserver peer accept comme décrit dans SVM pairs.
#!/usr/bin/env python3
"""Create an SVM peer on an ONTAP-mode pool (fallback when vserver peer create is unavailable)."""
import json
import os
import subprocess
import sys
import time
import urllib.error
import urllib.request
REQUIRED = (
"PROJECT_ID", "LOCATION", "POOL_NAME",
"LOCAL_SVM_NAME", "PEER_CLUSTER_NAME", "PEER_SVM_NAME",
)
missing = [name for name in REQUIRED if not os.environ.get(name)]
if missing:
sys.exit(f"Set required environment variables: {', '.join(missing)}")
PROJECT_ID = os.environ["PROJECT_ID"]
LOCATION = os.environ["LOCATION"]
POOL_NAME = os.environ["POOL_NAME"]
LOCAL_SVM_NAME = os.environ["LOCAL_SVM_NAME"]
PEER_CLUSTER_NAME = os.environ["PEER_CLUSTER_NAME"]
PEER_SVM_NAME = os.environ["PEER_SVM_NAME"]
APPLICATIONS = [
app.strip()
for app in os.environ.get("APPLICATIONS", "snapmirror").split(",")
if app.strip()
]
POLL_INTERVAL = int(os.environ.get("POLL_INTERVAL", "10"))
API_ROOT = (
f"https://netapp.googleapis.com/v1/projects/{PROJECT_ID}"
f"/locations/{LOCATION}/storagePools/{POOL_NAME}/ontap/api"
)
def get_access_token() -> str:
return subprocess.check_output(
["gcloud", "auth", "print-access-token"], text=True
).strip()
def api_request(method: str, path: str, body=None) -> dict:
headers = {
"Authorization": f"Bearer {get_access_token()}",
"Content-Type": "application/json",
}
data = json.dumps(body).encode() if body is not None else None
req = urllib.request.Request(f"{API_ROOT}{path}", data=data, headers=headers, method=method)
try:
with urllib.request.urlopen(req) as resp:
return json.loads(resp.read())
except urllib.error.HTTPError as exc:
sys.exit(f"API request failed ({exc.code}): {exc.read().decode()}")
def format_job_error(response: dict) -> str:
record = response.get("rawResponse") or response.get("body") or response
message = record.get("message") or record.get("error", {}).get("message")
return message or json.dumps(response, indent=2)
def wait_for_job(job_uuid: str) -> None:
while True:
response = api_request("GET", f"/cluster/jobs/{job_uuid}")
record = response.get("rawResponse") or response.get("body") or response
state = record.get("state", "")
print(f" Job state: {state}")
if state == "success":
print("SVM peer relationship created.")
return
if state in ("failure", "error"):
sys.exit(f"Job failed: {format_job_error(response)}")
time.sleep(POLL_INTERVAL)
def main() -> None:
body = {
"body": {
"svm": {"name": LOCAL_SVM_NAME},
"peer": {
"cluster": {"name": PEER_CLUSTER_NAME},
"svm": {"name": PEER_SVM_NAME},
},
"applications": APPLICATIONS,
}
}
response = api_request("POST", "/svm/peers?return_records=true", body)
job = (response.get("body") or {}).get("job") or response.get("job")
if not job or not job.get("uuid"):
print(json.dumps(response, indent=2))
return
wait_for_job(job["uuid"])
if __name__ == "__main__":
main()
Étapes suivantes
Créez des relations SnapMirror avec
snapmirror createetsnapmirror initializesur le pool en mode ONTAP. Pour en savoir plus, consultez SnapMirror.Créez des volumes FlexCache après avoir établi un peering avec l'application FlexCache.
Pour les workflows hybrides, revenez à Créer une réplication externe ou Créer une migration de volume.