Tag Snapshot using Backup_Monkey
In continuation with my previous article EBS Snapshot using Backup_Monkey, we have discussed one issue associated with BackUp Monkey utility.
The issue was that it use’s “BACKUP_MONKEY” prefix and tag the snapshot with this prefix.
As you can see in the Description, BACKUP_MONKEY prefix is used. So this create’s a redundancy while finding the exact snapshot, as every snapshot is tagged with this same format. But we want a snapshot with the name same as “Instance Name” so that we can identify the snapshot easily. To do so we have to modify the source code.
backup-monkey
command uses /usr/local/lib/python27/dist-packages/backup_monkey/core.py
File to be modified: /usr/local/lib/python27/dist-packages/backup_monkey/core.py
Locate line number 29 and comment it out
self._prefix='BACKUP_MONKEY'
and Replace it with
self._prefix=self._conn.get_all_instances()
self.conn.get_all_instances() will return all instances Reservation id
Now, Replace original code in “core.py” with this following code.
48 i=0
49 for volume in volumes:
50
51 # description_parts = [self._prefix] //Comment this line
52 description_parts=[self._prefix[i].instances[0].tags['Name']]
53 i=i+1
54 description_parts.append(volume.id)
55 if volume.attach_data.instance_id:
56 description_parts.append(volume.attach_data.instance_id)
57 if volume.attach_data.device:
58 description_parts.append(volume.attach_data.device)
59 description = ' '.join(description_parts)
60 log.info('Creating snapshot of %s: %s', volume.id, description)
61 volume.create_snapshot(description)
62 return True
We added this line
description_parts=[self._prefix[i].instances[0].tags['Name']]
This is basically extracting the Tag Name associated with the Reservation Id extracted above.
Next part is to modify the remove_old_snapshots() section.
Below code is used for removing snapshots with the extracted Tag Name.
73 j=0
74 for snapshot in snapshots:
75 # if not snapshot.description.startswith(self._prefix):
76 if not snapshot.description.startswith(self._prefix[j].instances[0].tags['Name']):
77 log.debug('Skipping %s as prefix does not match', snapshot.id)
78 continue
79 if not snapshot.status == 'completed':
80 log.debug('Skipping %s as it is not a complete snapshot', snapshot.id)
81 continue
82 j=j+1
We are done with the modification. Lets Test it out.
This is my Instance with Tag Name “Testing Instance”.
Lets run
$backup-monkey --region us-west-2
Now you can see below the difference between the two snapshot. One with “BACKUP_MONKEY” which was the previous one, other with “Testing Instance” name
References: backup-monkey source code