Skip to main content
NetApp Solutions SAP
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

プロバイダスクリプトの設定とAnsibleのプレイブック

共同作成者

このドキュメントの導入例とワークフローの実行時には、次のプロバイダ構成ファイル、実行スクリプト、およびAnsibleプレイブックを使用します。

メモ このサンプルスクリプトは現状のまま提供されており、ネットアップではサポートしていません。スクリプトの最新バージョンは、mailto:ng-sapcc@netapp.com [ng-sapcc@netapp.com ^]にEメールでリクエストできます。

プロバイダ構成ファイルNetApp_clone.conf

構成ファイルは、の説明に従って作成されます "SAP LaMaドキュメント-「Configuring SAP Host Agent Registered Scripts"。この構成ファイルは、SAPホストエージェントがインストールされているAnsibleコントロールノードに配置する必要があります。

設定されているos-user sapuser スクリプトおよび呼び出されたAnsibleプレイブックを実行するための適切な権限が必要です。このスクリプトは共通のスクリプトディレクトリに配置できます。SAP LaMaは、スクリプトを呼び出す際に複数のパラメータを提供します。

カスタムパラメータに加えて、 PARAM_ClonePostFixPROP_ClonePostFix、 `PARAM_ClonePostFix`および `PROP_ClonePostFix`に示されているように、他の多くは手渡されることができる "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

プロバイダスクリプトnetapp_clone.sh

プロバイダスクリプトはに保存する必要があります /usr/sap/scripts プロバイダの構成ファイルで設定されているとおりです。

変数( variables )

次の変数はスクリプトでハードコードされており、適宜変更する必要があります。

  • PRIMARY_CLUSTER=<hostname of netapp cluster>

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

証明書ファイル PRIMARY_KEYFILE=/usr/sap/scripts/ansible/certs/ontap.key および PRIMARY_CERTFILE=/usr/sap/scripts/ansible/certs/ontap.pem の説明に従って指定する必要があります "NetApp Ansibleモジュール- ONTAP を準備"

メモ それぞれのSAPシステムで異なるクラスタやSVMが必要な場合は、SAP LaMaプロバイダ定義のパラメータとして追加できます。

機能:インベントリファイルを作成する

Ansibleプレイブックをより動的に実行するために、を使用します inventory. yml その場でファイルが作成されます。一部の静的値は変数セクションで設定され、一部は実行中に動的に作成されます。

関数:Ansibleプレイブックを実行する

この関数は、Ansibleプレイブックと動的に作成されるを実行するために使用します inventory.yml ファイル。プレイブックの命名規則はです netapp_lama_${HookOperationName}.yml。の値 ${HookOperationName} LaMaの運用に依存し、LaMaをコマンドラインパラメータとして引き継ぎます。

セクションMain

ここでは、主な実行計画について説明します。変数 ${HookOperationName} LaMaの代替手順の名前が含まれ、スクリプトが呼び出されるとLaMaによって提供されます。

  • システムクローンとシステムコピーのプロビジョニングワークフローを使用した値:

    • CloneVolumes

    • CloneVolumes

  • system destroyワークフローを使用した値:

    • ServiceConfigRemovalサービス構成の削除

  • システムの更新ワークフローによる値:

    • ClearMountConfigの場合

HookOperationName=CloneVolumes

この手順では、Ansibleプレイブックが実行され、Snapshotコピーとクローニングの処理が開始されます。ボリューム名とマウント設定は、変数で定義されたXMLファイルを使用してSAP LaMaによって引き継がれます $MOUNT_XML_PATH。このファイルは、あとで手順で使用するために保存されます FinalizeCloneVolumes 新しいマウントポイント設定を作成します。ボリューム名がXMLファイルから抽出され、各ボリュームに対してAnsibleのクローニングプレイブックが実行されます。

メモ この例では、ASインスタンスと中央サービスは同じボリュームを共有します。したがって、ボリュームクローニングはSAPインスタンス番号でのみ実行されます ($SAPSYSTEM)はではありません 01。これは他の環境とは異なる場合があるため、変更する必要があります。

HookOperationName=PostCloneVolumes

このステップでは、ユーザー定義プロパティを指定します ClonePostFix および SnapPostFix また、ターゲットシステムのマウントポイント設定が保持されます。

カスタムプロパティは、あとでででの運用停止時に入力として使用されます ServiceConfigRemoval または ClearMountConfig フェーズ:システムのプロビジョニングワークフローで指定されたカスタムパラメータの設定を保持するように設計されています。

この例で使用されている値はです ClonePostFix=_clone_20221115 および SnapPostFix=_snap_20221115

ボリューム HN9_sap`は、動的に作成されるAnsibleファイルに次の値が含まれています。 `datavolumenameHN9_sapsnapshotpostfix: _snap_20221115`および `clonepostfix: _clone_20221115

これにより、ボリュームHN9_SAP上のSnapshot名に変換されます HN9_sap_snap_20221115 作成されたボリュームクローンの名前も表示されます HN9_sap_clone_20221115

メモ カスタムプロパティを使用すると、プロビジョニングプロセスで使用されるパラメータを保持できます。

マウントポイントの設定は、でLaMaに引き継がれたXMLファイルから抽出されます CloneVolume ステップ。。 ClonePostFix がボリューム名に追加され、デフォルトのスクリプト出力でLaMaに返信されます。機能については、を参照してください "SAPノート1889590"

メモ この例では、ストレージシステム上のqtreeを、単一のボリュームに異なるデータを配置する一般的な方法として使用します。例: HN9_sap のマウントポイントを保持します /usr/sap/HN9/sapmnt/HN9`および `/home/hn9adm。サブディレクトリも同様に機能します。これは他の環境とは異なる場合があるため、変更する必要があります。

HookOperationName = ServiceConfigRemoval

この手順では、ボリュームクローンの削除を実行するAnsibleプレイブックを使用します。

ボリューム名は、マウント構成ファイルとカスタムプロパティを通じてSAP LaMaから引き継がれます ClonePostFix および SnapPostFix は、システムプロビジョニングワークフローで最初に指定されたパラメータの値を渡すために使用します(の注を参照) HookOperationName = PostCloneVolumes)。

ボリューム名がXMLファイルから抽出され、各ボリュームに対してAnsibleのクローニングプレイブックが実行されます。

メモ この例では、ASインスタンスと中央サービスは同じボリュームを共有します。そのため、ボリュームの削除はSAPインスタンス番号がの場合にのみ実行されます ($SAPSYSTEM)はではありません 01。これは他の環境とは異なる場合があるため、変更する必要があります。

HookOperationName=ClearMountConfig

この手順では、システムの更新ワークフロー中にボリュームクローンを削除するAnsibleプレイブックを実行します。

ボリューム名は、マウント構成ファイルとカスタムプロパティを通じてSAP LaMaから引き継がれます ClonePostFix および SnapPostFix は、システムプロビジョニングワークフローで最初に指定されたパラメータの値を渡すために使用します。

ボリューム名がXMLファイルから抽出され、各ボリュームに対してAnsibleのクローニングプレイブックが実行されます。

メモ この例では、ASインスタンスと中央サービスは同じボリュームを共有します。そのため、ボリュームの削除はSAPインスタンス番号がの場合にのみ実行されます ($SAPSYSTEM)はではありません 01。これは他の環境とは異なる場合があるため、変更する必要があります。
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 _CloneVolume.yml

LaMaシステムのクローニングワークフローのCloneVolumesの手順で実行されるPlaybookは、を組み合わせたものです create_snapshot.yml および create_clone.yml (を参照) "NetApp Ansibleモジュール- YAMLファイル")。このプレイブックは、セカンダリからのクローニング処理やクローンスプリット処理など、他のユースケースにも簡単に対応できます。

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

実行されるプレイブック ServiceConfigRemoval LaMaシステムの破棄ワークフローのフェーズは、のフェーズです delete_clone.yml および delete_snapshot.yml (を参照) "NetApp Ansibleモジュール- YAMLファイル")。の実行ステップに合わせて調整する必要があります 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

プレイブックは、の実行時に指定します netapp_lama_ClearMountConfig LaMaシステムの更新ワークフローのフェーズは、のフェーズです delete_clone.yml および delete_snapshot.yml (を参照) "NetApp Ansibleモジュール- YAMLファイル")。の実行ステップに合わせて調整する必要があります 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のinventory.ymlの例

このインベントリファイルは、ワークフローの実行時に動的に作成されます。このファイルは、説明のためにのみここに表示されています。

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"