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。您需要进一步的要求才能使用此模块,有关详细信息,请参阅 要求

要在剧本中使用它,请指定: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 或反之亦然的先决条件是为 ONTAP 集群建立 SnapMirror 端点,并具有 ElementSW UI

  • ElementSW 到 ONTAP 或反之亦然的先决条件是在 ElementSW 卷中启用 SnapMirror

  • 对于创建 SnapMirror ElementSW/ONTAP 关系,应存在现有的 ONTAP/ElementSW 关系

  • 如果 relationship_state=active 并且 snapmirror 关系的当前镜像状态为已断开,则执行重新同步

  • 如果 relationship_state=active,当前 snapmirror 关系状态为 quiesced 并且镜像状态为 snapmirrored,则执行恢复

  • 如果 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 或更高版本。

参数

参数

注释

cert_filepath

字符串

在 netapp.ontap 20.6.0 中添加

SSL 客户端证书文件 (.pem) 的路径。

不支持 Python 2.6。

clean_up_failure

布尔值

在 netapp.ontap 21.20.0 中添加

一个可选参数,用于从中止或失败的恢复操作中恢复。

任何临时的 RST 关系都将从目标 Vserver 中删除。

仅支持 ZAPI。

选项

  • false ←(默认)

  • true

connection_type

字符串

在 netapp.ontap 2.9.0 中添加

SnapMirror 关系的类型。

对于 elementsw_ontap 或 ontap_elementsw,先决条件是 ElementSW 卷应将 enableSnapmirror 选项设置为 true。

要使用 ontap_elementsw,应存在 elementsw_ontap snapmirror 关系。

选项

  • "ontap_ontap" ←(默认)

  • "elementsw_ontap"

  • "ontap_elementsw"

create_destination

字典

在 netapp.ontap 21.1.0 中添加

需要 ONTAP 9.7 或更高版本。

如果启用且存在 destination_volume 或 destination_path 包含卷名称,则创建目标卷。

为 SVM DR 创建并对等目标 vserver。

enabled

布尔值

是否创建目标卷或 vserver。

如果存在任何其他子选项,则会自动启用此选项。

选项

  • false

  • true ←(默认)

storage_service

字典

与目标端点关联的存储服务。

enabled

布尔值

是否使用存储服务创建目标端点。

选项

  • false

  • true

enforce_performance

布尔值

是否在目标端点上强制执行存储服务性能。

选项

  • false

  • true

name

字符串

此卷端点的性能服务级别 (PSL)。

选项

  • "value"

  • "performance"

  • "extreme"

tiering

字典

云分层策略。

policy

字符串

云分层策略。

选项

  • "all"

  • "auto"

  • "none"

  • "snapshot-only"

supported

布尔值

在 FabricPool 聚合上启用目标端点卷的置备。

仅支持 FlexVol 卷、FlexGroup 卷和一致性组端点。

选项

  • false

  • true

destination_cluster

字符串

在 netapp.ontap 21.1.0 中添加

需要 ONTAP 9.7 或更高版本。

需要创建 SVM DR 的目标 vserver 或目标卷。

自 21.2.0 起已弃用,请使用 destination_endpoint 和 cluster。

destination_endpoint

字典

在 netapp.ontap 21.2.0 中添加

SnapMirror 关系的目标端点。

cluster

字符串

需要 ONTAP 9.7 或更高版本。

需要创建 SVM DR 的目标 vserver 或目标卷。

consistency_group_volumes

list / elements=string

需要 ONTAP 9.8 或更高版本。

一致性组端点的强制属性。指定一致性组的 FlexVol 卷列表。

ipspace

字符串

需要 ONTAP 9.8 或更高版本。

可选属性,用于指定 SVM 的 IPSpace。

path

string / required

关系的目​​标端点。

格式为 <vserver:volume>、<vserver:>、<vserver:/cg/cg_name>

svm

字符串

SVM 的名称。不确定何时需要此项。

destination_path

