Configuración de scripts de proveedor y libros de estrategia de Ansible
Durante la puesta en marcha de ejemplo y la ejecución del flujo de trabajo en esta documentación, se utilizan los siguientes archivos de configuración del proveedor, scripts de ejecución y libros de estrategia de Ansible.
|
|
Los scripts de ejemplo se proporcionan tal cual y no son compatibles con NetApp. Puede solicitar la versión actual de los scripts por correo electrónico a ng-sapcc@netapp.com. |
Archivo de configuración del proveedor netapp_clone.conf
El archivo de configuración se crea tal como se describe en "Documentación de SAP Lama: Configuración de secuencias de comandos registradas de SAP Host Agent". Este archivo de configuración se debe ubicar en el nodo de control de Ansible donde esté instalado el agente de host SAP.
el usuario del sistema operativo configurado sapuser Debe disponer de los permisos adecuados para ejecutar el script y los libros de estrategia de Ansible. Puede colocar la secuencia de comandos en un directorio de secuencias de comandos común. SAP Lama puede proporcionar varios parámetros al llamar al script.
Además de los parámetros personalizados, PARAM_ClonePostFix, PROP_ClonePostFix, PARAM_ClonePostFix, y. PROP_ClonePostFix, muchos otros pueden ser entregados, como se muestra en el "Documentación de SAP Lama".
root@sap-jump:~# cat /usr/sap/hostctrl/exe/operations.d/netapp_clone.conf Name: netapp_clone Username: sapuser Description: NetApp Clone for Custom Provisioning Command: /usr/sap/scripts/netapp_clone.sh --HookOperationName=$[HookOperationName] --SAPSYSTEMNAME=$[SAPSYSTEMNAME] --SAPSYSTEM=$[SAPSYSTEM] --MOUNT_XML_PATH=$[MOUNT_XML_PATH] --PARAM_ClonePostFix=$[PARAM-ClonePostFix] --PARAM_SnapPostFix=$[PARAM-SnapPostFix] --PROP_ClonePostFix=$[PROP-ClonePostFix] --PROP_SnapPostFix=$[PROP-SnapPostFix] --SAP_LVM_SRC_SID=$[SAP_LVM_SRC_SID] --SAP_LVM_TARGET_SID=$[SAP_LVM_TARGET_SID] ResulConverter: hook Platform: Unix
Guión del proveedor netapp_clone.sh
La secuencia de comandos del proveedor debe almacenarse en /usr/sap/scripts según se configuró en el archivo de configuración del proveedor.
Variables
Las siguientes variables están codificadas en el script y deben adaptarse en consecuencia.
-
PRIMARY_CLUSTER=<hostname of netapp cluster> -
PRIMARY_SVM=<SVM name where source system volumes are stored>
Los archivos de certificado PRIMARY_KEYFILE=/usr/sap/scripts/ansible/certs/ontap.key y.. PRIMARY_CERTFILE=/usr/sap/scripts/ansible/certs/ontap.pem se debe proporcionar como se describe en "Módulos Ansible de NetApp: Prepare el ONTAP".
|
|
Si se necesitan diferentes clústeres o SVM para diferentes sistemas SAP, pueden añadirse estas variables como parámetros en la definición del proveedor de SAP Lama. |
Función: Crear archivo de inventario
Para hacer que la ejecución del libro de aplicaciones de Ansible sea más dinámica, una inventory. yml el archivo se crea sobre la marcha. Algunos valores estáticos se configuran en la sección variable y otros se crean dinámicamente durante la ejecución.
Función: Ejecute el libro de estrategia de Ansible
Esta función se utiliza para ejecutar el libro de aplicaciones de Ansible junto con el creado dinámicamente inventory.yml archivo. La convención de nomenclatura para los libros de estrategia es netapp_lama_${HookOperationName}.yml. Los valores para ${HookOperationName} Depende de la operación Lama y se entrega a Lama como parámetro de línea de comandos.
Sección Principal
Esta sección contiene el plan de ejecución principal. La variable ${HookOperationName} Contiene el nombre del paso de reemplazo Lama y lo proporciona Lama cuando se llama al script.
-
Valores con el flujo de trabajo de aprovisionamiento de copias del sistema y del clon del sistema:
-
CloneVolumes
-
PostCloneVolumes
-
-
Valor con el sistema destruye el flujo de trabajo:
-
ServiceConfigRemoval
-
-
Valor con el flujo de trabajo de actualización del sistema:
-
ClearMountConfig
-
HookOperationName = CloneVolumes
Con este paso, se ejecuta el libro de estrategia de Ansible, lo que activa las operaciones de copia Snapshot y clonado. SAP Lama entrega los nombres de volúmenes y la configuración de montaje a través de un archivo XML definido en la variable $MOUNT_XML_PATH. Este archivo se guarda porque se utiliza más adelante en el paso FinalizeCloneVolumes para crear la nueva configuración de punto de montaje. Los nombres de los volúmenes se extraen del archivo XML y se ejecuta la libro de estrategia de clonado de Ansible para cada volumen.
|
|
En este ejemplo, la instancia AS y los servicios centrales comparten el mismo volumen. Por lo tanto, el clonado de volúmenes solo se ejecuta cuando el número de instancia de SAP ($SAPSYSTEM) no lo es 01. Esto puede diferir en otros entornos y debe modificarse en consecuencia.
|
HookOperationName = PostCloneVolumes
Durante este paso, las propiedades personalizadas ClonePostFix y.. SnapPostFix además, se mantiene la configuración del punto de montaje para el sistema de destino.
Las propiedades personalizadas se utilizan más adelante como entrada cuando el sistema se decomisionan durante la ServiceConfigRemoval o. ClearMountConfig fase. El sistema está diseñado para conservar la configuración de los parámetros personalizados que se especificaron durante el flujo de trabajo de aprovisionamiento del sistema.
Los valores utilizados en este ejemplo son ClonePostFix=_clone_20221115 y.. SnapPostFix=_snap_20221115.
Para el volumen HN9_sap, El archivo Ansible creado dinámicamente incluye los siguientes valores: datavolumename: HN9_sap, snapshotpostfix: _snap_20221115, y. clonepostfix: _clone_20221115.
Lo que conduce al nombre de la snapshot en el volumen HN9_SAP HN9_sap_snap_20221115 y el nombre del clon de volumen creado HN9_sap_clone_20221115.
|
|
Las propiedades personalizadas se pueden utilizar de cualquier manera para conservar los parámetros utilizados durante el proceso de aprovisionamiento. |
La configuración del punto de montaje se extrae del archivo XML que ha sido entregado por Lama en la CloneVolume paso. La ClonePostFix Se agrega a los nombres de volumen y se vuelve a enviar a Lama a través de la salida de script predeterminada. La funcionalidad se describe en "Nota de SAP 1889590".
|
|
En este ejemplo, los qtrees del sistema de almacenamiento se utilizan como método común para colocar diferentes datos en un único volumen. Por ejemplo: HN9_sap sujeta los puntos de montaje para /usr/sap/HN9, /sapmnt/HN9, y. /home/hn9adm. Los subdirectorios funcionan de la misma manera. Esto puede diferir en otros entornos y debe modificarse en consecuencia.
|
HookOperationName = ServiceConfigRemoval
En este paso, se ejecuta el libro de estrategia de Ansible responsable de la eliminación de los clones de volúmenes.
SAP Lama entrega los nombres de volúmenes a través del archivo de configuración de montaje y las propiedades personalizadas ClonePostFix y.. SnapPostFix se utilizan para entregar los valores de los parámetros especificados originalmente durante el flujo de trabajo de aprovisionamiento del sistema (consulte la nota en HookOperationName = PostCloneVolumes).
Los nombres de los volúmenes se extraen del archivo xml y se ejecuta la libro de estrategia de clonado de Ansible para cada volumen.
|
|
En este ejemplo, la instancia AS y los servicios centrales comparten el mismo volumen. Por lo tanto, la eliminación de volúmenes solo se ejecuta cuando el número de instancia de SAP ($SAPSYSTEM) no lo es 01. Esto puede diferir en otros entornos y debe modificarse en consecuencia.
|
HookOperationName = ClearMountConfig
En este paso, se está ejecutando el libro de estrategia de Ansible responsable de la eliminación de los clones del volumen durante un flujo de trabajo de actualización del sistema.
SAP Lama entrega los nombres de volúmenes a través del archivo de configuración de montaje y las propiedades personalizadas ClonePostFix y.. SnapPostFix se utilizan para entregar los valores de los parámetros especificados originalmente durante el flujo de trabajo de aprovisionamiento del sistema.
Los nombres de los volúmenes se extraen del archivo XML y se ejecuta la libro de estrategia de clonado de Ansible para cada volumen.
|
|
En este ejemplo, la instancia AS y los servicios centrales comparten el mismo volumen. Por lo tanto, la eliminación de volúmenes solo se ejecuta cuando el número de instancia de SAP ($SAPSYSTEM) no lo es 01. Esto puede diferir en otros entornos y debe modificarse en consecuencia.
|
root@sap-jump:~# cat /usr/sap/scripts/netapp_clone.sh
#!/bin/bash
#Section - Variables
#########################################
VERSION="Version 0.9"
#Path for ansible play-books
ANSIBLE_PATH=/usr/sap/scripts/ansible
#Values for Ansible Inventory File
PRIMARY_CLUSTER=grenada
PRIMARY_SVM=svm-sap01
PRIMARY_KEYFILE=/usr/sap/scripts/ansible/certs/ontap.key
PRIMARY_CERTFILE=/usr/sap/scripts/ansible/certs/ontap.pem
#Default Variable if PARAM ClonePostFix / SnapPostFix is not maintained in LaMa
DefaultPostFix=_clone_1
#TMP Files - used during execution
YAML_TMP=/tmp/inventory_ansible_clone_tmp_$$.yml
TMPFILE=/tmp/tmpfile.$$
MY_NAME="`basename $0`"
BASE_SCRIPT_DIR="`dirname $0`"
#Sendig Script Version and run options to LaMa Log
echo "[DEBUG]: Running Script $MY_NAME $VERSION"
echo "[DEBUG]: $MY_NAME $@"
#Command declared in the netapp_clone.conf Provider definition
#Command: /usr/sap/scripts/netapp_clone.sh --HookOperationName=$[HookOperationName] --SAPSYSTEMNAME=$[SAPSYSTEMNAME] --SAPSYSTEM=$[SAPSYSTEM] --MOUNT_XML_PATH=$[MOUNT_XML_PATH] --PARAM_ClonePostFix=$[PARAM-ClonePostFix] --PARAM_SnapPostFix=$[PARAM-SnapPostFix] --PROP_ClonePostFix=$[PROP-ClonePostFix] --PROP_SnapPostFix=$[PROP-SnapPostFix] --SAP_LVM_SRC_SID=$[SAP_LVM_SRC_SID] --SAP_LVM_TARGET_SID=$[SAP_LVM_TARGET_SID]
#Reading Input Variables hand over by LaMa
for i in "$@"
do
case $i in
--HookOperationName=*)
HookOperationName="${i#*=}";shift;;
--SAPSYSTEMNAME=*)
SAPSYSTEMNAME="${i#*=}";shift;;
--SAPSYSTEM=*)
SAPSYSTEM="${i#*=}";shift;;
--MOUNT_XML_PATH=*)
MOUNT_XML_PATH="${i#*=}";shift;;
--PARAM_ClonePostFix=*)
PARAM_ClonePostFix="${i#*=}";shift;;
--PARAM_SnapPostFix=*)
PARAM_SnapPostFix="${i#*=}";shift;;
--PROP_ClonePostFix=*)
PROP_ClonePostFix="${i#*=}";shift;;
--PROP_SnapPostFix=*)
PROP_SnapPostFix="${i#*=}";shift;;
--SAP_LVM_SRC_SID=*)
SAP_LVM_SRC_SID="${i#*=}";shift;;
--SAP_LVM_TARGET_SID=*)
SAP_LVM_TARGET_SID="${i#*=}";shift;;
*)
# unknown option
;;
esac
done
#If Parameters not provided by the User - defaulting to DefaultPostFix
if [ -z $PARAM_ClonePostFix ]; then PARAM_ClonePostFix=$DefaultPostFix;fi
if [ -z $PARAM_SnapPostFix ]; then PARAM_SnapPostFix=$DefaultPostFix;fi
#Section - Functions
#########################################
#Function Create (Inventory) YML File
#########################################
create_yml_file()
{
echo "ontapservers:">$YAML_TMP
echo " hosts:">>$YAML_TMP
echo " ${PRIMARY_CLUSTER}:">>$YAML_TMP
echo " ansible_host: "'"'$PRIMARY_CLUSTER'"'>>$YAML_TMP
echo " keyfile: "'"'$PRIMARY_KEYFILE'"'>>$YAML_TMP
echo " certfile: "'"'$PRIMARY_CERTFILE'"'>>$YAML_TMP
echo " svmname: "'"'$PRIMARY_SVM'"'>>$YAML_TMP
echo " datavolumename: "'"'$datavolumename'"'>>$YAML_TMP
echo " snapshotpostfix: "'"'$snapshotpostfix'"'>>$YAML_TMP
echo " clonepostfix: "'"'$clonepostfix'"'>>$YAML_TMP
}
#Function run ansible-playbook
#########################################
run_ansible_playbook()
{
echo "[DEBUG]: Running ansible playbook netapp_lama_${HookOperationName}.yml on Volume $datavolumename"
ansible-playbook -i $YAML_TMP $ANSIBLE_PATH/netapp_lama_${HookOperationName}.yml
}
#Section - Main
#########################################
#HookOperationName – CloneVolumes
#########################################
if [ $HookOperationName = CloneVolumes ] ;then
#save mount xml for later usage - used in Section FinalizeCloneVolues to generate the mountpoints
echo "[DEBUG]: saving mount config...."
cp $MOUNT_XML_PATH /tmp/mount_config_${SAPSYSTEMNAME}_${SAPSYSTEM}.xml
#Instance 00 + 01 share the same volumes - clone needs to be done once
if [ $SAPSYSTEM != 01 ]; then
#generating Volume List - assuming usage of qtrees - "IP-Adress:/VolumeName/qtree"
xmlFile=/tmp/mount_config_${SAPSYSTEMNAME}_${SAPSYSTEM}.xml
if [ -e $TMPFILE ];then rm $TMPFILE;fi
numMounts=`xml_grep --count "/mountconfig/mount" $xmlFile | grep "total: " | awk '{ print $2 }'`
i=1
while [ $i -le $numMounts ]; do
xmllint --xpath "/mountconfig/mount[$i]/exportpath/text()" $xmlFile |awk -F"/" '{print $2}' >>$TMPFILE
i=$((i + 1))
done
DATAVOLUMES=`cat $TMPFILE |sort -u`
#Create yml file and rund playbook for each volume
for I in $DATAVOLUMES; do
datavolumename="$I"
snapshotpostfix="$PARAM_SnapPostFix"
clonepostfix="$PARAM_ClonePostFix"
create_yml_file
run_ansible_playbook
done
else
echo "[DEBUG]: Doing nothing .... Volume cloned in different Task"
fi
fi
#HookOperationName – PostCloneVolumes
#########################################
if [ $HookOperationName = PostCloneVolumes] ;then
#Reporting Properties back to LaMa Config for Cloned System
echo "[RESULT]:Property:ClonePostFix=$PARAM_ClonePostFix"
echo "[RESULT]:Property:SnapPostFix=$PARAM_SnapPostFix"
#Create MountPoint Config for Cloned Instances and report back to LaMa according to SAP Note: https://launchpad.support.sap.com/#/notes/1889590
echo "MountDataBegin"
echo '<?xml version="1.0" encoding="UTF-8"?>'
echo "<mountconfig>"
xmlFile=/tmp/mount_config_${SAPSYSTEMNAME}_${SAPSYSTEM}.xml
numMounts=`xml_grep --count "/mountconfig/mount" $xmlFile | grep "total: " | awk '{ print $2 }'`
i=1
while [ $i -le $numMounts ]; do
MOUNTPOINT=`xmllint --xpath "/mountconfig/mount[$i]/mountpoint/text()" $xmlFile`;
EXPORTPATH=`xmllint --xpath "/mountconfig/mount[$i]/exportpath/text()" $xmlFile`;
OPTIONS=`xmllint --xpath "/mountconfig/mount[$i]/options/text()" $xmlFile`;
#Adopt Exportpath and add Clonepostfix - assuming usage of qtrees - "IP-Adress:/VolumeName/qtree"
TMPFIELD1=`echo $EXPORTPATH|awk -F":/" '{print $1}'`
TMPFIELD2=`echo $EXPORTPATH|awk -F"/" '{print $2}'`
TMPFIELD3=`echo $EXPORTPATH|awk -F"/" '{print $3}'`
EXPORTPATH=$TMPFIELD1":/"${TMPFIELD2}$PARAM_ClonePostFix"/"$TMPFIELD3
echo -e '\t<mount fstype="nfs" storagetype="NETFS">'
echo -e "\t\t<mountpoint>${MOUNTPOINT}</mountpoint>"
echo -e "\t\t<exportpath>${EXPORTPATH}</exportpath>"
echo -e "\t\t<options>${OPTIONS}</options>"
echo -e "\t</mount>"
i=$((i + 1))
done
echo "</mountconfig>"
echo "MountDataEnd"
#Finished MountPoint Config
#Cleanup Temporary Files
rm $xmlFile
fi
#HookOperationName – ServiceConfigRemoval
#########################################
if [ $HookOperationName = ServiceConfigRemoval ] ;then
#Assure that Properties ClonePostFix and SnapPostfix has been configured through the provisioning process
if [ -z $PROP_ClonePostFix ]; then echo "[ERROR]: Propertiy ClonePostFix is not handed over - please investigate";exit 5;fi
if [ -z $PROP_SnapPostFix ]; then echo "[ERROR]: Propertiy SnapPostFix is not handed over - please investigate";exit 5;fi
#Instance 00 + 01 share the same volumes - clone delete needs to be done once
if [ $SAPSYSTEM != 01 ]; then
#generating Volume List - assuming usage of qtrees - "IP-Adress:/VolumeName/qtree"
xmlFile=$MOUNT_XML_PATH
if [ -e $TMPFILE ];then rm $TMPFILE;fi
numMounts=`xml_grep --count "/mountconfig/mount" $xmlFile | grep "total: " | awk '{ print $2 }'`
i=1
while [ $i -le $numMounts ]; do
xmllint --xpath "/mountconfig/mount[$i]/exportpath/text()" $xmlFile |awk -F"/" '{print $2}' >>$TMPFILE
i=$((i + 1))
done
DATAVOLUMES=`cat $TMPFILE |sort -u| awk -F $PROP_ClonePostFix '{ print $1 }'`
#Create yml file and rund playbook for each volume
for I in $DATAVOLUMES; do
datavolumename="$I"
snapshotpostfix="$PROP_SnapPostFix"
clonepostfix="$PROP_ClonePostFix"
create_yml_file
run_ansible_playbook
done
else
echo "[DEBUG]: Doing nothing .... Volume deleted in different Task"
fi
#Cleanup Temporary Files
rm $xmlFile
fi
#HookOperationName - ClearMountConfig
#########################################
if [ $HookOperationName = ClearMountConfig ] ;then
#Assure that Properties ClonePostFix and SnapPostfix has been configured through the provisioning process
if [ -z $PROP_ClonePostFix ]; then echo "[ERROR]: Propertiy ClonePostFix is not handed over - please investigate";exit 5;fi
if [ -z $PROP_SnapPostFix ]; then echo "[ERROR]: Propertiy SnapPostFix is not handed over - please investigate";exit 5;fi
#Instance 00 + 01 share the same volumes - clone delete needs to be done once
if [ $SAPSYSTEM != 01 ]; then
#generating Volume List - assuming usage of qtrees - "IP-Adress:/VolumeName/qtree"
xmlFile=$MOUNT_XML_PATH
if [ -e $TMPFILE ];then rm $TMPFILE;fi
numMounts=`xml_grep --count "/mountconfig/mount" $xmlFile | grep "total: " | awk '{ print $2 }'`
i=1
while [ $i -le $numMounts ]; do
xmllint --xpath "/mountconfig/mount[$i]/exportpath/text()" $xmlFile |awk -F"/" '{print $2}' >>$TMPFILE
i=$((i + 1))
done
DATAVOLUMES=`cat $TMPFILE |sort -u| awk -F $PROP_ClonePostFix '{ print $1 }'`
#Create yml file and rund playbook for each volume
for I in $DATAVOLUMES; do
datavolumename="$I"
snapshotpostfix="$PROP_SnapPostFix"
clonepostfix="$PROP_ClonePostFix"
create_yml_file
run_ansible_playbook
done
else
echo "[DEBUG]: Doing nothing .... Volume deleted in different Task"
fi
#Cleanup Temporary Files
rm $xmlFile
fi
#Cleanup
#########################################
#Cleanup Temporary Files
if [ -e $TMPFILE ];then rm $TMPFILE;fi
if [ -e $YAML_TMP ];then rm $YAML_TMP;fi
exit 0
Libro de aplicaciones de Ansible netapp_lama_CloneVolumes.yml
El libro de estrategia que se ejecuta durante el paso CloneVolumes del flujo de trabajo del clon del sistema Lama es una combinación de create_snapshot.yml y.. create_clone.yml (consulte "Módulos Ansible de NetApp: Archivos YAML"). Este libro de estrategia se puede ampliar fácilmente para cubrir casos prácticos adicionales como la clonación de operaciones secundarias y de división de clones.
root@sap-jump:~# cat /usr/sap/scripts/ansible/netapp_lama_CloneVolumes.yml
---
- hosts: ontapservers
connection: local
collections:
- netapp.ontap
gather_facts: false
name: netapp_lama_CloneVolumes
tasks:
- name: Create SnapShot
na_ontap_snapshot:
state: present
snapshot: "{{ datavolumename }}{{ snapshotpostfix }}"
use_rest: always
volume: "{{ datavolumename }}"
vserver: "{{ svmname }}"
hostname: "{{ inventory_hostname }}"
cert_filepath: "{{ certfile }}"
key_filepath: "{{ keyfile }}"
https: true
validate_certs: false
- name: Clone Volume
na_ontap_volume_clone:
state: present
name: "{{ datavolumename }}{{ clonepostfix }}"
use_rest: always
vserver: "{{ svmname }}"
junction_path: '/{{ datavolumename }}{{ clonepostfix }}'
parent_volume: "{{ datavolumename }}"
parent_snapshot: "{{ datavolumename }}{{ snapshotpostfix }}"
hostname: "{{ inventory_hostname }}"
cert_filepath: "{{ certfile }}"
key_filepath: "{{ keyfile }}"
https: true
validate_certs: false
Libro de aplicaciones de Ansible netapp_lama_ServiceConfigRemoving.yml
el libro de estrategia que se ejecuta durante la ServiceConfigRemoval La fase del flujo de trabajo de destrucción del sistema Lama es la combinación de delete_clone.yml y.. delete_snapshot.yml (consulte "Módulos Ansible de NetApp: Archivos YAML"). Debe alinearse con los pasos de ejecución del netapp_lama_CloneVolumes libro de estrategia.
root@sap-jump:~# cat /usr/sap/scripts/ansible/netapp_lama_ServiceConfigRemoval.yml
---
- hosts: ontapservers
connection: local
collections:
- netapp.ontap
gather_facts: false
name: netapp_lama_ServiceConfigRemoval
tasks:
- name: Delete Clone
na_ontap_volume:
state: absent
name: "{{ datavolumename }}{{ clonepostfix }}"
use_rest: always
vserver: "{{ svmname }}"
wait_for_completion: True
hostname: "{{ inventory_hostname }}"
cert_filepath: "{{ certfile }}"
key_filepath: "{{ keyfile }}"
https: true
validate_certs: false
- name: Delete SnapShot
na_ontap_snapshot:
state: absent
snapshot: "{{ datavolumename }}{{ snapshotpostfix }}"
use_rest: always
volume: "{{ datavolumename }}"
vserver: "{{ svmname }}"
hostname: "{{ inventory_hostname }}"
cert_filepath: "{{ certfile }}"
key_filepath: "{{ keyfile }}"
https: true
validate_certs: false
root@sap-jump:~#
Libro de aplicaciones de Ansible netapp_lama_ClearMountConfig.yml
el libro de estrategia, que se ejecuta durante la netapp_lama_ClearMountConfig La fase del flujo de trabajo de actualización del sistema Lama es la combinación de delete_clone.yml y.. delete_snapshot.yml (consulte "Módulos Ansible de NetApp: Archivos YAML"). Debe alinearse con los pasos de ejecución del netapp_lama_CloneVolumes libro de estrategia.
root@sap-jump:~# cat /usr/sap/scripts/ansible/netapp_lama_ServiceConfigRemoval.yml
---
- hosts: ontapservers
connection: local
collections:
- netapp.ontap
gather_facts: false
name: netapp_lama_ServiceConfigRemoval
tasks:
- name: Delete Clone
na_ontap_volume:
state: absent
name: "{{ datavolumename }}{{ clonepostfix }}"
use_rest: always
vserver: "{{ svmname }}"
wait_for_completion: True
hostname: "{{ inventory_hostname }}"
cert_filepath: "{{ certfile }}"
key_filepath: "{{ keyfile }}"
https: true
validate_certs: false
- name: Delete SnapShot
na_ontap_snapshot:
state: absent
snapshot: "{{ datavolumename }}{{ snapshotpostfix }}"
use_rest: always
volume: "{{ datavolumename }}"
vserver: "{{ svmname }}"
hostname: "{{ inventory_hostname }}"
cert_filepath: "{{ certfile }}"
key_filepath: "{{ keyfile }}"
https: true
validate_certs: false
root@sap-jump:~#
Muestra de Ansible Inventory.yml
Este archivo de inventario se crea dinámicamente durante la ejecución del flujo de trabajo y solo se muestra aquí con fines ilustrativos.
ontapservers: hosts: grenada: ansible_host: "grenada" keyfile: "/usr/sap/scripts/ansible/certs/ontap.key" certfile: "/usr/sap/scripts/ansible/certs/ontap.pem" svmname: "svm-sap01" datavolumename: "HN9_sap" snapshotpostfix: " _snap_20221115" clonepostfix: "_clone_20221115"