How to backup vCenter Server Appliance 6.5
vCenter Server (be it the appliance or not) is the critical management component of every vSphere environment. Therefore it is critical to backup it at regular basis to have the possibility to restore configuration prior to failure. With the vSphere 6.5 release, vCenter Server Appliance (vCSA) received the possibility to perform the backup of its configuration from appliance management interface (not only but I will describe this later on).
The vCenter Server Appliance backup and restore feature supports a number of communication protocols:
- FTP
- FTPS
- SCP
- HTTP
- HTTPS
Today I am going to show you how to backup vCenter Server Appliance 6.5 using FTP/FTPS protocol and from the command line.
Backup vCenter Server Appliance 6.5 (vCSA) using FTP/FTPS
- Log in to vCenter Server Appliance IP/FQDN VAMI URL - **https://IP_OR_FQDN:5480 **and type username and password used during installation.
- Once logged in go to **Summary **and click Backup.
- Click Backup and provide FTP/FTPS server details.
- On the next page choose if you wish to backup inventory and configuration or if you wish to include SEAT Database (Statistics, Events, and Tasks).
- On the last screen, we see the summary of FTP/FTPS backup.
- Backup process starts.
- After few minutes vCenter Server Appliance (vCSA) is successfully backed up.
Automated backup of vCenter Server Appliance 6.5 (vCSA)
As you saw the manual process of vCSA 6.5 backup is easy. The only problem with it that there is no possibility to schedule it from the appliance management interface. I hope this feature will be incorporated in future releases.
Fortunately for us, VMware created a BASH script which can be executed from cron and automated.
#!/bin/bash
##### EDITABLE BY USER to specify vCenter Server instance and backup destination. #####
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
############################
# 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 for the backup request.
TIME=$(date +%Y-%m-%d-%H-%M-%S)
cat << EOF <task.json
{ "piece":
{
"location_type":"FTP",
"comment":"Automatic backup",
"parts":["seat"],
"location":"ftp://$FTP_ADDRESS/$BACKUP_FOLDER/$TIME",
"location_user":"$FTP_USER",
"location_password":"$FTP_PASSWORD"
}
}
EOF
# Issue a request to start the backup operation.
echo Starting backup $TIME <<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
On the VMware page, there is a small error which won’t allow you to run the script (I already informed internal resources to correct it).
Simply in line 31 remove space before **EOF.
As you see script executed successfully.
Source of the script: http://pubs.vmware.com/vsphere-65/topic/com.vmware.vsphere.vcsapg-rest.doc/GUID-222400F3-678E-4028-874F-1F83036D2E85.html
Schedule automated vCenter Server Appliance (vCSA) backup using cron
I’ve created a shell script named **vcsa_backup.sh **which I will add to cron. In case you are new to cron I recommend this website http://crontab-generator.org/ to easily schedule backup.
From a vCSA shell type **crontab -e ** and we will enter edit mode where we simply specify when and what shall be executed.
In my case, I scheduled it for every day at 9 PM.
0 21 * * * /root/vcsa_backup.sh </dev/null 2<&1
Other resources
There are as well different ways to backup vCenter Server Appliance 6.5. Please take a look at Brian Graf’s PowerCLI script which allows automating vCSA Backup.
Summary
I hope this post will help you to easily backup of vCenter Server Appliance (vCSA) 6.5 and to protect your environment in case of a failure or issue.