字符串

指定 SnapMirror 关系的目標端點。

自 21.2.0 起已棄用,請使用 destination_endpoint 和 path。

destination_volume

字符串

指定 SnapMirror 的目標磁碟區名稱。

自 21.2.0 起已棄用,請使用 source_endpoint 和 path。

destination_vserver

字符串

SnapMirror 的目標 Vserver 名稱。

自 21.2.0 起已棄用,請使用 destination_endpoint 和 path 或 svm。

feature_flags

字典

在 netapp.ontap 20.5.0 中新增

啟用或停用新功能。

這可用於啟用實驗性功能或停用破壞回溯相容性的新功能。

支援的鍵和值如有變更,恕不另行通知。未知的鍵將被忽略。

force_ontap_version

字符串

在 netapp.ontap 21.23.0 中新增

使用 REST 時,覆寫叢集 ONTAP 版本。

如果版本與目標叢集不符,則行為未定義。

當由於權限問題而無法讀取叢集版本時,這可作為一種變通方法。請參閱 https://github.com/ansible-collections/netapp.ontap/wiki/Known-issues

這應採用 9.10 或 9.10.1 的形式,每個元素都是一個整數。

use_rest 設定為 auto 時,這可能會根據版本和平台功能強制切換到基於 ZAPI 的方式。

使用 ZAPI 時將被忽略。

hostname

string / required

ONTAP 實例的主機名稱或 IP 位址。

http_port

integer

使用此端口覆寫預設端口(80 或 443)

https

布尔值

啟用和停用 https。

使用 REST 時將被忽略,因為僅支援 https。

使用 SSL 憑證驗證時將被忽略,因為它需要 SSL。

选项

  • false ←(默认)

  • true

identity_preservation

字符串

在 netapp.ontap 22.4.0 中新增

指定將來源 SVM 的哪個組態複寫到目標 SVM。

此屬性僅適用於採用「async」原則類型的 SVM 資料保護。

僅 REST 支援,且需要 ONTAP 9.11.1 或更高版本。

选项

  • "full"

  • "exclude_network_config"

  • "exclude_network_and_protocol_config"

identity_preserve

布尔值

在 netapp.ontap 2.9.0 中添加

指定是否將來源 Vserver 的身分複寫到目標 Vserver。

如果此參數設定為 true,則來源 Vserver 的組態也會被複寫到目標。

如果此參數設定為 false,則僅來源 Vserver 的磁碟區和 RBAC 組態會被複寫到目標。

选项

  • false

  • true

initialize

布尔值

在 netapp.ontap 19.11.0 中新增

指定是否初始化 SnapMirror 關係。

預設值為 True,可以明確設定為 False 以避免初始化 SnapMirror 關係。

选项

  • false

  • true ←(默认)

key_filepath

字符串

在 netapp.ontap 20.6.0 中添加

SSL 用戶端金鑰檔案的路徑。

max_transfer_rate

integer

在 netapp.ontap 2.9.0 中添加

指定資料傳輸的上限,單位為每秒千位元組。

預設值為無限制,可以明確設定為 0 表示無限制。

ontapi

integer

要使用的 ontap api 版本

password

別名:pass

字符串

指定使用者的密碼。

peer_options

字典

在 netapp.ontap 21.8.0 中新增

對等系統的 IP 位址和連線選項。

如果未指定這些選項中的任何一個,則使用相應的來源選項。

cert_filepath

字符串

SSL 客户端证书文件 (.pem) 的路径。

force_ontap_version

字符串

在 netapp.ontap 21.23.0 中新增

使用 REST 時,覆寫叢集 ONTAP 版本。

如果版本與目標叢集不符,則行為未定義。

當由於權限問題而無法讀取叢集版本時,這可作為一種變通方法。請參閱 https://github.com/ansible-collections/netapp.ontap/wiki/Known-issues

這應採用 9.10 或 9.10.1 的形式,每個元素都是一個整數。

