Ansible Collection for Posix
Find a file
softwarefactory-project-zuul[bot] d537e7ded8
Merge pull request #267 from NeodymiumFerBore/ephemeral_state
Add ephemeral state to mount fs without altering fstab

SUMMARY
Add ephemeral possible value for state parameter.
The ephemeral state allows end-users to mount a volume on a given path, without altering an fstab file or creating a dummy one.
There have been debates about splitting this module into an fstab module and a mount module, but nothing has been done in 5 years. This is why I'd like to propose this feature.
Downside: the way the posix.mount module handles mount options prevents it to be able to check exactly if the given opts perfectly match the mount options of an already mounted volume. To achieve this, the module would have to be aware of every mount default options, for all platforms. This is why state=ephemeral always return changed=yes.
In other terms, a remount will always be triggered if the volume is already mounted, even if the options look to be the same. Using state=unmounted on a volume previously mounted with ephemeral behaves correctly.
ISSUE TYPE

Feature Pull Request

Related issues:

ansible/ansible#48134
#84

COMPONENT NAME
mount
ADDITIONAL INFORMATION
Example use case
Sometimes it is handy to be able to temporarily mount a volume. I've seen this in couple companies where Ansible is used to generate reports and put it on network shares. However, some admins don't look into mount options such as krb5 and multiuser for SMB shares. Being forced to use fstab-based mounts leads to clear text passwords being stored more or less temporarily on the host filesystem, requiring "manual" deletion (with the hassle of using blocks, rescues, always, etc.). This feature respond to this use case by providing a way to mount a volume without having to alter an fstab file.
Description of changes

Edit DOCUMENTATION section to add ephemeral state
Edit EXAMPLES section to add ephemeral state example
Add new function _set_ephemeral_args to use instead of _set_fstab_args when using ephemeral state
Add new function _is_same_mount_src to determine if the mounted volume on the destination path has the same source than the one supplied to the module
Add new function _get_mount_info to avoid redundant code between functions get_linux_mounts and _is_same_mount_src
Modify get_linux_mount to use the new function _get_mount_info. Original behavior is preserved.
Integrate ephemeral parameter treatment into mounted treatment, and add if statements to avoid IO from/to fstab
Add ephemeral as a possible value for the state parameter in main()
Add required_if dependencies for ephemeral state

Reviewed-by: None <None>
Reviewed-by: Hideki Saito <saito@fgrep.org>
Reviewed-by: Abhijeet Kasurde <None>
2022-12-15 06:22:17 +00:00
.azure-pipelines Add stable-2.14 branch to AZP 2022-09-27 21:15:50 +09:00
.github settings.yml isn't use 2020-07-02 17:09:54 +01:00
changelogs Merge branch 'main' into ephemeral_state 2022-12-15 15:04:28 +09:00
docs Release 1.4.0 commit 2022-05-23 16:37:36 +09:00
hacking Migrate hacking/cgroup_perf_recap_graph.py (#12) 2020-04-22 23:05:09 -05:00
meta Fixed documentation and options to address new sanity tests 2022-04-01 13:23:45 +09:00
plugins Merge branch 'main' into ephemeral_state 2022-12-15 15:04:28 +09:00
tests Merge branch 'main' into ephemeral_state 2022-12-15 15:04:28 +09:00
.gitignore Update changelog generation configuration 2020-06-17 15:57:15 +05:30
bindep.txt Modified based on feedback 2022-04-26 11:18:58 -07:00
CHANGELOG.rst Release 1.4.0 commit 2022-05-23 16:37:36 +09:00
codecov.yml Codecov comment=false 2021-07-26 17:27:14 +05:30
COPYING Initial commit 2020-03-09 13:15:28 +00:00
galaxy.yml Update version number of galaxy.yml to 1.5.0. 2022-05-30 22:01:35 +09:00
PSF-license.txt Update with actual CPython 3.9.5 license. 2022-05-16 08:00:40 +02:00
README.md Release 1.4.0 commit 2022-05-23 16:37:36 +09:00
requirements.txt Remove sanity jobs from shippable 2020-06-16 19:46:58 -04:00
shippable.yml Update AZP matrix to remove CentOS8 test 2022-02-07 23:30:54 +09:00
test-requirements.txt Add support for running ansible-test unit in zuul 2020-06-17 09:34:36 -04:00

ansible.posix

Build Status Run Status

An Ansible Collection of modules and plugins that target POSIX UNIX/Linux and derivative Operating Systems.

Supported Versions of Ansible

Ansible version compatibility

This collection has been tested against following Ansible versions: >=2.9.

For collections that support Ansible 2.9, please ensure you update your network_os to use the fully qualified collection name (for example, cisco.ios.ios). Plugins and modules within a collection may be tested with only specific Ansible versions. A collection may contain metadata that identifies these versions. PEP440 is the schema used to describe the versions of Ansible.

Included content

Modules

Name Description
ansible.posix.acl Set and retrieve file ACL information.
ansible.posix.at Schedule the execution of a command or script file via the at command
ansible.posix.authorized_key Adds or removes an SSH authorized key
ansible.posix.firewalld Manage arbitrary ports/services with firewalld
ansible.posix.firewalld_info Gather information about firewalld
ansible.posix.mount Control active and configured mount points
ansible.posix.patch Apply patch files using the GNU patch tool
ansible.posix.seboolean Toggles SELinux booleans
ansible.posix.selinux Change policy and state of SELinux
ansible.posix.synchronize A wrapper around rsync to make common tasks in your playbooks quick and easy
ansible.posix.sysctl Manage entries in sysctl.conf.

Installing this collection

You can install the ansible.posix collection with the Ansible Galaxy CLI:

ansible-galaxy collection install ansible.posix

You can also include it in a requirements.yml file and install it with ansible-galaxy collection install -r requirements.yml, using the format:

---
collections:
  - name: ansible.posix

Using this collection

See Ansible Using collections for more details.

NOTE: For Ansible 2.9, you may not see deprecation warnings when you run your playbooks with this collection. Use this documentation to track when a module is deprecated.

Contributing to this collection

We welcome community contributions to this collection. See Contributing to Ansible-maintained collections for complete details.

Code of Conduct

This collection follows the Ansible project's Code of Conduct. Please read and familiarize yourself with this document.

Release notes

See changelog for more details.

External requirements

None

Tested with Ansible

  • ansible-core 2.14 (devel)
  • ansible-core 2.13 (stable)
  • ansible-core 2.12 (stable)
  • ansible-core 2.11 (stable)
  • ansible-base 2.10 (stable)
  • ansible 2.9 (stable)

Roadmap

More information

Licensing

GNU General Public License v3.0 or later.

See COPYING to see the full text.