mirror of
https://github.com/ansible-collections/ansible.posix.git
synced 2026-01-12 15:45:20 +01:00
Compare commits
14 commits
d5216f0f12
...
be462eeffa
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
be462eeffa | ||
|
|
b0097bd14c | ||
|
|
b991f4f9af | ||
|
|
d05a5c70b5 | ||
|
|
572167b9c1 | ||
|
|
2c8aad9f39 | ||
|
|
70b838f031 | ||
|
|
5a16ef3bea | ||
|
|
841a0f3314 | ||
|
|
5bc6f636f7 | ||
|
|
284025660c | ||
|
|
f7f54f242d | ||
|
|
966df79767 | ||
|
|
5ee818ec86 |
5 changed files with 178 additions and 47 deletions
104
README.md
104
README.md
|
|
@ -4,9 +4,6 @@
|
||||||
https://dev.azure.com/ansible/ansible.posix/_apis/build/status/CI?branchName=main)](https://dev.azure.com/ansible/ansible.posix/_build?definitionId=26)
|
https://dev.azure.com/ansible/ansible.posix/_apis/build/status/CI?branchName=main)](https://dev.azure.com/ansible/ansible.posix/_build?definitionId=26)
|
||||||
[]() <!--[](https://codecov.io/gh/ansible-collections/ansible.posix)-->
|
[]() <!--[](https://codecov.io/gh/ansible-collections/ansible.posix)-->
|
||||||
|
|
||||||
<!-- Describe the collection and why a user would want to use it. What does the collection do? -->
|
|
||||||
An Ansible Collection of modules and plugins that target POSIX UNIX/Linux and derivative Operating Systems.
|
|
||||||
|
|
||||||
## Communication
|
## Communication
|
||||||
|
|
||||||
* Join the Ansible forum:
|
* Join the Ansible forum:
|
||||||
|
|
@ -14,65 +11,72 @@ An Ansible Collection of modules and plugins that target POSIX UNIX/Linux and de
|
||||||
* [Social Spaces](https://forum.ansible.com/c/chat/4): gather and interact with fellow enthusiasts.
|
* [Social Spaces](https://forum.ansible.com/c/chat/4): gather and interact with fellow enthusiasts.
|
||||||
* [News & Announcements](https://forum.ansible.com/c/news/5): track project-wide announcements including social events.
|
* [News & Announcements](https://forum.ansible.com/c/news/5): track project-wide announcements including social events.
|
||||||
|
|
||||||
* The Ansible [Bullhorn newsletter](https://docs.ansible.com/ansible/devel/community/communication.html#the-bullhorn): used to announce releases and important changes.
|
## Description
|
||||||
|
|
||||||
For more information about communication, see the [Ansible communication guide](https://docs.ansible.com/ansible/devel/community/communication.html).
|
<!-- Describe the collection and why a user would want to use it. What does the collection do? -->
|
||||||
|
An Ansible Collection of modules and plugins that target POSIX UNIX/Linux and derivative Operating Systems.
|
||||||
|
|
||||||
## Supported Versions of Ansible
|
## Requirements
|
||||||
<!--start requires_ansible-->
|
|
||||||
## Ansible version compatibility
|
|
||||||
|
|
||||||
This collection has been tested against following Ansible versions: **>=2.15**.
|
* Python:
|
||||||
<!--end requires_ansible-->
|
* The Python interpreter version must meet Ansible Core's requirements.
|
||||||
|
* Ansible Core:
|
||||||
|
- ansible-core 2.15 or later
|
||||||
|
|
||||||
## Included content
|
## Installation
|
||||||
Check out [Ansible Galaxy](https://galaxy.ansible.com/ui/repo/published/ansible/posix/content/) or [the Ansible documentation](https://docs.ansible.com/ansible/devel/collections/ansible/posix/) for all modules and plugins included in this collection.
|
|
||||||
|
|
||||||
## Installing this collection
|
Before using this collection, you need to install it with the Ansible Galaxy command-line tool:
|
||||||
|
|
||||||
You can install the ``ansible.posix`` collection with the Ansible Galaxy CLI:
|
```shell
|
||||||
|
ansible-galaxy collection install ansible.posix
|
||||||
|
```
|
||||||
|
|
||||||
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:
|
||||||
|
|
||||||
You can also include it in a `requirements.yml` file and install it with `ansible-galaxy collection install -r requirements.yml`, using the format:
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
---
|
|
||||||
collections:
|
collections:
|
||||||
- name: ansible.posix
|
- name: ansible.posix
|
||||||
```
|
```
|
||||||
|
|
||||||
## Using this collection
|
Note that if you install any collections from Ansible Galaxy, they will not be upgraded automatically when you upgrade the Ansible package.
|
||||||
|
To upgrade the collection to the latest available version, run the following command:
|
||||||
|
|
||||||
<!--Include some quick examples that cover the most common use cases for your collection content. -->
|
```shell
|
||||||
|
ansible-galaxy collection install ansible.posix --upgrade
|
||||||
|
```
|
||||||
|
|
||||||
See [Ansible Using collections](https://docs.ansible.com/ansible/latest/user_guide/collections_using.html) for more details.
|
You can also install a specific version of the collection, for example, if you need to downgrade when something is broken in the latest version (please report an issue in this repository). Use the following syntax to install version 1.0.0:
|
||||||
|
|
||||||
## Contributing to this collection
|
```shell
|
||||||
|
ansible-galaxy collection install ansible.posix:==1.0.0
|
||||||
|
```
|
||||||
|
|
||||||
<!--Describe how the community can contribute to your collection. At a minimum, include how and where users can create issues to report problems or request features for this collection. List contribution requirements, including preferred workflows and necessary testing, so you can benefit from community PRs. If you are following general Ansible contributor guidelines, you can link to - [Ansible Community Guide](https://docs.ansible.com/ansible/latest/community/index.html). -->
|
See [using Ansible collections](https://docs.ansible.com/ansible/devel/user_guide/collections_using.html) for more details.
|
||||||
|
|
||||||
We welcome community contributions to this collection. See [Contributing to Ansible-maintained collections](https://docs.ansible.com/ansible/devel/community/contributing_maintained_collections.html#contributing-maintained-collections) for complete details.
|
* The Ansible [Bullhorn newsletter](https://docs.ansible.com/ansible/devel/community/communication.html#the-bullhorn): used to announce releases and important changes.
|
||||||
|
|
||||||
* [Issues](https://github.com/ansible-collections/ansible.posix/issues)
|
For more information about communication, see the [Ansible communication guide](https://docs.ansible.com/ansible/devel/community/communication.html).
|
||||||
* [Pull Requests](https://github.com/ansible-collections/ansible.posix/pulls)
|
|
||||||
* [Ansible Community Guide](https://docs.ansible.com/ansible/latest/community/index.html)
|
|
||||||
|
|
||||||
### Code of Conduct
|
## Use Cases
|
||||||
This collection follows the Ansible project's
|
|
||||||
[Code of Conduct](https://docs.ansible.com/ansible/devel/community/code_of_conduct.html).
|
|
||||||
Please read and familiarize yourself with this document.
|
|
||||||
|
|
||||||
## Release notes
|
You can see the general use-cases as an example by `ansible-doc` command like below.
|
||||||
See [changelog](https://github.com/ansible-collections/ansible.posix/blob/main/CHANGELOG.rst) for more details.
|
|
||||||
|
|
||||||
## External requirements
|
For example, ansible.posix.firewalld module:
|
||||||
|
```shell
|
||||||
|
ansible-doc ansible.posix.firewalld
|
||||||
|
```
|
||||||
|
|
||||||
None
|
Also, if you want to confirm the plugins descriptions, you can follow the following option with `ansible-doc` command:
|
||||||
|
|
||||||
## Tested with Ansible
|
For example, ansible.posix.profile_tasks callback plugin:
|
||||||
|
```shell
|
||||||
|
ansible-doc -t callback ansible.posix.profile_tasks
|
||||||
|
```
|
||||||
|
|
||||||
<!-- List the versions of Ansible the collection has been tested with. Must match what is in galaxy.yml. -->
|
## Testing
|
||||||
|
|
||||||
|
The following ansible-core versions have been tested with this collection:
|
||||||
|
|
||||||
- ansible-core 2.19 (devel)
|
- ansible-core 2.19 (devel)
|
||||||
- ansible-core 2.18 (stable) *
|
- ansible-core 2.18 (stable) *
|
||||||
|
|
@ -82,20 +86,30 @@ None
|
||||||
|
|
||||||
*Note: For ansible-core 2.18, CI only covers sanity tests and no integration tests will be run until the test environment is released.*
|
*Note: For ansible-core 2.18, CI only covers sanity tests and no integration tests will be run until the test environment is released.*
|
||||||
|
|
||||||
## Roadmap
|
## Contributing
|
||||||
|
|
||||||
<!-- Optional. Include the roadmap for this collection, and the proposed release/versioning strategy so users can anticipate the upgrade/update cycle. -->
|
We welcome community contributions to this collection. For more details, see [Contributing to Ansible-maintained collections](https://docs.ansible.com/ansible/devel/community/contributing_maintained_collections.html#contributing-maintained-collections) for complete details.
|
||||||
|
|
||||||
## More information
|
* [Issues](https://github.com/ansible-collections/ansible.posix/issues)
|
||||||
|
* [Pull Requests](https://github.com/ansible-collections/ansible.posix/pulls)
|
||||||
|
* [Ansible Community Guide](https://docs.ansible.com/ansible/latest/community/index.html)
|
||||||
|
|
||||||
<!-- List out where the user can find additional information, such as working group meeting times, slack/IRC channels, or documentation for the product this collection automates. At a minimum, link to: -->
|
|
||||||
|
|
||||||
- [Ansible Collection overview](https://github.com/ansible-collections/overview)
|
## Support
|
||||||
- [Ansible User guide](https://docs.ansible.com/ansible/latest/user_guide/index.html)
|
|
||||||
- [Ansible Developer guide](https://docs.ansible.com/ansible/latest/dev_guide/index.html)
|
|
||||||
- [Ansible Community code of conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html)
|
|
||||||
|
|
||||||
## Licensing
|
See [Communication](#Communication) section.
|
||||||
|
|
||||||
|
## Release Notes and Roadmap
|
||||||
|
|
||||||
|
See [changelog](https://github.com/ansible-collections/ansible.posix/blob/main/CHANGELOG.rst) for more details.
|
||||||
|
|
||||||
|
## Related Information
|
||||||
|
|
||||||
|
This document was written using the following [template](https://access.redhat.com/articles/7068606).
|
||||||
|
|
||||||
|
The README has been carefully prepared to cover the [community template](https://github.com/ansible-collections/collection_template/blob/main/README.md), but if you find any problems, please file a [documentation issue](https://github.com/ansible-collections/ansible.posix/issues/new?assignees=&labels=&projects=&template=documentation_report.md).
|
||||||
|
|
||||||
|
## License Information
|
||||||
|
|
||||||
GNU General Public License v3.0 or later.
|
GNU General Public License v3.0 or later.
|
||||||
|
|
||||||
|
|
|
||||||
3
changelogs/fragments/569_keep_mountpoint.yml
Normal file
3
changelogs/fragments/569_keep_mountpoint.yml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
minor_changes:
|
||||||
|
- keep_mountpoint - added keep_mountpoint option with default value false. If set to true keep_mountpoint changes the behaviour of state\: absent by keeping the mountpoint.
|
||||||
3
changelogs/fragments/587_update_README.yml
Normal file
3
changelogs/fragments/587_update_README.yml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
trivial:
|
||||||
|
- README.md - update README to cover RH guidelines (https://github.com/ansible-collections/ansible.posix/issues/585).
|
||||||
|
|
@ -87,7 +87,8 @@ options:
|
||||||
real source. V(absent) does not unmount recursively, and the module will
|
real source. V(absent) does not unmount recursively, and the module will
|
||||||
fail if multiple devices are mounted on the same mount point. Using
|
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
|
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
|
- 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
|
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
|
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.
|
the original file back if you somehow clobbered it incorrectly.
|
||||||
type: bool
|
type: bool
|
||||||
default: false
|
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:
|
notes:
|
||||||
- As of Ansible 2.3, the O(name) option has been changed to O(path) as
|
- As of Ansible 2.3, the O(name) option has been changed to O(path) as
|
||||||
default, but O(name) still works as well.
|
default, but O(name) still works as well.
|
||||||
|
|
@ -175,6 +186,23 @@ EXAMPLES = r'''
|
||||||
path: /tmp/mnt-pnt
|
path: /tmp/mnt-pnt
|
||||||
state: remounted
|
state: remounted
|
||||||
|
|
||||||
|
# The following will fail on first run
|
||||||
|
# if /home/mydir is not empty after unmounting,
|
||||||
|
# though unmount and remove from fstab are successfull.
|
||||||
|
# It will be successfull on subsequent runs (already unmounted).
|
||||||
|
- name: Unmount and remove from fstab, then if unmount was necessary try to remove mountpoint /home/mydir
|
||||||
|
ansible.posix.mount:
|
||||||
|
path: /home/mydir
|
||||||
|
state: absent
|
||||||
|
# The following will not fail on first run
|
||||||
|
# if /home/mydir is not empty after unmounting.
|
||||||
|
# It will leave /home/mydir and its content (if any) after unmounting.
|
||||||
|
- name: Unmount and remove from fstab, but keep /home/mydir
|
||||||
|
ansible.posix.mount:
|
||||||
|
path: /home/mydir
|
||||||
|
state: absent
|
||||||
|
keep_mountpoint: true
|
||||||
|
|
||||||
# The following will not save changes to fstab, and only be temporary until
|
# The following will not save changes to fstab, and only be temporary until
|
||||||
# a reboot, or until calling "state: unmounted" followed by "state: mounted"
|
# a reboot, or until calling "state: unmounted" followed by "state: mounted"
|
||||||
# on the same "path"
|
# on the same "path"
|
||||||
|
|
@ -779,6 +807,7 @@ def main():
|
||||||
src=dict(type='path'),
|
src=dict(type='path'),
|
||||||
backup=dict(type='bool', default=False),
|
backup=dict(type='bool', default=False),
|
||||||
state=dict(type='str', required=True, choices=['absent', 'absent_from_fstab', 'mounted', 'present', 'unmounted', 'remounted', 'ephemeral']),
|
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,
|
supports_check_mode=True,
|
||||||
required_if=(
|
required_if=(
|
||||||
|
|
@ -896,7 +925,7 @@ def main():
|
||||||
module.fail_json(
|
module.fail_json(
|
||||||
msg="Error unmounting %s: %s" % (name, msg))
|
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:
|
try:
|
||||||
os.rmdir(name)
|
os.rmdir(name)
|
||||||
except (OSError, IOError) as e:
|
except (OSError, IOError) as e:
|
||||||
|
|
|
||||||
|
|
@ -808,3 +808,85 @@
|
||||||
loop:
|
loop:
|
||||||
- /tmp/myfs.img
|
- /tmp/myfs.img
|
||||||
- /tmp/myfs
|
- /tmp/myfs
|
||||||
|
|
||||||
|
- name: Block to test keep_mountpoint option
|
||||||
|
block:
|
||||||
|
- name: Create the mount point
|
||||||
|
ansible.builtin.file:
|
||||||
|
state: directory
|
||||||
|
path: '/tmp/myfs'
|
||||||
|
mode: '0755'
|
||||||
|
|
||||||
|
- name: Create empty file for FS aaa
|
||||||
|
community.general.filesize:
|
||||||
|
path: /tmp/myfs.img
|
||||||
|
size: 20M
|
||||||
|
|
||||||
|
- name: Format FS bbb
|
||||||
|
community.general.filesystem:
|
||||||
|
fstype: xfs
|
||||||
|
dev: /tmp/myfs.img
|
||||||
|
|
||||||
|
- name: Put data in the mount point before mounting
|
||||||
|
ansible.builtin.copy:
|
||||||
|
content: 'Testing
|
||||||
|
This is the data before mounting
|
||||||
|
'
|
||||||
|
dest: '/tmp/myfs/test_file'
|
||||||
|
mode: '0644'
|
||||||
|
register: file_before_info
|
||||||
|
|
||||||
|
- name: Mount with fstab
|
||||||
|
ansible.posix.mount:
|
||||||
|
path: '/tmp/myfs'
|
||||||
|
fstype: xfs
|
||||||
|
state: mounted
|
||||||
|
src: '/tmp/myfs.img'
|
||||||
|
|
||||||
|
- name: Check data disappears - stat data
|
||||||
|
ansible.builtin.stat:
|
||||||
|
path: '/tmp/myfs/test_file'
|
||||||
|
register: file_stat_after_mount
|
||||||
|
- name: Check data disappears - file does not exist
|
||||||
|
ansible.builtin.assert:
|
||||||
|
that:
|
||||||
|
- file_stat_after_mount['stat']['exists'] == false
|
||||||
|
- name: Put data in the mount point after mounting
|
||||||
|
ansible.builtin.copy:
|
||||||
|
content: 'Testing
|
||||||
|
This is the data updated after mounting
|
||||||
|
'
|
||||||
|
dest: '/tmp/myfs/test_file'
|
||||||
|
mode: '0644'
|
||||||
|
register: file_after_info
|
||||||
|
- name: Umount with keep_mountpoint
|
||||||
|
ansible.posix.mount:
|
||||||
|
path: '/tmp/myfs'
|
||||||
|
fstype: xfs
|
||||||
|
state: absent
|
||||||
|
keep_mountpoint: true
|
||||||
|
- name: Check original data reappears - stat data
|
||||||
|
ansible.builtin.stat:
|
||||||
|
path: '/tmp/myfs/test_file'
|
||||||
|
register: file_stat_after_umount
|
||||||
|
- name: Check original data reappears - compare checksums
|
||||||
|
ansible.builtin.assert:
|
||||||
|
that:
|
||||||
|
- file_stat_after_umount['stat']['checksum'] == file_before_info['checksum']
|
||||||
|
always:
|
||||||
|
- name: Remove the first test file
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /tmp/myfs/test_file
|
||||||
|
state: absent
|
||||||
|
- name: Unmount FS
|
||||||
|
ansible.posix.mount:
|
||||||
|
path: /tmp/myfs
|
||||||
|
state: absent
|
||||||
|
- name: Remove the test FS and the second test file
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: '{{ item }}'
|
||||||
|
state: absent
|
||||||
|
loop:
|
||||||
|
- /tmp/myfs/test_file
|
||||||
|
- /tmp/myfs.img
|
||||||
|
- /tmp/myfs
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue