Skip to main content
NetApp Solutions SAP
La versione in lingua italiana fornita proviene da una traduzione automatica. Per eventuali incoerenze, fare riferimento alla versione in lingua inglese.

Configurazione dello script del provider e playbook Ansible

Collaboratori

I seguenti file di configurazione del provider, script di esecuzione e playbook Ansible vengono utilizzati durante l'implementazione di esempio e l'esecuzione del flusso di lavoro in questa documentazione.

Nota Gli script di esempio vengono forniti così come sono e non sono supportati da NetApp. Puoi richiedere la versione corrente degli script via email a ng-sapcc@netapp.com.

File di configurazione del provider netapp_clone.conf

Il file di configurazione viene creato come descritto in "Documentazione SAP lama - Configurazione degli script registrati SAP host Agent". Questo file di configurazione deve trovarsi nel nodo di controllo Ansible in cui è installato l'agente host SAP.

L'utente del sistema operativo configurato sapuser Deve disporre delle autorizzazioni appropriate per eseguire lo script e i playbook Ansible denominati. È possibile inserire lo script in una directory di script comune. SAP lama può fornire più parametri quando si chiama lo script.

Oltre ai parametri personalizzati, PARAM_ClonePostFix, PROP_ClonePostFix, PARAM_ClonePostFix, e. PROP_ClonePostFix, molti altri possono essere consegnati, come mostrato nella "Documentazione 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

Script del provider netapp_clone.sh

Lo script del provider deve essere memorizzato in /usr/sap/scripts come configurato nel file di configurazione del provider.

Variabili

Le seguenti variabili sono codificate nello script e devono essere adattate di conseguenza.

  • PRIMARY_CLUSTER=<hostname of netapp cluster>

  • PRIMARY_SVM=<SVM name where source system volumes are stored>

I file di certificato PRIMARY_KEYFILE=/usr/sap/scripts/ansible/certs/ontap.key e. PRIMARY_CERTFILE=/usr/sap/scripts/ansible/certs/ontap.pem deve essere fornito come descritto in "Moduli NetApp Ansible - preparazione di ONTAP".

Nota Se sono richiesti cluster o SVM diversi per diversi sistemi SAP, queste variabili possono essere aggiunte come parametri nella definizione del provider SAP lama.

Funzione: Creazione del file di inventario

Per rendere l'esecuzione di Ansible Playbook più dinamica, un inventory. yml il file viene creato in tempo reale. Alcuni valori statici sono configurati nella sezione delle variabili e alcuni vengono creati dinamicamente durante l'esecuzione.

Funzione: Eseguire il playbook Ansible

Questa funzione viene utilizzata per eseguire il playbook Ansible insieme a quello creato dinamicamente inventory.yml file. La convenzione di naming per i playbook è netapp_lama_${HookOperationName}.yml. I valori per ${HookOperationName} Dipende dall'operazione lama e viene consegnato da lama come parametro della riga di comando.

Sezione principale

Questa sezione contiene il principale piano di esecuzione. La variabile ${HookOperationName} Contiene il nome del passo lama replacement e viene fornito da lama quando lo script viene chiamato.

  • Valori con il clone di sistema e il workflow di provisioning delle copie di sistema:

    • CloneVolumes

    • PostCloneVolumes

  • Valore con il workflow di distruzione del sistema:

    • ServiceConfigRemoval

  • Valore con il workflow di refresh del sistema:

    • ClearMountConfig

HookOperationName = CloneVolumes

Con questo passaggio, viene eseguito il playbook Ansible, che attiva l'operazione di copia e clonazione Snapshot. I nomi dei volumi e la configurazione del montaggio vengono trasferiti da SAP lama attraverso un file XML definito nella variabile $MOUNT_XML_PATH. Questo file viene salvato perché viene utilizzato successivamente nel passo FinalizeCloneVolumes per creare la nuova configurazione del punto di montaggio. I nomi dei volumi vengono estratti dal file XML e viene eseguito il playbook di clonazione Ansible per ciascun volume.

Nota In questo esempio, l'istanza AS e i servizi centrali condividono lo stesso volume. Pertanto, la clonazione del volume viene eseguita solo quando il numero dell'istanza SAP ($SAPSYSTEM) non lo è 01. Questo potrebbe differire in altri ambienti e deve essere modificato di conseguenza.

HookOperationName = PostCloneVolumes

Durante questa fase, le proprietà personalizzate ClonePostFix e. SnapPostFix e la configurazione del punto di montaggio per il sistema di destinazione viene mantenuta.

Le proprietà personalizzate vengono utilizzate in seguito come input quando il sistema viene dismesso durante il ServiceConfigRemoval oppure ClearMountConfig fase. Il sistema è progettato per conservare le impostazioni dei parametri personalizzati specificati durante il flusso di lavoro di provisioning del sistema.

