salt.modules.snapper#
Module to manage filesystem snapshots with snapper
New in version 2016.11.0.
- codeauthor:
Duncan Mac-Vicar P. <dmacvicar@suse.de>
- codeauthor:
Pablo Suárez Hernández <psuarezhernandez@suse.de>
- depends:
dbusPython module.- depends:
snapperhttp://snapper.io, available in most distros- maturity:
new
- platform:
Linux
- salt.modules.snapper.changed_files(config='root', num_pre=None, num_post=None)#
Returns the files changed between two snapshots
- config
Configuration name.
- num_pre
first snapshot ID to compare. Default is last snapshot
- num_post
last snapshot ID to compare. Default is 0 (current state)
CLI Example:
salt '*' snapper.changed_files salt '*' snapper.changed_files num_pre=19 num_post=20
- salt.modules.snapper.create_baseline(tag='baseline', config='root')#
Creates a snapshot marked as baseline
- tag
Tag name for the baseline
- config
Configuration name.
CLI Example:
salt '*' snapper.create_baseline salt '*' snapper.create_baseline my_custom_baseline
- salt.modules.snapper.create_config(name=None, subvolume=None, fstype=None, template=None, extra_opts=None)#
Creates a new Snapper configuration
- name
Name of the new Snapper configuration.
- subvolume
Path to the related subvolume.
- fstype
Filesystem type of the subvolume.
- template
Configuration template to use. (Default: default)
- extra_opts
Extra Snapper configuration opts dictionary. It will override the values provided by the given template (if any).
CLI Example:
salt '*' snapper.create_config name=myconfig subvolume=/foo/bar/ fstype=btrfs salt '*' snapper.create_config name=myconfig subvolume=/foo/bar/ fstype=btrfs template="default" salt '*' snapper.create_config name=myconfig subvolume=/foo/bar/ fstype=btrfs extra_opts='{"NUMBER_CLEANUP": False}'
- salt.modules.snapper.create_snapshot(config='root', snapshot_type='single', pre_number=None, description=None, cleanup_algorithm='number', userdata=None, **kwargs)#
Creates an snapshot
- config
Configuration name.
- snapshot_type
Specifies the type of the new snapshot. Possible values are single, pre and post.
- pre_number
For post snapshots the number of the pre snapshot must be provided.
- description
Description for the snapshot. If not given, the salt job will be used.
- cleanup_algorithm
Set the cleanup algorithm for the snapshot.
- number
Deletes old snapshots when a certain number of snapshots is reached.
- timeline
Deletes old snapshots but keeps a number of hourly, daily, weekly, monthly and yearly snapshots.
- empty-pre-post
Deletes pre/post snapshot pairs with empty diffs.
- userdata
Set userdata for the snapshot (key-value pairs).
Returns the number of the created snapshot.
CLI Example:
salt '*' snapper.create_snapshot
- salt.modules.snapper.delete_snapshot(snapshots_ids=None, config='root')#
Deletes an snapshot
- config
Configuration name. (Default: root)
- snapshots_ids
List of the snapshots IDs to be deleted.
CLI Example:
salt '*' snapper.delete_snapshot 54 salt '*' snapper.delete_snapshot config=root 54 salt '*' snapper.delete_snapshot config=root snapshots_ids=[54,55,56]
- salt.modules.snapper.diff(config='root', filename=None, num_pre=None, num_post=None)#
Returns the differences between two snapshots
- config
Configuration name.
- filename
if not provided the showing differences between snapshots for all "text" files
- num_pre
first snapshot ID to compare. Default is last snapshot
- num_post
last snapshot ID to compare. Default is 0 (current state)
CLI Example:
salt '*' snapper.diff salt '*' snapper.diff filename=/var/log/snapper.log num_pre=19 num_post=20
- salt.modules.snapper.diff_jid(jid, config='root')#
Returns the changes applied by a jid
- jid
The job id to lookup
- config
Configuration name.
CLI Example:
salt '*' snapper.diff_jid jid=20160607130930720112
- salt.modules.snapper.get_config(name='root')#
Retrieves all values from a given configuration
CLI Example:
salt '*' snapper.get_config
- salt.modules.snapper.get_snapshot(number=0, config='root')#
Get detailed information about a given snapshot
CLI Example:
salt '*' snapper.get_snapshot 1
- salt.modules.snapper.list_configs()#
List all available configs
CLI Example:
salt '*' snapper.list_configs
- salt.modules.snapper.list_snapshots(config='root')#
List available snapshots
CLI Example:
salt '*' snapper.list_snapshots config=myconfig
- salt.modules.snapper.modify_snapshot(snapshot_id=None, description=None, userdata=None, cleanup=None, config='root')#
Modify attributes of an existing snapshot.
- config
Configuration name. (Default: root)
- snapshot_id
ID of the snapshot to be modified.
- cleanup
Change the cleanup method of the snapshot. (str)
- description
Change the description of the snapshot. (str)
- userdata
Change the userdata dictionary of the snapshot. (dict)
CLI Example:
salt '*' snapper.modify_snapshot 54 description="my snapshot description" salt '*' snapper.modify_snapshot 54 description="my snapshot description" salt '*' snapper.modify_snapshot 54 userdata='{"foo": "bar"}' salt '*' snapper.modify_snapshot snapshot_id=54 cleanup="number"
- salt.modules.snapper.run(function, *args, **kwargs)#
Runs a function from an execution module creating pre and post snapshots and associating the salt job id with those snapshots for easy undo and cleanup.
- function
Salt function to call.
- config
Configuration name. (default: "root")
- description
A description for the snapshots. (default: None)
- userdata
Data to include in the snapshot metadata. (default: None)
- cleanup_algorithm
Snapper cleanup algorithm. (default: "number")
- *args
args for the function to call. (default: None)
- **kwargs
kwargs for the function to call (default: None)
This would run append text to /etc/motd using the file.append module, and will create two snapshots, pre and post with the associated metadata. The jid will be available as salt_jid in the userdata of the snapshot.
You can immediately see the changes
CLI Example:
salt '*' snapper.run file.append args='["/etc/motd", "some text"]'
- salt.modules.snapper.set_config(name='root', **kwargs)#
Set configuration values
CLI Example:
salt '*' snapper.set_config SYNC_ACL=True
Keys are case insensitive as they will be always uppercased to snapper convention. The above example is equivalent to:
salt '*' snapper.set_config sync_acl=True
- salt.modules.snapper.status(config='root', num_pre=None, num_post=None)#
Returns a comparison between two snapshots
- config
Configuration name.
- num_pre
first snapshot ID to compare. Default is last snapshot
- num_post
last snapshot ID to compare. Default is 0 (current state)
CLI Example:
salt '*' snapper.status salt '*' snapper.status num_pre=19 num_post=20
- salt.modules.snapper.status_to_string(dbus_status)#
Converts a numeric dbus snapper status into a string
CLI Example:
salt '*' snapper.status_to_string <dbus_status>
- salt.modules.snapper.undo(config='root', files=None, num_pre=None, num_post=None)#
Undo all file changes that happened between num_pre and num_post, leaving the files into the state of num_pre.
Warning
If one of the files has changes after num_post, they will be overwritten The snapshots are used to determine the file list, but the current version of the files will be overwritten by the versions in num_pre.
You to undo changes between num_pre and the current version of the files use num_post=0.
CLI Example:
salt '*' snapper.undo
- salt.modules.snapper.undo_jid(jid, config='root')#
Undo the changes applied by a salt job
- jid
The job id to lookup
- config
Configuration name.
CLI Example:
salt '*' snapper.undo_jid jid=20160607130930720112