URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

vCenter Server ApplianceのバックアップをSCPで取得するスクリプト

 vCenter Server Appliance 6.5は自前でバックアップ機能を持っており、Management Console (https://VCSAのIPアドレス:5480) から簡単に実行することができます。
 これをシェルスクリプトで実行する方法も、オフィシャルのManagement Programming Guideにサンプルスクリプトがありますが、バックアップ先がFTPになっています。
 さすがに最近はFTPはないだろうというか、このためにFTPサーバを設定するのが面倒なので、SCPに変更したときのメモ。

 まあ、基本はスクリプト中のバックアップに利用するプロトコル(location_type)を"FTP"から"SCP"に、バックアップ先(location)の指定方法を"ftp://$FTP_ADDRESS/~"から"$SCP_ADDRESS/~"に変更しただけです。
 あとは"$FTP_~"となっていた変数名を"$SCP_~"に変更したりとか、自分が見やすいように整形したりとか、動作に関係ない軽微な変更くらい。
 最後に、古いバックアップを自動で削除する部分を追加してます。

#!/bin/bash ##### EDITABLE BY USER to specify vCenter Server instance and backup destination. ##### VC_ADDRESS="192.168.1.1" VC_USER="administrator@vsphere.local" VC_PASSWORD="password" SCP_ADDRESS="192.168.1.10" SCP_USER="backup" SCP_PASSWORD="backuppassword" BACKUP_FOLDER="backup" ####################################################################################### # Authenticate with basic credentials. curl -u "$VC_USER:$VC_PASSWORD" \ -X POST \ -k --cookie-jar cookies.txt \ "https://$VC_ADDRESS/rest/com/vmware/cis/session" # Create a message body json for the backup request. TIME=$(date +%Y-%m-%d-%H-%M-%S) cat << EOF >task.json { "piece": { "location_type":"SCP", "comment":"Automatic backup", "parts":["seat"], "location":"$SCP_ADDRESS/$BACKUP_FOLDER/$TIME", "location_user":"$SCP_USER", "location_password":"$SCP_PASSWORD" } } EOF # Issue a request to start the backup operation. echo '' >>backup.log echo Starting backup $TIME >>backup.log echo '' >>backup.log curl -k --cookie cookies.txt \ -H 'Accept:application/json' \ -H 'Content-Type:application/json' \ -X POST \ --data @task.json 2>>backup.log >response.txt \ "https://$VC_ADDRESS/rest/appliance/recovery/backup/job" cat response.txt >>backup.log echo '' >>backup.log # Parse the response to locate the unique identifier of the backup operation. ID=$(awk '{if (match($0,/"id":"\w+-\w+-\w+"/)) \ print substr($0, RSTART+6, RLENGTH-7);}' \ response.txt) echo 'Backup job id: '$ID # Monitor progress of the operation until it is complete. PROGRESS=INPROGRESS until [ "$PROGRESS" != "INPROGRESS" ] do sleep 10s curl -k --cookie cookies.txt \ -H 'Accept:application/json' \ --globoff \ "https://$VC_ADDRESS/rest/appliance/recovery/backup/job/$ID" \ >response.txt cat response.txt >>backup.log echo '' >>backup.log PROGRESS=$(awk '{if (match($0,/"state":"\w+"/)) \ print substr($0, RSTART+9, RLENGTH-10);}' \ response.txt) echo 'Backup job state: '$PROGRESS done # Report job completion and clean up temporary files. echo '' echo "Backup job completion status: $PROGRESS" rm -f task.json rm -f response.txt rm -f cookies.txt echo '' >>backup.log # Remove old backup find /$BACKUP_FOLDER/* -type d -ctime +2 -exec rm -rf {} + exit

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

プロフィール

1020@管理人

都内を彷徨っているインフラエンジニアとかいう雑用係。いつだって眠い…。

最近のつぶやき

@umkn1020 (08/13-08:37)
RT @KUMAN_R: 昔よくお世話になっていたMozillaが全従業員約1/4の250人をレイオフとの事で、何だか時代の変遷を感じる。収益の柱であるFirefox苦戦中にコロナ追撃でみたいな感じなのかな。今後、現状を認識・克服し、ブラウザを超える魅力的な技術・製品を追求して…
@umkn1020 (08/12-14:00)
RT @rioriost: あ、あ、その雲、もうちょっと南に来て… https://t.co/mD4CoTq2nO
@umkn1020 (08/12-13:52)
あぁ…やっぱり自宅も短時間とはいえ停電したのか…。たぶんルータが復旧してからアラートメールがバラバラと届きだした
@umkn1020 (08/12-13:44)
喫茶店が停電したw
@umkn1020 (08/12-13:39)
昼食に出てるけど、天気が荒れて帰れん…

エントリーリスト

カテゴリーリスト

タグ