Skip to content

Instantly share code, notes, and snippets.

@chgeuer
Last active April 13, 2018 12:20
Show Gist options
  • Save chgeuer/ab74def086f18bde08afba640a5b5370 to your computer and use it in GitHub Desktop.
Save chgeuer/ab74def086f18bde08afba640a5b5370 to your computer and use it in GitHub Desktop.
      ___           ___           ___
     /__/\         /  /\         /  /\                             )      (
     \  \:\       /  /:/_       /  /:/         (    (       (    ( /(      )\ )
      \__\:\     /  /:/ /\     /  /:/       ( )\   )\      )\   )\())  ( (()/(
  ___ /  /::\   /  /:/ /:/_   /  /:/  ___   )((_|(((_)(  (((_)|((_)\   )\ /(_))
 /__/\  /:/\:\ /__/:/ /:/ /\ /__/:/  /  /\  ((_)_ )\ _ )\ )\___|_ ((_) ((_|_))
 \  \:\/:/__\/ \  \:\/:/ /:/ \  \:\ /  /:/  | _ )(_)_\(_|(/ __| |/ / | | | _ \
  \  \::/       \  \::/ /:/   \  \:\  /:/   | _ \ / _ \  | (__  ' <| |_| |  _/
   \  \:\        \  \:\/:/     \  \:\/:/    |___//_/ \_\  \___|_|\_\\___/|_|
    \  \:\        \  \::/       \  \::/
     \__\/         \__\/         \__\/

App-consistent backup

mkdir /etc/azure

# Create VMSnapshotScriptPluginConfig.json, pre.sh and post.sh

chmod 0600 /etc/azure/VMSnapshotScriptPluginConfig.json
chmod 0700 /etc/azure/pre.sh /etc/azure/post.sh
chown root.root /etc/azure/*

/etc/azure/VMSnapshotScriptPluginConfig.json

{                                                   
    "pluginName" : "ScriptRunner",                  
    "preScriptLocation" : "/etc/azure/pre.sh",      
    "postScriptLocation" : "/etc/azure/post.sh",    
    "preScriptParams" : ["", ""],                   
    "postScriptParams" : ["", ""],                  
    "preScriptNoOfRetries" : 0,                     
    "postScriptNoOfRetries" : 0,                    
    "timeoutInSeconds" : 30,                        
    "continueBackupOnFailure" : true,               
    "fsFreezeEnabled" : false
 }

/etc/azure/pre.sh

#!/bin/bash

MY_BACKUP_SOURCE_FILES=/etc/azure
ARCHIVE_NAME="$(date  +%Y-%m-%d--%H-%M-%S).tar.gz"
BACKUP_DESTINATION=/sybase/archive

tar cvfz "${BACKUP_DESTINATION}/${ARCHIVE_NAME}" "${MY_BACKUP_SOURCE_FILES}"

LOG="${BACKUP_DESTINATION}/log.txt"
touch $LOG
echo "Created ${ARCHIVE_NAME}" >> "${LOG}"

/etc/azure/post.sh

#!/bin/bash

MESSAGE="Running post.sh on $(date  +%Y-%m-%d--%H-%M-%S)"
BACKUP_DESTINATION=/sybase/archive
LOG="${BACKUP_DESTINATION}/log.txt"

touch $LOG
echo "${MESSAGE}" >> "${LOG}"

Perl Stdout

#!/usr/bin/perl

open(file, "> log.txt");
print file "Whatever you want to say";
close(file);
GET https://management.azure.com/tenants?api-version=2016-06-01
Authorization: {{$aadToken new public {{azureTenantID}} }}
#################
GET https://management.azure.com/tenants?api-version=2016-06-01
Authorization: {{$aadToken public {{azureTenantID}} }}
########################
GET https://management.azure.com/subscriptions?api-version=2016-06-01 HTTP/1.1
Authorization: {{$aadToken public {{azureTenantID}} }}
##########################
GET https://management.azure.com/subscriptions/{{azureSubscriptionID}}?api-version=2016-06-01 HTTP/1.1
Authorization: {{$aadToken public {{azureTenantID}} }}
############################
@rgname = asebackup
GET https://management.azure.com/subscriptions/{{azureSubscriptionID}}/resourcegroups/{{rgname}}?api-version=2017-05-10
Authorization: {{$aadToken public {{azureTenantID}} }}
#######################
# https://docs.microsoft.com/en-us/rest/api/backup/backupprotecteditems/list
@rgname = asebackup
@vaultName = asebackup
GET https://management.azure.com/Subscriptions/{{azureSubscriptionID}}/resourcegroups/{{rgname}}/providers/Microsoft.RecoveryServices/vaults/{{vaultName}}/backupProtectedItems?api-version=2017-07-01
Authorization: {{$aadToken public {{azureTenantID}} }}
#####################
# https://docs.microsoft.com/en-us/rest/api/backup/backupprotectioncontainers/list
@rgname = asebackup
@vaultName = asebackup
GET https://management.azure.com/Subscriptions/{{azureSubscriptionID}}/resourcegroups/{{rgname}}/providers/Microsoft.RecoveryServices/vaults/{{vaultName}}/backupProtectionContainers?api-version=2016-12-01
Authorization: {{$aadToken public {{azureTenantID}} }}
#############################
# Backup Status - Get
# https://docs.microsoft.com/en-us/rest/api/backup/backupstatus/get
@rgname = asebackup
@vaultName = asebackup
@azureRegion = westeurope
@vmname = myasevm
POST https://management.azure.com/Subscriptions/{{azureSubscriptionID}}/providers/Microsoft.RecoveryServices/locations/westeurope/backupStatus?api-version=2016-06-01
Authorization: {{$aadToken public {{azureTenantID}} }}
Content-Type: application/json
{
"resourceId": "/subscriptions/{{azureSubscriptionID}}/resourceGroups/{{rgname}}/providers/Microsoft.Compute/VirtualMachines/{{vmname}}",
"resourceType": "VM"
}
###########################
@rgname = asebackup
@vaultName = asebackup
@fabricName = Azure
@containerName = iaasvmcontainer;iaasvmcontainerv2;asebackup;myasevm
@protectedItemName =
GET https://management.azure.com/Subscriptions/{{azureSubscriptionID}}/resourceGroups/{{rgname}}/providers/Microsoft.RecoveryServices/vaults/{{vaultName}}/backupFabrics/{{fabricName}}/protectionContainers/{{containerName}}/items?api-version=2016-12-01
Authorization: {{$aadToken public {{azureTenantID}} }}
#######################
# Trigger fileshare backup: https://docs.microsoft.com/en-us/rest/api/backup/backups/trigger
@rgname = asebackup
@vaultName = asebackup
@fabricName = Azure
@containerName = StorageContainer;storage;asebackup;asebackupshare
@protectedItemName = AzureFileShare;snaps
POST https://management.azure.com/Subscriptions/{{azureSubscriptionID}}/resourceGroups/{{rgname}}/providers/Microsoft.RecoveryServices/vaults/{{vaultName}}/backupFabrics/{{fabricName}}/protectionContainers/{{containerName}}/protectedItems/{{protectedItemName}}/backup?api-version=2016-12-01
Authorization: {{$aadToken public {{azureTenantID}} }}
Content-Type: application/json
{ "properties": { "objectType": "AzureFileShareBackupRequest" } }
###############################
# Trigger VM backup: https://docs.microsoft.com/en-us/rest/api/backup/backups/trigger
@rgname = asebackup
@vaultName = asebackup
@fabricName = Azure
@containerName = iaasvmcontainer;iaasvmcontainerv2;asebackup;myasevm
@protectedItemName = vm;iaasvmcontainerv2;asebackup;myasevm
POST https://management.azure.com/Subscriptions/{{azureSubscriptionID}}/resourceGroups/{{rgname}}/providers/Microsoft.RecoveryServices/vaults/{{vaultName}}/backupFabrics/{{fabricName}}/protectionContainers/{{containerName}}/protectedItems/{{protectedItemName}}/backup?api-version=2016-12-01
Authorization: {{$aadToken public {{azureTenantID}} }}
Content-Type: application/json
{ "properties": { "objectType": "IaasVMBackupRequest" } }
##########################################
# Get Protected Virtual Machine Details
# https://docs.microsoft.com/en-us/rest/api/backup/protecteditems/get#get_protected_virtual_machine_details
@rgname = asebackup
@vaultName = asebackup
@fabricName = Azure
@containerName = iaasvmcontainer;iaasvmcontainerv2;asebackup;myasevm
@protectedItemName = vm;iaasvmcontainerv2;asebackup;myasevm
GET https://management.azure.com/Subscriptions/{{azureSubscriptionID}}/resourceGroups/{{rgname}}/providers/Microsoft.RecoveryServices/vaults/{{vaultName}}/backupFabrics/{{fabricName}}/protectionContainers/{{containerName}}/protectedItems/{{protectedItemName}}?api-version=2016-12-01
Authorization: {{$aadToken public {{azureTenantID}} }}
##########################################
# Get Protected File Share Details
# https://docs.microsoft.com/en-us/rest/api/backup/protecteditems/get#get_protected_virtual_machine_details
@rgname = asebackup
@vaultName = asebackup
@fabricName = Azure
@containerName = StorageContainer;storage;asebackup;asebackupshare
@protectedItemName = AzureFileShare;snaps
GET https://management.azure.com/Subscriptions/{{azureSubscriptionID}}/resourceGroups/{{rgname}}/providers/Microsoft.RecoveryServices/vaults/{{vaultName}}/backupFabrics/{{fabricName}}/protectionContainers/{{containerName}}/protectedItems/{{protectedItemName}}?api-version=2016-12-01
Authorization: {{$aadToken public {{azureTenantID}} }}
#################################################
# Trigger Job Export https://docs.microsoft.com/en-us/rest/api/backup/jobs/export
POST https://management.azure.com/Subscriptions/{{azureSubscriptionID}}/resourceGroups/{{rgname}}/providers/Microsoft.RecoveryServices/vaults/{{vaultName}}/backupJobsExport?api-version=2017-07-01
Authorization: {{$aadToken public {{azureTenantID}} }}
######################
GET https://management.azure.com/Subscriptions/724467b5-bee4-484b-bf13-d6a5505d2b51/resourceGroups/asebackup/providers/Microsoft.RecoveryServices/vaults/asebackup/backupJobs/operationResults/7c21e4b6-0b0c-4d2b-9f4c-0ff51b4f32eb?api-version=2017-07-01 HTTP/1.1
Authorization: {{$aadToken public {{azureTenantID}} }}
##################
GET https://wepod01manag1bmss4wq1d.blob.core.windows.net/reportcontainer/exportjobsreportcb032091-4f57-4cdf-824a-85b2d797d2fd?sv=2014-02-14&sr=b&sig=P%2BGss1KANq5yxoqLq7lANIKDOvhKCYmrt79KuYtHt2Y%3D&st=2018-04-13T10%3A36%3A47Z&se=2018-04-13T10%3A46%3A47Z&sp=r HTTP/1.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment