diff --git a/plugins/modules/mount.py b/plugins/modules/mount.py index dadbd46..71b9e8c 100644 --- a/plugins/modules/mount.py +++ b/plugins/modules/mount.py @@ -87,7 +87,8 @@ options: real source. V(absent) does not unmount recursively, and the module will fail if multiple devices are mounted on the same mount point. Using V(absent) with a mount point that is not registered in the I(fstab) has - no effect, use V(unmounted) instead. + no effect, use V(unmounted) instead. You can set O(keep_mountpoint) to + True to keep the mountpoint. - V(remounted) specifies that the device will be remounted for when you want to force a refresh on the mount itself (added in 2.9). This will always return RV(ignore:changed=true). If O(opts) is set, the options will be @@ -132,6 +133,16 @@ options: the original file back if you somehow clobbered it incorrectly. type: bool default: false + keep_mountpoint: + description: + - Change the default behaviour of state=absent by keeping the mountpoint + - With keep_mountpoint=true, state=absent is like unmounted plus the + fstab update. + - Use it if you care about finding original mountpoint content without failing + and want to remove the entry in fstab. If you have no entry to clean in + fstab you can use state=unmounted + type: bool + default: false notes: - As of Ansible 2.3, the O(name) option has been changed to O(path) as default, but O(name) still works as well. @@ -779,6 +790,7 @@ def main(): src=dict(type='path'), backup=dict(type='bool', default=False), state=dict(type='str', required=True, choices=['absent', 'absent_from_fstab', 'mounted', 'present', 'unmounted', 'remounted', 'ephemeral']), + keep_mountpoint=dict(type='bool', default=False), ), supports_check_mode=True, required_if=( @@ -896,7 +908,7 @@ def main(): module.fail_json( msg="Error unmounting %s: %s" % (name, msg)) - if os.path.exists(name): + if os.path.exists(name) and module.params['keep_mountpoint'] is False: try: os.rmdir(name) except (OSError, IOError) as e: