本页介绍了 ONTAP 模式任务所需的常见程序。由于许多 Flex Unified ONTAP 模式存储池任务使用相同的 Google Cloud CLI 和 API 前提条件,因此您只需完成一次此设置,然后即可继续执行特定任务。
准备工作
请完成以下步骤:
在类 Unix 环境(Linux、macOS 或适用于 Linux 的 Windows 子系统 [WSL])中运行命令示例。
ontap_executeshell 函数和其他 bash 示例需要 bash。如果您的工作站不提供类 Unix shell,请使用 Google Cloud Shell,其中包含 bash 和 Google Cloud CLI。安装 Google Cloud CLI 559.0.0 版或更高版本并进行身份验证:
gcloud auth login gcloud config set project PROJECT_ID
收集您管理的每个池的以下值:
POOL_NAME:存储池名称。LOCATION:池的位置。PROJECT_ID:项目 ID,如果您已在 Google Cloud CLI 配置中设置该 ID,则此参数为可选参数。
设置 ontap_execute
设置 POOL_NAME 和 LOCATION,然后定义一个 shell 函数,以通过 Google Cloud CLI ONTAP CLI 代理运行 ONTAP 命令。该函数会在每次调用时验证变量。PROJECT_ID 使用 Google Cloud CLI 配置中的默认值。
如需定义 ontap_execute 函数,请执行以下操作:
export POOL_NAME="mypool"
export LOCATION="us-central1-a"
ontap_execute() {
: "${POOL_NAME:?Set POOL_NAME to your ONTAP-mode storage pool name}"
: "${LOCATION:?Set LOCATION to the pool zone (for example us-central1-a) or region (for example us-central1)}"
local project="${PROJECT_ID:-$(gcloud config get-value project 2>/dev/null)}"
if [[ -z "${project}" ]]; then
echo "Set PROJECT_ID or run: gcloud config set project PROJECT_ID" >&2
return 1
fi
gcloud netapp storage-pools execute "${POOL_NAME}" "$1" \
--project="${project}" \
--location="${LOCATION}"
}
以下示例使用 ontap_execute "ONTAP-COMMAND" 在由 POOL_NAME 和 LOCATION 标识的池上运行指定的 ONTAP 命令。在运行每个命令之前,请替换占位值(例如 SVM_NAME)。
如果某个程序涉及多个池,请在每次调用 ontap_execute 之前更改 POOL_NAME 和 LOCATION。
使用代理运行 ONTAP CLI 命令
ONTAP CLI 代理可让您访问存储池的大部分 ONTAP 命令。代理不是交互式的,因此需要输入口令、密码或其他输入的命令将失败。
对于常规的非互动命令,请使用 ontap_execute,如程序部分所示。
使用 REST API 代理执行交互式步骤
当 ONTAP 命令需要交互式输入时,请改用 ONTAP REST API 调用的 Google 代理 API。本文档包含 Python 示例。通过代理发送的 REST 请求在 ONTAP API 载荷周围使用 body 信封。
查找集群和 SVM 名称
如需在 ONTAP 模式池中查找集群和 SVM 名称,请执行以下操作:
ontap_execute "cluster identity show" ontap_execute "vserver show" ontap_execute "network interface show -role intercluster"
记下 cluster identity show 中的集群名称和 vserver show 中的数据 SVM 名称。用于集群间流量的 IC-LIF 位于 IPspace Gcnv 中。IC-LIF 的 Vserver 列显示 Gcnv。IC-LIF 名称为 intercluster-1、intercluster-2 等,每个节点一个名称。
过程
以下程序包含常规的非交互式命令: