netapp.ontap.na_ontap_snapmirror – NetApp ONTAP or ElementSW Manage SnapMirror
Note
This plugin is part of the netapp.ontap collection (version 21.14.1).
You might already have this collection installed if you are using the ansible
package.
It is not included in ansible-core
.
To check whether it is installed, run ansible-galaxy collection list
.
To install it, use: ansible-galaxy collection install netapp.ontap
.
To use it in a playbook, specify: netapp.ontap.na_ontap_snapmirror
.
New in version 2.7.0: of netapp.ontap
Synopsis
Create/Delete/Update/Initialize/Break/Resync/Resume SnapMirror volume/vserver relationships for ONTAP/ONTAP
This includes SVM replication, aka vserver DR
Create/Delete/Update/Initialize SnapMirror volume relationship between ElementSW and ONTAP
Modify schedule for a SnapMirror relationship for ONTAP/ONTAP and ElementSW/ONTAP
Pre-requisite for ElementSW to ONTAP relationship or vice-versa is an established SnapMirror endpoint for ONTAP cluster with ElementSW UI
Pre-requisite for ElementSW to ONTAP relationship or vice-versa is to have SnapMirror enabled in the ElementSW volume
For creating a SnapMirror ElementSW/ONTAP relationship, an existing ONTAP/ElementSW relationship should be present
Performs resync if the
relationship_state=active
and the current mirror state of the snapmirror relationship is broken-offPerforms resume if the
relationship_state=active
, the current snapmirror relationship status is quiesced and mirror state is snapmirroredPerforms restore if the
relationship_type=restore
and all other operations will not be performed during this task
Requirements
The below requirements are needed on the host that executes this module.
Ansible 2.9
Python3 netapp-lib (2018.11.13) or later. Install using ‘pip install netapp-lib’
netapp-lib 2020.3.12 is strongly recommended as it provides better error reporting for connection issues.
A physical or virtual clustered Data ONTAP system. The modules support Data ONTAP 9.1 and onward.
REST support requires ONTAP 9.6 or later.
To enable http on the cluster you must run the following commands ‘set -privilege advanced;’ ‘system services web modify -http-enabled true;’
Parameters
Parameter |
Comments |
---|---|
path to SSL client cert file (.pem). not supported with python 2.6. |
|
Type of SnapMirror relationship. Pre-requisite for either elementsw_ontap or ontap_elementsw the ElementSW volume should have enableSnapmirror option set to true. For using ontap_elementsw, elementsw_ontap snapmirror relationship should exist. Choices:
|
|
Requires ONTAP 9.7 or later. Creates the destination volume if enabled and destination_volume is present or destination_path includes a volume name. Creates and peers the destination vserver for SVM DR. |
|
Whether to create the destination volume or vserver. This is automatically enabled if any other suboption is present. Choices:
|
|
storage service associated with the destination endpoint. |
|
whether to create the destination endpoint using storage service. Choices:
|
|
whether to enforce storage service performance on the destination endpoint. Choices:
|
|
the performance service level (PSL) for this volume endpoint. Choices:
|
|
Cloud tiering policy. |
|
Cloud tiering policy. Choices:
|
|
enable provisioning of the destination endpoint volumes on FabricPool aggregates. only supported for FlexVol volume, FlexGroup volume, and Consistency Group endpoints. Choices:
|
|
Requires ONTAP 9.7 or higher. Required to create the destination vserver for SVM DR or the destination volume. Deprecated as of 21.2.0, use destination_endpoint and cluster. |
|
destination endpoint of a SnapMirror relationship. |
|
Requires ONTAP 9.7 or higher. Required to create the destination vserver for SVM DR or the destination volume. |
|
Requires ONTAP 9.8 or higher. Mandatory property for a Consistency Group endpoint. Specifies the list of FlexVol volumes for a Consistency Group. |
|
Requires ONTAP 9.8 or higher. Optional property to specify the IPSpace of the SVM. |
|
The destination endpoint for the relationship. format is <vserver:volume>, <vserver:>, <vserver:/cg/cg_name> |
|
The name of the SVM. Not sure when this is needed. |
|
Specifies the destination endpoint of the SnapMirror relationship. Deprecated as of 21.2.0, use destination_endpoint and path. |
|
Specifies the name of the destination volume for the SnapMirror. Deprecated as of 21.2.0, use source_endpoint and path. |
|
Name of the destination vserver for the SnapMirror. Deprecated as of 21.2.0, use destination_endpoint and path, or svm. |
|
Enable or disable a new feature. This can be used to enable an experimental feature or disable a new feature that breaks backward compatibility. Supported keys and values are subject to change without notice. Unknown keys are ignored. |
|
The hostname or IP address of the ONTAP instance. |
|
Override the default port (80 or 443) with this port |
|
Enable and disable https. Ignored when using REST as only https is supported. Ignored when using SSL certificate authentication as it requires SSL. Choices:
|
|
Specifies whether or not the identity of the source Vserver is replicated to the destination Vserver. If this parameter is set to true, the source Vserver’s configuration will additionally be replicated to the destination. If the parameter is set to false, then only the source Vserver’s volumes and RBAC configuration are replicated to the destination. Choices:
|
|
Specifies whether to initialize SnapMirror relation. Default is True, it can be explicitly set to False to avoid initializing SnapMirror relation. Choices:
|
|
path to SSL client key file. |
|
Specifies the upper bound, in kilobytes per second, at which data is transferred. Default is unlimited, it can be explicitly set to 0 as unlimited. |
|
The ontap api version to use |
|
Password for the specified user. |
|
Specify the name of the SnapMirror policy that applies to this relationship. |
|
If relationship-info-only is set to true then only relationship information is removed. Choices:
|
|
Specifies whether to break SnapMirror relation or establish a SnapMirror relationship. state must be present to use this option. Choices:
|
|
Specify the type of SnapMirror relationship. for ‘restore’ unless ‘source_snapshot’ is specified the most recent Snapshot copy on the source volume is restored. restore SnapMirror is not idempotent. With REST, only ‘extended_data_protection’ is supported. (‘restore’ is TBD) Choices:
|
|
Specify the name of the current schedule, which is used to update the SnapMirror relationship. Optional for create, modifiable. |
|
Requires ONTAP 9.7 or higher. Required to create the peering relationship between source and destination SVMs. Deprecated as of 21.2.0, use source_endpoint and cluster. |
|
source endpoint of a SnapMirror relationship. |
|
Requires ONTAP 9.7 or higher. Required to create the peering relationship between source and destination SVMs. |
|
Requires ONTAP 9.8 or higher. Mandatory property for a Consistency Group endpoint. Specifies the list of FlexVol volumes for a Consistency Group. |
|
Requires ONTAP 9.8 or higher. Optional property to specify the IPSpace of the SVM. |
|
The source endpoint for the relationship. If the source is an ONTAP volume (FlexVol or FlexGroup), format should be <vserver:volume> For SVM DR, format should be <vserver:> For a consistency group, format should be <vserver:/cg/cg_name> If the source is an ElementSW volume, format should be <Element_SVIP:/lun/Element_VOLUME_ID> If the source is an ElementSW volume, the volume should have SnapMirror enabled. |
|
The name of the SVM. Not sure when this is needed. |
|
Source hostname or management IP address for ONTAP or ElementSW cluster. If present, when state is absent, the relationship is released at the source before being deleted at destination. It is recommended to always release before deleting, so make sure this parameter is present if the source hostname is known. |
|
Source password for ONTAP or ElementSW cluster. Optional if this is same as destination password. |
|
Specifies the source endpoint of the SnapMirror relationship. If the source is an ONTAP volume, format should be <[vserver:][volume]> or <[[cluster:]//vserver/]volume> If the source is an ElementSW volume, format should be <[Element_SVIP]:/lun/[Element_VOLUME_ID]> If the source is an ElementSW volume, the volume should have SnapMirror enabled. Deprecated as of 21.2.0, use source_endpoint and path. |
|
Specifies the Snapshot from the source to be restored. |
|
Source username for ONTAP or ElementSW cluster. Optional if this is same as destination username. |
|
Specifies the name of the source volume for the SnapMirror. Deprecated as of 21.2.0, use source_endpoint and path. |
|
Name of the source vserver for the SnapMirror. Deprecated as of 21.2.0, use source_endpoint and path, or svm. |
|
Whether the specified relationship should exist or not. Choices:
|
|
Specifies whether to update the destination endpoint of the SnapMirror relationship only if the relationship is already present and active. Default is True. Choices:
|
|
REST API if supported by the target system for all the resources and attributes the module requires. Otherwise will revert to ZAPI. always – will always use the REST API never – will always use the ZAPI auto – will try to use the REST Api Default: “auto” |
|
This can be a Cluster-scoped or SVM-scoped account, depending on whether a Cluster-level or SVM-level API is required. For more information, please read the documentation https://mysupport.netapp.com/NOW/download/software/nmsdk/9.4/. Two authentication methods are supported
To use a certificate, the certificate must have been installed in the ONTAP cluster, and cert authentication must have been enabled. |
|
If set to This should only set to Choices:
|
Examples
# creates and initializes the snapmirror
- name: Create ONTAP/ONTAP SnapMirror
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
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
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
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
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)
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
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
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
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
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
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
Authors
NetApp Ansible Team (@carchi8py) <ng-ansibleteam@netapp.com>