Configuração de script do fornecedor e manuais do Ansible
O arquivo de configuração do provedor, o script de execução e os playbooks do Ansible a seguir são usados durante a implantação de amostra e a execução do fluxo de trabalho nesta documentação.
|
|
Os scripts de exemplo são fornecidos como estão e não são suportados pelo NetApp. Você pode solicitar a versão atual dos scripts via e-mail para mailto:ng-sapcc em NetApp.com[ng-sapcc em NetApp.com]. |
Arquivo de configuração do provedor NetApp_clone.conf
O arquivo de configuração é criado conforme descrito no "Documentação do SAP lama - Configurando os scripts registrados do SAP Host Agent". Esse arquivo de configuração deve estar localizado no nó de controle do Ansible, onde o agente de host SAP está instalado.
O usuário os configurado sapuser deve ter as permissões apropriadas para executar o script e os playbooks chamados Ansible. Você pode colocar o script em um diretório de script comum. O SAP lama pode fornecer vários parâmetros ao chamar o script.
Além dos parâmetros personalizados, PARAM_ClonePostFix PROP_ClonePostFix , PARAM_ClonePostFix, e PROP_ClonePostFix, muitos outros podem ser entregues, como é mostrado no "Documentação do 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 de provedor NetApp_clone.sh
O script do provedor deve ser armazenado /usr/sap/scripts como configurado no arquivo de configuração do provedor.
Variáveis
As variáveis a seguir são codificadas no script e devem ser adaptadas de acordo.
-
`PRIMARY_CLUSTER=`nome de anfitrião do cluster NetApp>
-
`PRIMARY_SVM=`Nome do SVM onde os volumes do sistema de origem são armazenados>
Os arquivos de certificado PRIMARY_KEYFILE=/usr/sap/scripts/ansible/certs/ontap.key e PRIMARY_CERTFILE=/usr/sap/scripts/ansible/certs/ontap.pem devem ser fornecidos conforme descrito "Módulos do NetApp Ansible - Prepare o ONTAP" em .
|
|
Se diferentes clusters ou SVMs forem necessários para diferentes sistemas SAP, essas variáveis podem ser adicionadas como parâmetros na definição do provedor SAP lama. |
Função: Criar arquivo de inventário
Para tornar a execução do manual do Ansible mais dinâmica, é criado um inventory. yml arquivo imediatamente. Alguns valores estáticos são configurados na seção variável e alguns são criados dinamicamente durante a execução.
Função: Execute o manual de estratégia do Ansible
Essa função é usada para executar o manual de estratégia do Ansible juntamente com o arquivo criado dinamicamente inventory.yml. A convenção de nomenclatura para os playbooks é netapp_lama_${HookOperationName}.yml. Os valores para ${HookOperationName} dependem da operação Lama e entregues pelo Lama como parâmetro de linha de comando.
Secção Principal
Esta seção contém o plano de execução principal. A variável ${HookOperationName} contém o nome da etapa de substituição Lama e é fornecida pelo Lama quando o script é chamado.
-
Valores com o fluxo de trabalho de clone do sistema e provisionamento de cópia do sistema:
-
CloneVolumes
-
PostCloneVolumes
-
-
Valor com o fluxo de trabalho de destruição do sistema:
-
ServiceConfigRemoção
-
-
Valor com o fluxo de trabalho de atualização do sistema:
-
ClearMountConfig
-
Nome da conexão: CloneVolumes
Com essa etapa, o manual de estratégia do Ansible é executado, o que aciona a operação de clonagem e cópia Snapshot. Os nomes de volume e a configuração de montagem são entregues pelo SAP lama por meio de um arquivo XML definido na variável $MOUNT_XML_PATH. Esse arquivo é salvo porque é usado mais tarde na etapa FinalizeCloneVolumes para criar a nova configuração de ponto de montagem. Os nomes de volume são extraídos do arquivo XML e o manual de estratégia de clonagem do Ansible é executado para cada volume.
|
|
Neste exemplo, a instância AS e os serviços centrais compartilham o mesmo volume. Portanto, a clonagem de volume só é executada quando o número da instância SAP ($SAPSYSTEM) não é 01 . Isso pode diferir em outros ambientes e deve ser alterado em conformidade.
|
Nome da caixa: PostCloneVolumes
Durante esta etapa, as propriedades personalizadas ClonePostFix e SnapPostFix a configuração do ponto de montagem para o sistema de destino são mantidas.
As propriedades personalizadas são usadas posteriormente como entrada quando o sistema é desativado durante a ServiceConfigRemoval fase ou ClearMountConfig. O sistema foi projetado para preservar as configurações dos parâmetros personalizados que foram especificados durante o fluxo de trabalho de provisionamento do sistema.
Os valores utilizados neste exemplo são ClonePostFix=_clone_20221115 e SnapPostFix=_snap_20221115.
Para o volume HN9_sap, o arquivo Ansible criado dinamicamente inclui os seguintes valores datavolumename: : HN9_sap, snapshotpostfix: _snap_20221115 E clonepostfix: _clone_20221115.
O que leva ao nome do snapshot no volume HN9_sap HN9_sap_snap_20221115 e ao nome do clone de volume criado HN9_sap_clone_20221115 .
|
|
Propriedades personalizadas podem ser usadas de qualquer forma para preservar os parâmetros usados durante o processo de provisionamento. |
A configuração do ponto de montagem é extraída do arquivo XML que foi entregue pelo Lama CloneVolume na etapa. O ClonePostFix é adicionado aos nomes de volume e enviado de volta ao Lama através da saída de script padrão. A funcionalidade é descrita em "SAP Nota 1889590".
|
|
Neste exemplo, qtrees no sistema de armazenamento são usados como uma maneira comum de colocar dados diferentes em um único volume. Por exemplo, HN9_sap mantém os pontos de montagem para /usr/sap/HN9 /sapmnt/HN9 , /home/hn9adm e . Os subdiretórios funcionam da mesma forma. Isso pode diferir em outros ambientes e deve ser alterado em conformidade.
|
HookOperationName: ServiceConfigRemoval
Nessa etapa, o manual de estratégia do Ansible responsável pela exclusão dos clones de volume está sendo executado.
Os nomes de volume são entregues pelo SAP lama através do arquivo de configuração de montagem e as propriedades personalizadas ClonePostFix e SnapPostFix são usados para entregar os valores dos parâmetros originalmente especificados durante o fluxo de trabalho de provisionamento do sistema (consulte a nota em HookOperationName = PostCloneVolumes).
Os nomes de volume são extraídos do arquivo xml, e o manual de estratégia de clonagem do Ansible é executado para cada volume.
|
|
Neste exemplo, a instância AS e os serviços centrais compartilham o mesmo volume. Portanto, a exclusão de volume só é executada quando o número da instância SAP ($SAPSYSTEM) não é 01 . Isso pode diferir em outros ambientes e deve ser alterado em conformidade.
|
Nome da conexão: ClearMountConfig
Nessa etapa, o manual do Ansible, responsável pela exclusão dos clones de volume durante um fluxo de trabalho de atualização do sistema, está sendo executado.
Os nomes de volume são entregues pelo SAP lama através do arquivo de configuração de montagem e as propriedades personalizadas ClonePostFix e SnapPostFix são usados para entregar os valores dos parâmetros originalmente especificados durante o fluxo de trabalho de provisionamento do sistema.
Os nomes de volume são extraídos do arquivo XML e o manual de estratégia de clonagem do Ansible é executado para cada volume.
|
|
Neste exemplo, a instância AS e os serviços centrais compartilham o mesmo volume. Portanto, a exclusão de volume só é executada quando o número da instância SAP ($SAPSYSTEM) não é 01 . Isso pode diferir em outros ambientes e deve ser alterado em conformidade.
|
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
O manual de estratégia que é executado durante a etapa CloneVolumes do fluxo de trabalho clone do sistema lama é uma combinação create_snapshot.yml de e create_clone.yml (consulte "Módulos do NetApp Ansible - arquivos YAML"). Esse manual de estratégia pode ser facilmente estendido para cobrir casos de uso adicionais, como clonagem de operações secundárias e de divisão 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
Manual de instruções do Ansible NetApp_lama_ServiceConfigRemoval.yml
O manual de estratégia que é executado durante ServiceConfigRemoval a fase do fluxo de trabalho de destruição do sistema Lama é uma combinação delete_clone.yml de e delete_snapshot.yml (consulte "Módulos do NetApp Ansible - arquivos YAML"). Ela deve estar alinhada às etapas de execução do netapp_lama_CloneVolumes manual de estratégia.
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:~#
Manual do Ansible NetApp_lama_ClearMountConfig.yml
O manual de estratégia, que é executado durante netapp_lama_ClearMountConfig a fase do fluxo de trabalho de atualização do sistema lama, é uma combinação delete_clone.yml de e delete_snapshot.yml (consulte "Módulos do NetApp Ansible - arquivos YAML"). Ela deve estar alinhada às etapas de execução do netapp_lama_CloneVolumes manual de estratégia.
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:~#
Exemplo de inventário do Ansible.yml
Este arquivo de inventário é dinamicamente construído durante a execução do fluxo de trabalho, e só é mostrado aqui para ilustração.
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"