netapp.ontap.na_ontap_snapmirror 模块 – NetApp ONTAP 或 ElementSW 管理 SnapMirror
注意
此模块是 netapp.ontap 集合(版本 22.13.0)的一部分。
如果您正在使用 ansible
包,您可能已经安装了这个集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install netapp.ontap
。您需要其他要求才能使用此模块,详情请参阅要求。
要在 playbook 中使用它,请指定:netapp.ontap.na_ontap_snapmirror
。
netapp.ontap 2.7.0 中的新增功能
概要
为 ONTAP/ONTAP 创建/删除/更新/初始化/中断/重新同步/恢复 SnapMirror 卷/vserver 关系
这包括 SVM 复制,也称为 vserver DR
创建/删除/更新/初始化 ElementSW 和 ONTAP 之间的 SnapMirror 卷关系
修改 ONTAP/ONTAP 和 ElementSW/ONTAP 的 SnapMirror 关系的计划
ElementSW 到 ONTAP 关系或反之亦然的前提条件是在 ElementSW UI 中为 ONTAP 集群建立 SnapMirror 端点
ElementSW 到 ONTAP 关系或反之亦然的前提条件是在 ElementSW 卷中启用 SnapMirror
对于创建 SnapMirror ElementSW/ONTAP 关系,应存在现有的 ONTAP/ElementSW 关系
如果
relationship_state=active
并且 snapmirror 关系的当前镜像状态已中断,则执行重新同步如果
relationship_state=active
,当前 snapmirror 关系状态为已静默,并且镜像状态为已镜像,则执行恢复如果
relationship_type=restore
,则执行还原,并且在此任务期间不会执行其他操作
要求
执行此模块的主机需要以下要求。
Ansible 2.9 或更高版本 - 建议使用 2.12 或更高版本。
Python3 - 建议使用 3.9 或更高版本。
当使用 ZAPI 时,建议使用 netapp-lib 2018.11.13 或更高版本(使用 'pip install netapp-lib' 安装),强烈建议使用 netapp-lib 2020.3.12,因为它为连接问题提供了更好的错误报告。
物理或虚拟集群 Data ONTAP 系统,这些模块支持 Data ONTAP 9.1 及更高版本,REST 支持需要 ONTAP 9.6 或更高版本。
参数
参数 |
注释 |
---|---|
SSL 客户端证书文件 (.pem) 的路径。 不支持 python 2.6。 |
|
一个可选参数,用于从中止或失败的还原操作中恢复。 任何临时 RST 关系都会从目标 Vserver 中删除。 仅支持 ZAPI。 选项
|
|
SnapMirror 关系的类型。 elementsw_ontap 或 ontap_elementsw 的前提条件是 ElementSW 卷应将 enableSnapmirror 选项设置为 true。 对于使用 ontap_elementsw,应该存在 elementsw_ontap snapmirror 关系。 选项
|
|
需要 ONTAP 9.7 或更高版本。 如果启用并且存在 destination_volume 或 destination_path 包含卷名称,则创建目标卷。 为 SVM DR 创建并对等目标 vserver。 |
|
是否创建目标卷或 vserver。 如果存在任何其他子选项,则会自动启用此选项。 选项
|
|
与目标端点关联的存储服务。 |
|
是否使用存储服务创建目标端点。 选项
|
|
是否在目标端点上强制执行存储服务性能。 选项
|
|
此卷端点的性能服务级别 (PSL)。 选项
|
|
云分层策略。 |
|
云分层策略。 选项
|
|
允许在 FabricPool 聚合上配置目标端点卷。 仅支持 FlexVol 卷、FlexGroup 卷和一致性组端点。 选项
|
|
需要 ONTAP 9.7 或更高版本。 创建 SVM DR 的目标 vserver 或目标卷时必需。 自 21.2.0 版本起已弃用,请使用 destination_endpoint 和 cluster。 |
|
SnapMirror 关系的 目标端点。 |
|
需要 ONTAP 9.7 或更高版本。 创建 SVM DR 的目标 vserver 或目标卷时必需。 |
|
需要 ONTAP 9.8 或更高版本。 一致性组端点的必需属性。指定一致性组的 FlexVol 卷列表。 |
|
需要 ONTAP 9.8 或更高版本。 可选属性,用于指定 SVM 的 IPSpace。 |
|
关系的 目标端点。 格式为 <vserver:volume>、<vserver:>、<vserver:/cg/cg_name> |
|
SVM 的名称。不确定何时需要此项。 |
|
指定 SnapMirror 关系的 目标端点。 自 21.2.0 版本起已弃用,请使用 destination_endpoint 和 path。 |
|
指定 SnapMirror 的 目标卷的名称。 自 21.2.0 版本起已弃用,请使用 source_endpoint 和 path。 |
|
SnapMirror 的 目标 vserver 的名称。 自 21.2.0 版本起已弃用,请使用 destination_endpoint 和 path,或 svm。 |
|
启用或禁用新功能。 这可以用于启用实验性功能或禁用破坏向后兼容性的新功能。 支持的键和值如有更改,恕不另行通知。未知键将被忽略。 |
|
在使用 REST 时覆盖集群 ONTAP 版本。 如果版本与目标集群不匹配,则行为未定义。 当由于权限问题而无法读取集群版本时,这可以作为一种解决方法。请参阅https://github.com/ansible-collections/netapp.ontap/wiki/Known-issues。 这应采用 9.10 或 9.10.1 的形式,每个元素都是整数。 当 使用 ZAPI 时将被忽略。 |
|
ONTAP 实例的主机名或 IP 地址。 |
|
使用此端口覆盖默认端口(80 或 443) |
|
启用和禁用 https。 当使用 REST 时将被忽略,因为只支持 https。 当使用 SSL 证书身份验证时将被忽略,因为它需要 SSL。 选项
|
|
指定将源 SVM 的哪个配置复制到目标 SVM。 此属性仅适用于策略类型为“async”的 SVM 数据保护。 仅支持 REST,需要 ONTAP 9.11.1 或更高版本。 选项
|
|
指定是否将源 Vserver 的身份复制到目标 Vserver。 如果此参数设置为 true,则源 Vserver 的配置也将被复制到目标。 如果参数设置为 false,则只有源 Vserver 的卷和 RBAC 配置被复制到目标。 选项
|
|
指定是否初始化 SnapMirror 关系。 默认值为 True,可以显式设置为 False 以避免初始化 SnapMirror 关系。 选项
|
|
SSL 客户端密钥文件的路径。 |
|
指定数据传输的上限,单位为千字节/秒。 默认值为 unlimited,可以显式设置为 0 表示 unlimited。 |
|
要使用的 ontap api 版本 |
|
指定用户的密码。 |
|
对等系统的 IP 地址和连接选项。 如果未指定任何这些选项,则使用相应的源选项。 |
|
SSL 客户端证书文件 (.pem) 的路径。 |
|
在使用 REST 时覆盖集群 ONTAP 版本。 如果版本与目标集群不匹配,则行为未定义。 当由于权限问题而无法读取集群版本时,这可以作为一种解决方法。请参阅https://github.com/ansible-collections/netapp.ontap/wiki/Known-issues。 这应采用 9.10 或 9.10.1 的形式,每个元素都是整数。 当 使用 ZAPI 时将被忽略。 |
|
ONTAP 实例的主机名或 IP 地址。 |
|
使用此端口覆盖默认端口(80 或 443) |
|
启用和禁用 https。 选项
|
|
SSL 客户端密钥文件的路径。 |
|
要使用的 ontap api 版本 |
|
指定用户的密码。 |
|
如果目标系统支持该模块所需的所有资源和属性,则使用 REST API。否则将恢复为 ZAPI。 always – 将始终使用 REST API never – 将始终使用 ZAPI auto – 将尝试使用 REST API |
|
使用基本身份验证时的用户名。 |
|
如果设置为 这应仅在个人控制的站点上使用自签名证书时设置为 选项
|
|
指定应用于此关系的 SnapMirror 策略的名称。 |
|
如果 relationship-info-only 设置为 true,则仅删除关系信息。 选项
|
|
指定是中断 SnapMirror 关系还是建立 SnapMirror 关系。 必须存在状态才能使用此选项。 选项
|
|
指定 SnapMirror 关系的类型。 对于“restore”,除非指定了“source_snapshot”,否则将还原源卷上的最新快照副本。 还原 SnapMirror 不是幂等的。 使用 REST 时,仅支持“extended_data_protection”和“restore”。 选项
|
|
指定当前计划的名称,该计划用于更新 SnapMirror 关系。 创建时可选,可修改。 使用 REST 时,此选项需要 ONTAP 9.11.1 或更高版本。 |
|
需要 ONTAP 9.7 或更高版本。 需要在源 SVM 和目标 SVM 之间创建对等关系。 自 21.2.0 版本起已弃用,请使用 source_endpoint 和 cluster。 |
|
SnapMirror 关系的 源端点。 |
|
需要 ONTAP 9.7 或更高版本。 需要在源 SVM 和目标 SVM 之间创建对等关系。 |
|
需要 ONTAP 9.8 或更高版本。 一致性组端点的必需属性。指定一致性组的 FlexVol 卷列表。 |
|
需要 ONTAP 9.8 或更高版本。 可选属性,用于指定 SVM 的 IPSpace。 |
|
关系的 源端点。 如果源是 ONTAP 卷(FlexVol 或 FlexGroup),则格式应为 <vserver:volume> 对于 SVM DR,格式应为 <vserver:> 对于一致性组,格式应为 <vserver:/cg/cg_name> 如果源是 ElementSW 卷,则格式应为 <Element_SVIP:/lun/Element_VOLUME_ID> 如果源是 ElementSW 卷,则应启用该卷的 SnapMirror。 |
|
SVM 的名称。不确定何时需要此项。 |
|
已弃用 - 请使用 ONTAP 或 ElementSW 集群的源主机名或管理 IP 地址。 如果存在,当状态为 absent 时,关系会在源处释放,然后再在目标处删除。 建议始终在删除之前释放,因此如果知道源主机名,请确保存在此参数。 |
|
已弃用 - 请使用 ONTAP 或 ElementSW 集群的源密码。 如果与目标密码相同,则可选。 |
|
指定 SnapMirror 关系的 源端点。 如果源是 ONTAP 卷,则格式应为 <[vserver:][volume]> 或 <[[cluster:]//vserver/]volume> 如果源是 ElementSW 卷,则格式应为 <[Element_SVIP]:/lun/[Element_VOLUME_ID]> 如果源是 ElementSW 卷,则应启用该卷的 SnapMirror。 自 21.2.0 版本起已弃用,请使用 source_endpoint 和 path。 |
|
指定要从源还原的快照。 |
|
已弃用 - 请使用 ONTAP 或 ElementSW 集群的源用户名。 如果与目标用户名相同,则可选。 |
|
指定 SnapMirror 的 源卷的名称。 自 21.2.0 版本起已弃用,请使用 source_endpoint 和 path。 |
|
SnapMirror 的 源 vserver 的名称。 自 21.2.0 版本起已弃用,请使用 source_endpoint 和 path,或 svm。 |
|
指定的 关系是否应该存在。 选项
|
|
当传输正在进行时(例如在初始化之后)要等待多长时间。单位为秒。 默认值: |
|
指定仅当 SnapMirror 关系已存在且处于活动状态时才更新 SnapMirror 关系的 目标端点。 默认值为 True。 选项
|
|
是否使用 REST 或 ZAPI。 always – 如果模块支持 REST,则始终使用 REST API。如果模块不支持 REST,则会发出警告。如果 REST 中不支持模块选项,则会发出错误。 never – 如果模块支持 ZAPI,则始终使用 ZAPI。如果 ZAPI 中不支持 REST 选项,则可能会发出错误。 auto – 如果模块支持 REST 并且支持模块选项,则会尝试使用 REST API。否则将恢复为 ZAPI。 默认值: |
|
这可以是集群范围或 SVM 范围的帐户,具体取决于需要集群级别还是 SVM 级别的 API。 有关更多信息,请阅读文档https://mysupport.netapp.com/NOW/download/software/nmsdk/9.4/。 支持两种身份验证方法
要使用证书,必须已在 ONTAP 集群中安装该证书,并且必须已启用证书身份验证。 |
|
如果设置为 这应仅在个人控制的站点上使用自签名证书时设置为 选项
|
|
该关系是根据目标找到的,因为它是唯一的。 默认情况下,会验证源信息,如果存在不匹配,则会报告错误。这意味着目标已被另一个关系使用。 该检查考虑了可能与远程 vserver 名称不同的本地 vserver 名称。 如果检查过于严格,则可以禁用此检查,例如,无条件地删除关系。 选项
|
注释
注意
支持 REST 和 ZAPI。
支持 check_mode。
还原不是幂等的。
snapmirror 在目标上运行大多数操作,peer_options 标识源集群。
ONTAP 支持用户名/密码或 SSL 证书进行身份验证。
ElementSW 仅支持用户名/密码进行身份验证。
以 na_ontap 为前缀的模块旨在支持 ONTAP 存储平台。
默认情况下启用 https,建议使用。要在集群上启用 http,您必须运行以下命令“set -privilege advanced;”“system services web modify -http-enabled true;”
示例
# creates and initializes the snapmirror
- name: Create ONTAP/ONTAP SnapMirror
netapp.ontap.na_ontap_snapmirror:
state: present
source_volume: test_src
destination_volume: test_dest
source_vserver: ansible_src
destination_vserver: ansible_dest
schedule: hourly
policy: MirrorAllSnapshots
max_transfer_rate: 1000
initialize: False
hostname: "{{ destination_cluster_hostname }}"
username: "{{ destination_cluster_username }}"
password: "{{ destination_cluster_password }}"
# creates and initializes the snapmirror between vservers
- name: Create ONTAP/ONTAP vserver SnapMirror
netapp.ontap.na_ontap_snapmirror:
state: present
source_vserver: ansible_src
destination_vserver: ansible_dest
identity_preserve: true
hostname: "{{ destination_cluster_hostname }}"
username: "{{ destination_cluster_username }}"
password: "{{ destination_cluster_password }}"
# existing snapmirror relation with status 'snapmirrored' will be initialized
- name: Inititalize ONTAP/ONTAP SnapMirror
netapp.ontap.na_ontap_snapmirror:
state: present
source_path: 'ansible:test'
destination_path: 'ansible:dest'
relationship_state: active
hostname: "{{ destination_cluster_hostname }}"
username: "{{ destination_cluster_username }}"
password: "{{ destination_cluster_password }}"
- name: Delete SnapMirror
netapp.ontap.na_ontap_snapmirror:
state: absent
destination_path: <path>
relationship_info_only: True
source_hostname: "{{ source_hostname }}"
hostname: "{{ destination_cluster_hostname }}"
username: "{{ destination_cluster_username }}"
password: "{{ destination_cluster_password }}"
- name: Break SnapMirror
netapp.ontap.na_ontap_snapmirror:
state: present
relationship_state: broken
destination_path: <path>
source_hostname: "{{ source_hostname }}"
hostname: "{{ destination_cluster_hostname }}"
username: "{{ destination_cluster_username }}"
password: "{{ destination_cluster_password }}"
- name: Restore SnapMirror volume using location (Idempotency)
netapp.ontap.na_ontap_snapmirror:
state: present
source_path: <path>
destination_path: <path>
relationship_type: restore
source_snapshot: "{{ snapshot }}"
hostname: "{{ destination_cluster_hostname }}"
username: "{{ destination_cluster_username }}"
password: "{{ destination_cluster_password }}"
- name: Set schedule to NULL
netapp.ontap.na_ontap_snapmirror:
state: present
destination_path: <path>
schedule: ""
hostname: "{{ destination_cluster_hostname }}"
username: "{{ destination_cluster_username }}"
password: "{{ destination_cluster_password }}"
- name: Create SnapMirror from ElementSW to ONTAP
netapp.ontap.na_ontap_snapmirror:
state: present
connection_type: elementsw_ontap
source_path: '10.10.10.10:/lun/300'
destination_path: 'ansible_test:ansible_dest_vol'
schedule: hourly
policy: MirrorLatest
hostname: "{{ netapp_hostname }}"
username: "{{ netapp_username }}"
password: "{{ netapp_password }}"
source_hostname: " {{ Element_cluster_mvip }}"
source_username: "{{ Element_cluster_username }}"
source_password: "{{ Element_cluster_password }}"
- name: Create SnapMirror from ONTAP to ElementSW
netapp.ontap.na_ontap_snapmirror:
state: present
connection_type: ontap_elementsw
destination_path: '10.10.10.10:/lun/300'
source_path: 'ansible_test:ansible_dest_vol'
policy: MirrorLatest
hostname: "{{ Element_cluster_mvip }}"
username: "{{ Element_cluster_username }}"
password: "{{ Element_cluster_password }}"
source_hostname: " {{ netapp_hostname }}"
source_username: "{{ netapp_username }}"
source_password: "{{ netapp_password }}"
- name: Create SnapMirror relationship (create destination volume)
tags: create
netapp.ontap.na_ontap_snapmirror:
state: present
source_endpoint:
cluster: "{{ _source_cluster }}"
path: "{{ source_vserver + ':' + source_volume }}"
destination_endpoint:
cluster: "{{ _destination_cluster }}"
path: "{{ destination_vserver_VOLDP + ':' + destination_volume }}"
create_destination:
enabled: true
hostname: "{{ destination_hostname }}"
username: "{{ username }}"
password: "{{ password }}"
https: true
validate_certs: false
- name: Create SnapMirror relationship - SVM DR (creating and peering destination svm)
tags: create_svmdr
netapp.ontap.na_ontap_snapmirror:
state: present
source_endpoint:
cluster: "{{ _source_cluster }}"
path: "{{ source_vserver + ':' }}"
destination_endpoint:
cluster: "{{ _destination_cluster }}"
path: "{{ destination_vserver_SVMDR + ':' }}"
create_destination:
enabled: true
hostname: "{{ destination_hostname }}"
username: "{{ username }}"
password: "{{ password }}"
https: true
validate_certs: false