use_rest 設定為 auto 時,這可能會根據版本和平台功能強制切換到基於 ZAPI 的方式。

使用 ZAPI 時將被忽略。

hostname

string / required

ONTAP 實例的主機名稱或 IP 位址。

http_port

integer

使用此端口覆寫預設端口(80 或 443)

https

布尔值

啟用和停用 https。

选项

  • false

  • true

key_filepath

字符串

SSL 用戶端金鑰檔案的路徑。

ontapi

integer

要使用的 ontap api 版本

password

別名:pass

字符串

指定使用者的密碼。

use_rest

字符串

如果模組所需的所有資源和屬性均為目標系統支援,則使用 REST API。否則,將還原為 ZAPI。

always – 將始終使用 REST API

never – 將始終使用 ZAPI

auto – 將嘗試使用 REST API

username

別名:user

字符串

使用基本驗證時的使用者名稱。

validate_certs

布尔值

如果設定為 no,則不會驗證 SSL 憑證。

這僅應設定為 False,用於使用自我簽署憑證的個人控制網站。

选项

  • false

  • true

policy

字符串

在 netapp.ontap 2.8.0 中新增

指定套用於此關係的 SnapMirror 原則名稱。

relationship_info_only

布尔值

在 netapp.ontap 20.4.0 中新增

如果 relationship-info-only 設定為 true,則僅移除關係資訊。

选项

  • false ←(默认)

  • true

relationship_state

字符串

在 netapp.ontap 20.2.0 中新增

指定是否中斷 SnapMirror 關係或建立 SnapMirror 關係。

必須存在狀態才能使用此選項。

选项

  • "active" ←(預設)

  • "broken"

relationship_type

字符串

指定 SnapMirror 關係的類型。

對於「restore」,除非指定「source_snapshot」,否則會還原來源磁碟區上最新的快照副本。

還原 SnapMirror 不是等冪的。

使用 REST 時,僅支援「extended_data_protection」和「restore」。

选项

  • "data_protection"

  • "load_sharing"

  • "vault"

  • "restore"

  • "transition_data_protection"

  • "extended_data_protection"

schedule

別名:transfer_schedule

字符串

在 netapp.ontap 22.2.0 中新增

指定用於更新 SnapMirror 關係的目前排程名稱。

對於建立,此選項為選用,可修改。

使用 REST 時,此選項需要 ONTAP 9.11.1 或更高版本。

source_cluster

字符串

在 netapp.ontap 21.1.0 中添加

需要 ONTAP 9.7 或更高版本。

需要建立來源和目標 SVM 之間的對等關係。

自 21.2.0 起已棄用,請使用 source_endpoint 和 cluster。

source_endpoint

字典

在 netapp.ontap 21.2.0 中添加

SnapMirror 關係的來源端點。

cluster

字符串

需要 ONTAP 9.7 或更高版本。

需要建立來源和目標 SVM 之間的對等關係。

consistency_group_volumes

list / elements=string

需要 ONTAP 9.8 或更高版本。

一致性组端点的强制属性。指定一致性组的 FlexVol 卷列表。

ipspace

字符串

需要 ONTAP 9.8 或更高版本。

可选属性,用于指定 SVM 的 IPSpace。

path

string / required

關係的來源端點。

如果來源為 ONTAP 磁碟區(FlexVol 或 FlexGroup),則格式應為 <vserver:volume>

對於 SVM DR,格式應為 <vserver:>

對於一致性群組,格式應為 <vserver:/cg/cg_name>

如果來源為 ElementSW 磁碟區,則格式應為 <Element_SVIP:/lun/Element_VOLUME_ID>

如果來源為 ElementSW 磁碟區,則應啟用磁碟區的 SnapMirror。

svm

字符串

SVM 的名称。不确定何时需要此项。

source_hostname

字符串

已棄用 - 請使用 peer_options

ONTAP 或 ElementSW 叢集的來源主機名稱或管理 IP 位址。

