Skip to main content
NetApp Solutions SAP
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Configuración de scripts de proveedor y libros de estrategia de Ansible

Colaboradores

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.

Nota 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".

Nota 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.

Nota 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.

Nota 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".

Nota 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.

Nota 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.

Nota 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"