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"