Bash Example of
Restoring the
Instance
This example shows
how to invoke
curl
from
a bash script to restore a
instance in a newly deployed
. This operation is the second phase of restoring the
appliance from a backup file.
The example uses local user
name and password authentication because the
vSphere
Automation
API endpoint is not yet running when you restore the
appliance. The client must connect to port 5480 for this operation.
This example depends on
certain variables that specify the source and destination for the restore
operation. For simplicity, the variables are hard-coded at the start of the
bash script.
This example assumes the
backup image is not encrypted.
#!/bin/bash ##### EDITABLE BY USER to specify vCenter Server instance and backup location. ##### VC_ADDRESS=vc_server_ip VC_USER=sso_user VC_PASSWORD=sso_pass FTP_ADDRESS=storage_server FTP_USER=ftpuser FTP_PASSWORD=ftpuser BACKUP_FOLDER=backup BACKUP_SUBFOLDER=2016-07-08-09-10-11 ############################ # Create a message body for the restore request. cat << EOF > task.json { "piece": { "location_type":"FTP", "location":"ftp://$FTP_ADDRESS/$BACKUP_FOLDER/$BACKUP_SUBFOLDER", "location_user":"$FTP_USER", "location_password":"$FTP_PASSWORD" } } EOF # Issue a request to start the restore operation. TIME=$(date +%Y-%m-%d-%H-%M-%S) echo Starting restore $TIME $VC_B64_PASS >> restore.log curl -k -u "$VC_USER:$VC_PASSWORD" \ -H 'Accept:application/json' \ -H 'Content-Type:application/json' \ -X POST \ "https://$VC_ADDRESS:5480/rest/com/vmware/appliance/recovery/restore/job" \ --data @task.json 2>restore.log >response.txt cat response.txt >> restore.log echo '' >> restore.log # Monitor progress of the operation until it is complete. STATE=INPROGRESS PROGRESS=0 until [ "$STATE" != "INPROGRESS" ] do echo "Restore job state: $STATE ($PROGRESS%)" sleep 10s curl -s -k -u "$VC_USER:$VC_PASSWORD" \ -H 'Accept:application/json' \ -H 'Content-Type:application/json' \ -X POST -d '' \ "https://$VC_ADDRESS:5480/rest/com/vmware/appliance/recovery/restore/job?~action=get" \ >response.txt cat response.txt >> restore.log echo '' >> restore.log PROGRESS=$(awk \ '{if (match($0,/"progress":\w+/)) print substr($0, RSTART+11,RLENGTH-11);}' \ response.txt) STATE=$(awk \ '{if (match($0,/"state":"\w+"/)) print substr($0, RSTART+9, RLENGTH-10);}' \ response.txt) done # Report job completion and clean up temporary files. echo '' echo Restore job completed. rm -f task.json rm -f response.txt echo '' >> restore.log