States for managing zfs datasets
Jorge Schrauwen <sjorge@blackdot.be>
new
salt.utils.zfs, salt.modules.zfs
smartos, illumos, solaris, freebsd, linux
New in version 2016.3.0.
Changed in version 2018.3.1: Big refactor to remove duplicate code, better type conversions and improved consistency in output.
test/shares/yuki:
zfs.filesystem_present:
- create_parent: true
- properties:
quota: 16G
test/iscsi/haruhi:
zfs.volume_present:
- create_parent: true
- volume_size: 16M
- sparse: true
- properties:
readonly: on
test/shares/yuki@frozen:
zfs.snapshot_present
moka_origin:
zfs.hold_present:
- snapshot: test/shares/yuki@frozen
test/shares/moka:
zfs.filesystem_present:
- cloned_from: test/shares/yuki@frozen
test/shares/moka@tsukune:
zfs.snapshot_absent
ensure bookmark is absent on the system
name of snapshot
try harder to destroy the dataset (zfs destroy -f)
also destroy all the child datasets (zfs destroy -r)
ensure bookmark exists
name of bookmark
name of snapshot
ensure filesystem is absent on the system
name of filesystem
try harder to destroy the dataset (zfs destroy -f)
also destroy all the child datasets (zfs destroy -r)
Warning
If a volume with name
exists, this state will succeed without
destroying the volume specified by name
. This module is dataset type sensitive.
ensure filesystem exists and has properties set
name of filesystem
creates all the non-existing parent datasets. any property specified on the command line using the -o option is ignored.
name of snapshot to clone
additional zfs properties (-o)
Note
cloned_from
is only use if the filesystem does not exist yet,
when cloned_from
is set after the filesystem exists it will be ignored.
Note
Properties do not get cloned, if you specify the properties in the state file they will be applied on a subsequent run.
ensure hold is absent on the system
name of hold
name of snapshot
recursively releases a hold with the given tag on the snapshots of all descendent file systems.
ensure hold is present on the system
name of holdt
name of snapshot
recursively add hold with the given tag on the snapshots of all descendent file systems.
ensure a dataset is not a clone
name of fileset or volume
Warning
only one dataset can be the origin, if you promote a clone the original will now point to the promoted dataset
maintain a set of snapshots based on a schedule
name of filesystem or volume
prefix for the snapshots e.g. 'test' will result in snapshots being named 'test-yyyymmdd_hhmm'
create snapshots for all children also
dict holding the schedule, the following keys are available (minute, hour, day, month, and year) by default all are set to 0 the value indicated the number of snapshots of that type to keep around.
Warning
snapshots will only be created and pruned every time the state runs. a schedule must be setup to automatically run the state. this means that if you run the state daily the hourly snapshot will only be made once per day!
Changed in version 2018.3.0: switched to localtime from gmtime so times now take into account timezones.
ensure snapshot is absent on the system
name of snapshot
try harder to destroy the dataset (zfs destroy -f)
also destroy all the child datasets (zfs destroy -r)
ensure snapshot exists and has properties set
name of snapshot
recursively create snapshots of all descendent datasets
additional zfs properties (-o)
ensure volume is absent on the system
name of volume
try harder to destroy the dataset (zfs destroy -f)
also destroy all the child datasets (zfs destroy -r)
Warning
If a filesystem with name
exists, this state will succeed without
destroying the filesystem specified by name
. This module is dataset type sensitive.
ensure volume exists and has properties set
name of volume
size of volume
create sparse volume
creates all the non-existing parent datasets. any property specified on the command line using the -o option is ignored.
name of snapshot to clone
additional zfs properties (-o)
Note
cloned_from
is only use if the volume does not exist yet,
when cloned_from
is set after the volume exists it will be ignored.
Note
Properties do not get cloned, if you specify the properties in the state file they will be applied on a subsequent run.
volume_size
is considered a property, so the volume's size will be
corrected when the properties get updated if it differs from the
original volume.
The sparse parameter is ignored when using cloned_from
.