如果存在,則當狀態為 absent 時,會在來源釋放關係,然後在目標刪除。

建議在刪除之前始終釋放,因此如果知道來源主機名稱,請確保存在此參數。

source_password

字符串

已棄用 - 請使用 peer_options

ONTAP 或 ElementSW 叢集的來源密碼。

如果與目標密碼相同,則為選用。

source_path

字符串

指定 SnapMirror 關係的來源端點。

如果來源是 ONTAP 磁碟區,則格式應為 <[vserver:][volume]> 或 <[[cluster:]//vserver/]volume>

如果來源為 ElementSW 磁碟區,則格式應為 <[Element_SVIP]:/lun/[Element_VOLUME_ID]>

如果來源為 ElementSW 磁碟區,則應啟用磁碟區的 SnapMirror。

自 21.2.0 起已棄用,請使用 source_endpoint 和 path。

source_snapshot

字符串

在 netapp.ontap 20.6.0 中添加

指定要還原的來源快照。

source_username

字符串

已棄用 - 請使用 peer_options

ONTAP 或 ElementSW 叢集的來源使用者名稱。

如果與目標使用者名稱相同,則為選用。

source_volume

字符串

指定 SnapMirror 的來源磁碟區名稱。

自 21.2.0 起已棄用,請使用 source_endpoint 和 path。

source_vserver

字符串

SnapMirror 的來源 Vserver 名稱。

自 21.2.0 起已棄用,請使用 source_endpoint 和 path 或 svm。

state

字符串

指定的關係是否應存在。

选项

  • "present" ←(預設)

  • "absent"

transferring_time_out

integer

在 netapp.ontap 21.20.0 中添加

傳輸進行中時(例如,在初始化之後)等待的時間。單位為秒。

預設值: 300

update

布尔值

在 netapp.ontap 20.2.0 中新增

指定僅當關係已存在且處於活動狀態時,才更新 SnapMirror 關係的目標端點。

預設值為 True。

选项

  • false

  • true ←(默认)

use_rest

字符串

是否使用 REST 或 ZAPI。

always – 如果模組支援 REST,則將始終使用 REST API。如果模組不支援 REST,則會發出警告。如果 REST 中不支援模組選項,則會發出錯誤。

never – 如果模組支援 ZAPI,則將始終使用 ZAPI。如果 ZAPI 中不支援 REST 選項,則可能會發出錯誤。

auto – 如果模組支援 REST 且支援模組選項,則將嘗試使用 REST API。否則,還原為 ZAPI。

預設值: "auto"

username

別名:user

字符串

這可以是叢集範圍或 SVM 範圍的帳戶,具體取決於是否需要叢集層級或 SVM 層級的 API。

如需更多資訊,請閱讀文件 https://mysupport.netapp.com/NOW/download/software/nmsdk/9.4/

支援兩種驗證方法

  1. 使用使用者名稱和密碼的基本驗證,

  2. 使用 SSL 用戶端憑證檔案,以及(可選)私密金鑰檔案的 SSL 憑證驗證。

若要使用憑證,則必須在 ONTAP 叢集中安裝該憑證,並且必須啟用憑證驗證。

validate_certs

布尔值

如果設定為 no,則不會驗證 SSL 憑證。

這僅應設定為 False,用於使用自我簽署憑證的個人控制網站。

选项

  • false

  • true ←(默认)

validate_source_path

布尔值

在 netapp.ontap 21.21.0 中新增

根據目標找到關係,因為它是唯一的。

預設情況下,會驗證來源資訊,如果存在不符,則會報告錯誤。這表示目標已由其他關係使用。

此檢查會將可能與遠端 Vserver 名稱不同的本機 Vserver 名稱考慮在內。

如果此檢查過於嚴格,則可能會停用此檢查,例如,無條件刪除關係。

选项

  • false

  • true ←(默认)

註解

注意

  • 支援 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

作者

  • NetApp Ansible 团队 (@carchi8py)