I valori utilizzati in questo esempio sono ClonePostFix=_clone_20221115 e. SnapPostFix=_snap_20221115.

Per il volume HN9_sap, Il file Ansible creato dinamicamente include i seguenti valori: datavolumename: HN9_sap, snapshotpostfix: _snap_20221115, e. clonepostfix: _clone_20221115.

Che porta al nome dello snapshot sul volume HN9_sap HN9_sap_snap_20221115 e il nome del clone del volume creato HN9_sap_clone_20221115.

Nota Le proprietà personalizzate possono essere utilizzate in qualsiasi modo per preservare i parametri utilizzati durante il processo di provisioning.

La configurazione del punto di montaggio viene estratta dal file XML consegnato da lama in CloneVolume fase. Il ClonePostFix Viene aggiunto ai nomi dei volumi e inviato a lama attraverso l'output dello script predefinito. La funzionalità è descritta in "Nota SAP 1889590".

Nota In questo esempio, i qtree sul sistema storage vengono utilizzati come metodo comune per posizionare dati diversi su un singolo volume. Ad esempio, HN9_sap contiene i punti di montaggio per /usr/sap/HN9, /sapmnt/HN9, e. /home/hn9adm. Le sottodirectory funzionano allo stesso modo. Questo potrebbe differire in altri ambienti e deve essere modificato di conseguenza.

HookOperationName = ServiceConfigRemoval

In questa fase, è in esecuzione il playbook Ansible responsabile dell'eliminazione dei cloni dei volumi.

I nomi dei volumi vengono trasferiti da SAP lama attraverso il file di configurazione del montaggio e le proprietà personalizzate ClonePostFix e. SnapPostFix vengono utilizzati per consegnare i valori dei parametri originariamente specificati durante il flusso di lavoro di provisioning del sistema (vedere la nota all'indirizzo HookOperationName = PostCloneVolumes).

I nomi dei volumi vengono estratti dal file xml e viene eseguito il playbook di clonazione Ansible per ciascun volume.

Nota In questo esempio, l'istanza AS e i servizi centrali condividono lo stesso volume. Pertanto, l'eliminazione del volume viene eseguita solo quando il numero dell'istanza SAP ($SAPSYSTEM) non lo è 01. Questo potrebbe differire in altri ambienti e deve essere modificato di conseguenza.

HookOperationName = ClearMountConfig

In questa fase, è in esecuzione il playbook Ansible, responsabile dell'eliminazione dei cloni dei volumi durante un flusso di lavoro di refresh del sistema.

I nomi dei volumi vengono trasferiti da SAP lama attraverso il file di configurazione del montaggio e le proprietà personalizzate ClonePostFix e. SnapPostFix vengono utilizzati per consegnare i valori dei parametri originariamente specificati durante il flusso di lavoro di provisioning del sistema.

I nomi dei volumi vengono estratti dal file XML e viene eseguito il playbook di clonazione Ansible per ciascun volume.

Nota In questo esempio, l'istanza AS e i servizi centrali condividono lo stesso volume. Pertanto, l'eliminazione del volume viene eseguita solo quando il numero dell'istanza SAP ($SAPSYSTEM) non lo è 01. Questo potrebbe differire in altri ambienti e deve essere modificato di conseguenza.
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

Ansible Playbook netapp_lama_CloneVolumes.yml

Il playbook che viene eseguito durante la fase CloneVolumes del flusso di lavoro dei cloni del sistema lama è una combinazione di create_snapshot.yml e. create_clone.yml (vedere "Moduli NetApp Ansible - file YAML"). Questo manuale può essere facilmente esteso per coprire ulteriori casi di utilizzo come la clonazione da operazioni secondarie e di suddivisione dei cloni.

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

Ansible Playbook netapp_lama_ServiceConfigRemoval.yml

Il playbook eseguito durante il ServiceConfigRemoval Fase del sistema lama il workflow Destroy è una combinazione di delete_clone.yml e. delete_snapshot.yml (vedere "Moduli NetApp Ansible - file YAML"). Deve essere allineato alle fasi di esecuzione di netapp_lama_CloneVolumes playbook.

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:~#

Ansible Playbook netapp_lama_ClearMountConfig.yml

Il manuale, che viene eseguito durante il netapp_lama_ClearMountConfig La fase del flusso di lavoro di refresh del sistema lama è una combinazione di delete_clone.yml e. delete_snapshot.yml (vedere "Moduli NetApp Ansible - file YAML"). Deve essere allineato alle fasi di esecuzione di netapp_lama_CloneVolumes playbook.

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:~#

Esempio di Ansible inventory.yml

Questo file di inventario viene creato in modo dinamico durante l'esecuzione del workflow e viene mostrato qui solo a scopo illustrativo.

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"