mirror of
https://github.com/ansible-collections/ansible.posix.git
synced 2026-01-13 16:15:21 +01:00
Compare commits
1 commit
1e752d7a75
...
8669afb72d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8669afb72d |
33 changed files with 88 additions and 272 deletions
|
|
@ -57,21 +57,6 @@ stages:
|
||||||
test: units
|
test: units
|
||||||
- name: Lint
|
- name: Lint
|
||||||
test: lint
|
test: lint
|
||||||
- stage: Sanity_2_18
|
|
||||||
displayName: Ansible 2.18 sanity
|
|
||||||
dependsOn: []
|
|
||||||
jobs:
|
|
||||||
- template: templates/matrix.yml
|
|
||||||
parameters:
|
|
||||||
nameFormat: "{0}"
|
|
||||||
testFormat: 2.18/{0}
|
|
||||||
targets:
|
|
||||||
- name: Sanity
|
|
||||||
test: sanity
|
|
||||||
- name: Units
|
|
||||||
test: units
|
|
||||||
- name: Lint
|
|
||||||
test: lint
|
|
||||||
- stage: Sanity_2_17
|
- stage: Sanity_2_17
|
||||||
displayName: Ansible 2.17 sanity
|
displayName: Ansible 2.17 sanity
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
|
|
@ -128,20 +113,6 @@ stages:
|
||||||
test: ubuntu2204
|
test: ubuntu2204
|
||||||
- name: Ubuntu 24.04
|
- name: Ubuntu 24.04
|
||||||
test: ubuntu2404
|
test: ubuntu2404
|
||||||
- stage: Docker_2_18
|
|
||||||
displayName: Docker devel
|
|
||||||
dependsOn: []
|
|
||||||
jobs:
|
|
||||||
- template: templates/matrix.yml
|
|
||||||
parameters:
|
|
||||||
testFormat: 2.18/linux/{0}/1
|
|
||||||
targets:
|
|
||||||
- name: Fedora 40
|
|
||||||
test: fedora40
|
|
||||||
- name: Ubuntu 22.04
|
|
||||||
test: ubuntu2204
|
|
||||||
- name: Ubuntu 24.04
|
|
||||||
test: ubuntu2404
|
|
||||||
- stage: Docker_2_17
|
- stage: Docker_2_17
|
||||||
displayName: Docker 2.17
|
displayName: Docker 2.17
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
|
|
@ -205,18 +176,6 @@ stages:
|
||||||
test: rhel/9.4
|
test: rhel/9.4
|
||||||
- name: FreeBSD 13.3
|
- name: FreeBSD 13.3
|
||||||
test: freebsd/13.3
|
test: freebsd/13.3
|
||||||
- stage: Remote_2_18
|
|
||||||
displayName: Remote devel
|
|
||||||
dependsOn: []
|
|
||||||
jobs:
|
|
||||||
- template: templates/matrix.yml
|
|
||||||
parameters:
|
|
||||||
testFormat: 2.18/{0}/1
|
|
||||||
targets:
|
|
||||||
- name: RHEL 9.4
|
|
||||||
test: rhel/9.4
|
|
||||||
- name: FreeBSD 13.3
|
|
||||||
test: freebsd/13.3
|
|
||||||
- stage: Remote_2_17
|
- stage: Remote_2_17
|
||||||
displayName: Remote 2.17
|
displayName: Remote 2.17
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
|
|
@ -275,11 +234,8 @@ stages:
|
||||||
- Sanity_2_17
|
- Sanity_2_17
|
||||||
- Remote_2_17
|
- Remote_2_17
|
||||||
- Docker_2_17
|
- Docker_2_17
|
||||||
- Sanity_2_18
|
|
||||||
- Remote_2_18
|
|
||||||
- Docker_2_18
|
|
||||||
- Sanity_devel
|
- Sanity_devel
|
||||||
# - Remote_devel # Wait for test environment release
|
- Remote_devel
|
||||||
# - Docker_devel # Wait for test environment release
|
- Docker_devel
|
||||||
jobs:
|
jobs:
|
||||||
- template: templates/coverage.yml
|
- template: templates/coverage.yml
|
||||||
|
|
|
||||||
|
|
@ -5,48 +5,6 @@ ansible.posix Release Notes
|
||||||
.. contents:: Topics
|
.. contents:: Topics
|
||||||
|
|
||||||
|
|
||||||
v1.6.0
|
|
||||||
======
|
|
||||||
|
|
||||||
Release Summary
|
|
||||||
---------------
|
|
||||||
|
|
||||||
This is the minor release of the ``ansible.posix`` collection.
|
|
||||||
This changelog contains all changes to the modules and plugins
|
|
||||||
in this collection that have been added after the release of
|
|
||||||
``ansible.posix`` 1.5.4.
|
|
||||||
|
|
||||||
Major Changes
|
|
||||||
-------------
|
|
||||||
|
|
||||||
- Dropping support for Ansible 2.9, ansible-core 2.15 will be minimum required version for this release
|
|
||||||
|
|
||||||
Minor Changes
|
|
||||||
-------------
|
|
||||||
|
|
||||||
- Add summary_only parameter to profile_roles and profile_tasks callbacks.
|
|
||||||
- firewalld - add functionality to set forwarding (https://github.com/ansible-collections/ansible.posix/pull/548).
|
|
||||||
- firewalld - added offline flag implementation (https://github.com/ansible-collections/ansible.posix/pull/484)
|
|
||||||
- firewalld - respawn module to use the system python interpreter when the ``firewall`` python module is not available for ``ansible_python_interpreter`` (https://github.com/ansible-collections/ansible.posix/pull/460).
|
|
||||||
- firewalld_info - Only warn about ignored zones, when there are zones ignored.
|
|
||||||
- firewalld_info - respawn module to use the system python interpreter when the ``firewall`` python module is not available for ``ansible_python_interpreter`` (https://github.com/ansible-collections/ansible.posix/pull/460).
|
|
||||||
- mount - add no_log option for opts parameter (https://github.com/ansible-collections/ansible.posix/pull/563).
|
|
||||||
- seboolean - respawn module to use the system python interpreter when the ``selinux`` python module is not available for ``ansible_python_interpreter`` (https://github.com/ansible-collections/ansible.posix/pull/460).
|
|
||||||
- selinux - respawn module to use the system python interpreter when the ``selinux`` python module is not available for ``ansible_python_interpreter`` (https://github.com/ansible-collections/ansible.posix/pull/460).
|
|
||||||
|
|
||||||
Removed Features (previously deprecated)
|
|
||||||
----------------------------------------
|
|
||||||
|
|
||||||
- skippy - Remove skippy pluglin as it is no longer supported(https://github.com/ansible-collections/ansible.posix/issues/350).
|
|
||||||
|
|
||||||
Bugfixes
|
|
||||||
--------
|
|
||||||
|
|
||||||
- Bugfix in the documentation regarding the path option for authorised_key(https://github.com/ansible-collections/ansible.posix/issues/483).
|
|
||||||
- seboolean - make it work with disabled SELinux
|
|
||||||
- synchronize - maintain proper formatting of the remote paths (https://github.com/ansible-collections/ansible.posix/pull/361).
|
|
||||||
- sysctl - fix sysctl to work properly on symlinks (https://github.com/ansible-collections/ansible.posix/issues/111).
|
|
||||||
|
|
||||||
v1.5.4
|
v1.5.4
|
||||||
======
|
======
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,14 +74,11 @@ None
|
||||||
|
|
||||||
<!-- List the versions of Ansible the collection has been tested with. Must match what is in galaxy.yml. -->
|
<!-- List the versions of Ansible the collection has been tested with. Must match what is in galaxy.yml. -->
|
||||||
|
|
||||||
- ansible-core 2.19 (devel)
|
- ansible-core 2.18 (devel)
|
||||||
- ansible-core 2.18 (stable) *
|
|
||||||
- ansible-core 2.17 (stable)
|
- ansible-core 2.17 (stable)
|
||||||
- ansible-core 2.16 (stable)
|
- ansible-core 2.16 (stable)
|
||||||
- ansible-core 2.15 (stable)
|
- ansible-core 2.15 (stable)
|
||||||
|
|
||||||
*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
|
## Roadmap
|
||||||
|
|
||||||
<!-- Optional. Include the roadmap for this collection, and the proposed release/versioning strategy so users can anticipate the upgrade/update cycle. -->
|
<!-- Optional. Include the roadmap for this collection, and the proposed release/versioning strategy so users can anticipate the upgrade/update cycle. -->
|
||||||
|
|
|
||||||
|
|
@ -347,61 +347,3 @@ releases:
|
||||||
- 451_firewall_fix_protocol_parameter.yml
|
- 451_firewall_fix_protocol_parameter.yml
|
||||||
- 456_sysctl_fix_nonetype.yml
|
- 456_sysctl_fix_nonetype.yml
|
||||||
release_date: '2023-05-10'
|
release_date: '2023-05-10'
|
||||||
1.6.0:
|
|
||||||
changes:
|
|
||||||
bugfixes:
|
|
||||||
- Bugfix in the documentation regarding the path option for authorised_key(https://github.com/ansible-collections/ansible.posix/issues/483).
|
|
||||||
- seboolean - make it work with disabled SELinux
|
|
||||||
- synchronize - maintain proper formatting of the remote paths (https://github.com/ansible-collections/ansible.posix/pull/361).
|
|
||||||
- sysctl - fix sysctl to work properly on symlinks (https://github.com/ansible-collections/ansible.posix/issues/111).
|
|
||||||
major_changes:
|
|
||||||
- Dropping support for Ansible 2.9, ansible-core 2.15 will be minimum required
|
|
||||||
version for this release
|
|
||||||
minor_changes:
|
|
||||||
- Add summary_only parameter to profile_roles and profile_tasks callbacks.
|
|
||||||
- firewalld - add functionality to set forwarding (https://github.com/ansible-collections/ansible.posix/pull/548).
|
|
||||||
- firewalld - added offline flag implementation (https://github.com/ansible-collections/ansible.posix/pull/484)
|
|
||||||
- firewalld - respawn module to use the system python interpreter when the ``firewall``
|
|
||||||
python module is not available for ``ansible_python_interpreter`` (https://github.com/ansible-collections/ansible.posix/pull/460).
|
|
||||||
- firewalld_info - Only warn about ignored zones, when there are zones ignored.
|
|
||||||
- firewalld_info - respawn module to use the system python interpreter when
|
|
||||||
the ``firewall`` python module is not available for ``ansible_python_interpreter``
|
|
||||||
(https://github.com/ansible-collections/ansible.posix/pull/460).
|
|
||||||
- mount - add no_log option for opts parameter (https://github.com/ansible-collections/ansible.posix/pull/563).
|
|
||||||
- seboolean - respawn module to use the system python interpreter when the ``selinux``
|
|
||||||
python module is not available for ``ansible_python_interpreter`` (https://github.com/ansible-collections/ansible.posix/pull/460).
|
|
||||||
- selinux - respawn module to use the system python interpreter when the ``selinux``
|
|
||||||
python module is not available for ``ansible_python_interpreter`` (https://github.com/ansible-collections/ansible.posix/pull/460).
|
|
||||||
release_summary: 'This is the minor release of the ``ansible.posix`` collection.
|
|
||||||
|
|
||||||
This changelog contains all changes to the modules and plugins
|
|
||||||
|
|
||||||
in this collection that have been added after the release of
|
|
||||||
|
|
||||||
``ansible.posix`` 1.5.4.'
|
|
||||||
removed_features:
|
|
||||||
- skippy - Remove skippy pluglin as it is no longer supported(https://github.com/ansible-collections/ansible.posix/issues/350).
|
|
||||||
fragments:
|
|
||||||
- 1.6.0.yml
|
|
||||||
- 206_fix_sysctl_to_work_on_symlinks.yml
|
|
||||||
- 333_doc_absent_precision.yml
|
|
||||||
- 361_maintain_proper_formating_remote_paths.yml
|
|
||||||
- 421-remove-deprecation-warning.yml
|
|
||||||
- 460-respawn.yaml
|
|
||||||
- 466-tests.yml
|
|
||||||
- 477_ci_update.yml
|
|
||||||
- 484-firewalld-offline.yml
|
|
||||||
- 487_ci_update.yml
|
|
||||||
- 490_doc_authorized_key_path.yml
|
|
||||||
- 496_seboolean-make-it-wrk-with-SELinux-disabled.yaml
|
|
||||||
- 504-firewalld_info-warning.yaml
|
|
||||||
- 508_ci_update.yml
|
|
||||||
- 510_ci_update.yml
|
|
||||||
- 511_profile-callbacks-add-summary-only-parameter.yml
|
|
||||||
- 548_add_foward.yml
|
|
||||||
- 556_remove_skippy_callback.yml
|
|
||||||
- 562_update_core_version.yml
|
|
||||||
- 563_add_no_log_option.yml
|
|
||||||
- dropping-ansible29.yml
|
|
||||||
- test-reqs.yml
|
|
||||||
release_date: '2024-09-11'
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
bugfixes:
|
||||||
|
- sysctl - fix sysctl to work properly on symlinks (https://github.com/ansible-collections/ansible.posix/issues/111).
|
||||||
4
changelogs/fragments/333_doc_absent_precision.yml
Normal file
4
changelogs/fragments/333_doc_absent_precision.yml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
trivial:
|
||||||
|
- mount - fix description in the documentation of the state ``absent`` to match its actual behavior
|
||||||
|
and point out that ``src`` is ignored with state ``absent`` and ``unmounted`` (https://github.com/ansible-collections/ansible.posix/issues/322)
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
bugfixes:
|
||||||
|
- synchronize - maintain proper formatting of the remote paths (https://github.com/ansible-collections/ansible.posix/pull/361).
|
||||||
2
changelogs/fragments/421-remove-deprecation-warning.yml
Normal file
2
changelogs/fragments/421-remove-deprecation-warning.yml
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
trivial:
|
||||||
|
- synchronize - instantiate the connection plugin without the ``new_stdin`` argument, which is deprecated in ansible-core 2.15 (https://github.com/ansible-collections/ansible.posix/pull/421).
|
||||||
10
changelogs/fragments/460-respawn.yaml
Normal file
10
changelogs/fragments/460-respawn.yaml
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
minor_changes:
|
||||||
|
- "seboolean - respawn module to use the system python interpreter when the ``selinux`` python module is not available for ``ansible_python_interpreter``
|
||||||
|
(https://github.com/ansible-collections/ansible.posix/pull/460)."
|
||||||
|
- "selinux - respawn module to use the system python interpreter when the ``selinux`` python module is not available for ``ansible_python_interpreter``
|
||||||
|
(https://github.com/ansible-collections/ansible.posix/pull/460)."
|
||||||
|
- "firewalld - respawn module to use the system python interpreter when the ``firewall`` python module is not available for ``ansible_python_interpreter``
|
||||||
|
(https://github.com/ansible-collections/ansible.posix/pull/460)."
|
||||||
|
- "firewalld_info - respawn module to use the system python interpreter when the ``firewall`` python module is not available for ``ansible_python_interpreter``
|
||||||
|
(https://github.com/ansible-collections/ansible.posix/pull/460)."
|
||||||
2
changelogs/fragments/466-tests.yml
Normal file
2
changelogs/fragments/466-tests.yml
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
trivial:
|
||||||
|
- "Fix integration tests so they work with ansible-core devel / 2.16 (https://github.com/ansible-collections/ansible.posix/pull/466)."
|
||||||
3
changelogs/fragments/477_ci_update.yml
Normal file
3
changelogs/fragments/477_ci_update.yml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
trivial:
|
||||||
|
- "Drop Python3.9 and update versions of RHEL,Fedora and FreeBSD for ansible-core:devel test(https://github.com/ansible-collections/ansible.posix/issues/476)."
|
||||||
2
changelogs/fragments/484-firewalld-offline.yml
Normal file
2
changelogs/fragments/484-firewalld-offline.yml
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
minor_changes:
|
||||||
|
- firewalld - added offline flag implementation (https://github.com/ansible-collections/ansible.posix/pull/484)
|
||||||
3
changelogs/fragments/487_ci_update.yml
Normal file
3
changelogs/fragments/487_ci_update.yml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
trivial:
|
||||||
|
- "Drop FreeBSD12.4 from CI for ansible-core:devel(https://github.com/ansible-collections/ansible.posix/issues/486)."
|
||||||
3
changelogs/fragments/490_doc_authorized_key_path.yml
Normal file
3
changelogs/fragments/490_doc_authorized_key_path.yml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
bugfixes:
|
||||||
|
- "Bugfix in the documentation regarding the path option for authorised_key(https://github.com/ansible-collections/ansible.posix/issues/483)."
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
bugfixes:
|
||||||
|
- seboolean - make it work with disabled SELinux
|
||||||
2
changelogs/fragments/504-firewalld_info-warning.yaml
Normal file
2
changelogs/fragments/504-firewalld_info-warning.yaml
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
minor_changes:
|
||||||
|
- firewalld_info - Only warn about ignored zones, when there are zones ignored.
|
||||||
3
changelogs/fragments/508_ci_update.yml
Normal file
3
changelogs/fragments/508_ci_update.yml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
trivial:
|
||||||
|
- "Refactoring remote CI targets."
|
||||||
3
changelogs/fragments/510_ci_update.yml
Normal file
3
changelogs/fragments/510_ci_update.yml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
trivial:
|
||||||
|
- "Replace Fedora 38 with 39 for container test(https://github.com/ansible-collections/ansible.posix/issues/509)."
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
minor_changes:
|
||||||
|
- "Add summary_only parameter to profile_roles and profile_tasks callbacks."
|
||||||
3
changelogs/fragments/548_add_foward.yml
Normal file
3
changelogs/fragments/548_add_foward.yml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
minor_changes:
|
||||||
|
- firewalld - add functionality to set forwarding (https://github.com/ansible-collections/ansible.posix/pull/548).
|
||||||
2
changelogs/fragments/556_remove_skippy_callback.yml
Normal file
2
changelogs/fragments/556_remove_skippy_callback.yml
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
removed_features:
|
||||||
|
- skippy - Remove skippy pluglin as it is no longer supported(https://github.com/ansible-collections/ansible.posix/issues/350).
|
||||||
3
changelogs/fragments/562_update_core_version.yml
Normal file
3
changelogs/fragments/562_update_core_version.yml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
minor_changes:
|
||||||
|
- "Dropping support for ansible-core 2.14, ansible-core 2.15 will be minimum required version for this release"
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
trivial:
|
|
||||||
- Bump version to 1.6.1 for next release.
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
trivial:
|
|
||||||
- mount - remove wrong version_added section from ``opts_no_log``.
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
bugfixes:
|
|
||||||
- acl - Fixed to set ACLs on paths mounted with NFS version 4 correctly (https://github.com/ansible-collections/ansible.posix/issues/240).
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
---
|
|
||||||
trivial:
|
|
||||||
- Bump ansible-core version to 2.19 of devel branch and add 2.18 to CI.
|
|
||||||
2
changelogs/fragments/dropping-ansible29.yml
Normal file
2
changelogs/fragments/dropping-ansible29.yml
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
major_changes:
|
||||||
|
- "Dropping support for Ansible 2.9, ansible-core 2.14 will be minimum required version for this release"
|
||||||
2
changelogs/fragments/test-reqs.yml
Normal file
2
changelogs/fragments/test-reqs.yml
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
trivial:
|
||||||
|
- "Move Galaxy test requirements from old transitional format in tests/requirements.yml to standard Ansible Galaxy requirements files in tests/integration/requirements.yml and tests/unit/requirements.yml."
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
---
|
---
|
||||||
namespace: ansible
|
namespace: ansible
|
||||||
name: posix
|
name: posix
|
||||||
version: 1.6.1
|
version: 1.5.4
|
||||||
readme: README.md
|
readme: README.md
|
||||||
authors:
|
authors:
|
||||||
- Ansible (github.com/ansible)
|
- Ansible (github.com/ansible)
|
||||||
|
|
@ -10,6 +10,6 @@ license_file: COPYING
|
||||||
tags: [posix, networking, shell, unix]
|
tags: [posix, networking, shell, unix]
|
||||||
dependencies: {}
|
dependencies: {}
|
||||||
repository: https://github.com/ansible-collections/ansible.posix
|
repository: https://github.com/ansible-collections/ansible.posix
|
||||||
documentation: https://docs.ansible.com/ansible/latest/collections/ansible/posix/
|
documentation: https://github.com/ansible-collections/ansible.posix/tree/main/docs
|
||||||
homepage: https://github.com/ansible-collections/ansible.posix
|
homepage: https://github.com/ansible-collections/ansible.posix
|
||||||
issues: https://github.com/ansible-collections/ansible.posix
|
issues: https://github.com/ansible-collections/ansible.posix
|
||||||
|
|
|
||||||
|
|
@ -75,10 +75,6 @@ options:
|
||||||
use_nfsv4_acls:
|
use_nfsv4_acls:
|
||||||
description:
|
description:
|
||||||
- Use NFSv4 ACLs instead of POSIX ACLs.
|
- Use NFSv4 ACLs instead of POSIX ACLs.
|
||||||
- This feature uses C(nfs4_setfacl) and C(nfs4_getfacl). The behavior depends on those implementation.
|
|
||||||
And currently it only supports C(A) in ACE, so C(D) must be replaced with the appropriate C(A).
|
|
||||||
- Permission is set as optimised ACLs by the system. You can check the actual ACLs that has been set using the return value.
|
|
||||||
- More info C(man nfs4_setfacl)
|
|
||||||
type: bool
|
type: bool
|
||||||
default: false
|
default: false
|
||||||
recalculate_mask:
|
recalculate_mask:
|
||||||
|
|
@ -183,7 +179,7 @@ def split_entry(entry):
|
||||||
def build_entry(etype, entity, permissions=None, use_nfsv4_acls=False):
|
def build_entry(etype, entity, permissions=None, use_nfsv4_acls=False):
|
||||||
'''Builds and returns an entry string. Does not include the permissions bit if they are not provided.'''
|
'''Builds and returns an entry string. Does not include the permissions bit if they are not provided.'''
|
||||||
if use_nfsv4_acls:
|
if use_nfsv4_acls:
|
||||||
return ':'.join(['A', 'g' if etype == 'group' else '', entity, permissions + 'tcy'])
|
return ':'.join([etype, entity, permissions, 'allow'])
|
||||||
|
|
||||||
if permissions:
|
if permissions:
|
||||||
return etype + ':' + entity + ':' + permissions
|
return etype + ':' + entity + ':' + permissions
|
||||||
|
|
@ -191,27 +187,22 @@ def build_entry(etype, entity, permissions=None, use_nfsv4_acls=False):
|
||||||
return etype + ':' + entity
|
return etype + ':' + entity
|
||||||
|
|
||||||
|
|
||||||
def build_command(module, mode, path, follow, default, recursive, recalculate_mask, use_nfsv4_acls, entry=''):
|
def build_command(module, mode, path, follow, default, recursive, recalculate_mask, entry=''):
|
||||||
'''Builds and returns a getfacl/setfacl command.'''
|
'''Builds and returns a getfacl/setfacl command.'''
|
||||||
if mode == 'set':
|
if mode == 'set':
|
||||||
cmd = [module.get_bin_path('nfs4_setfacl' if use_nfsv4_acls else 'setfacl', True)]
|
cmd = [module.get_bin_path('setfacl', True)]
|
||||||
cmd.extend(['-a' if use_nfsv4_acls else '-m', entry])
|
cmd.extend(['-m', entry])
|
||||||
elif mode == 'rm':
|
elif mode == 'rm':
|
||||||
cmd = [module.get_bin_path('nfs4_setfacl' if use_nfsv4_acls else 'setfacl', True)]
|
cmd = [module.get_bin_path('setfacl', True)]
|
||||||
cmd.extend(['-x', entry])
|
cmd.extend(['-x', entry])
|
||||||
else: # mode == 'get'
|
else: # mode == 'get'
|
||||||
cmd = [module.get_bin_path('getfacl', True)]
|
cmd = [module.get_bin_path('getfacl', True)]
|
||||||
# prevents absolute path warnings and removes headers
|
# prevents absolute path warnings and removes headers
|
||||||
if platform.system().lower() == 'linux':
|
if platform.system().lower() == 'linux':
|
||||||
if use_nfsv4_acls:
|
|
||||||
# use nfs4_getfacl instead of getfacl if use_nfsv4_acls is True
|
|
||||||
cmd = [module.get_bin_path('nfs4_getfacl', True)]
|
|
||||||
else:
|
|
||||||
cmd = [module.get_bin_path('getfacl', True)]
|
|
||||||
cmd.append('--absolute-names')
|
|
||||||
cmd.append('--omit-header')
|
cmd.append('--omit-header')
|
||||||
|
cmd.append('--absolute-names')
|
||||||
|
|
||||||
if recursive and not use_nfsv4_acls:
|
if recursive:
|
||||||
cmd.append('--recursive')
|
cmd.append('--recursive')
|
||||||
|
|
||||||
if recalculate_mask == 'mask' and mode in ['set', 'rm']:
|
if recalculate_mask == 'mask' and mode in ['set', 'rm']:
|
||||||
|
|
@ -219,7 +210,7 @@ def build_command(module, mode, path, follow, default, recursive, recalculate_ma
|
||||||
elif recalculate_mask == 'no_mask' and mode in ['set', 'rm']:
|
elif recalculate_mask == 'no_mask' and mode in ['set', 'rm']:
|
||||||
cmd.append('--no-mask')
|
cmd.append('--no-mask')
|
||||||
|
|
||||||
if not follow and not use_nfsv4_acls:
|
if not follow:
|
||||||
if platform.system().lower() == 'linux':
|
if platform.system().lower() == 'linux':
|
||||||
cmd.append('--physical')
|
cmd.append('--physical')
|
||||||
elif platform.system().lower() == 'freebsd':
|
elif platform.system().lower() == 'freebsd':
|
||||||
|
|
@ -232,34 +223,24 @@ def build_command(module, mode, path, follow, default, recursive, recalculate_ma
|
||||||
return cmd
|
return cmd
|
||||||
|
|
||||||
|
|
||||||
def acl_changed(module, cmd, entry, use_nfsv4_acls=False):
|
def acl_changed(module, cmd):
|
||||||
'''Returns true if the provided command affects the existing ACLs, false otherwise.'''
|
'''Returns true if the provided command affects the existing ACLs, false otherwise.'''
|
||||||
# To check the ACL changes, use the output of setfacl or nfs4_setfacl with '--test'.
|
# FreeBSD do not have a --test flag, so by default, it is safer to always say "true"
|
||||||
# FreeBSD do not have a --test flag, so by default, it is safer to always say "true".
|
|
||||||
if platform.system().lower() == 'freebsd':
|
if platform.system().lower() == 'freebsd':
|
||||||
return True
|
return True
|
||||||
|
|
||||||
cmd = cmd[:] # lists are mutables so cmd would be overwritten without this
|
cmd = cmd[:] # lists are mutables so cmd would be overwritten without this
|
||||||
cmd.insert(1, '--test')
|
cmd.insert(1, '--test')
|
||||||
lines = run_acl(module, cmd)
|
lines = run_acl(module, cmd)
|
||||||
counter = 0
|
|
||||||
for line in lines:
|
|
||||||
if line.endswith('*,*') and not use_nfsv4_acls:
|
|
||||||
return False
|
|
||||||
# if use_nfsv4_acls and entry is listed
|
|
||||||
if use_nfsv4_acls and entry == line:
|
|
||||||
counter += 1
|
|
||||||
|
|
||||||
# The current 'nfs4_setfacl --test' lists a new entry,
|
for line in lines:
|
||||||
# which will be added at the top of list, followed by the existing entries.
|
if not line.endswith('*,*'):
|
||||||
# So if the entry has already been registered, the entry should be find twice.
|
|
||||||
if counter == 2:
|
|
||||||
return False
|
|
||||||
return True
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
def run_acl(module, cmd, check_rc=True):
|
def run_acl(module, cmd, check_rc=True):
|
||||||
'''Runs the provided command and returns the output as a list of lines.'''
|
|
||||||
try:
|
try:
|
||||||
(rc, out, err) = module.run_command(cmd, check_rc=check_rc)
|
(rc, out, err) = module.run_command(cmd, check_rc=check_rc)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
@ -332,7 +313,7 @@ def main():
|
||||||
module.fail_json(msg="'recalculate_mask' MUST NOT be set to 'mask' or 'no_mask' when 'state=query'.")
|
module.fail_json(msg="'recalculate_mask' MUST NOT be set to 'mask' or 'no_mask' when 'state=query'.")
|
||||||
|
|
||||||
if not entry:
|
if not entry:
|
||||||
if state == 'absent' and permissions and not use_nfsv4_acls:
|
if state == 'absent' and permissions:
|
||||||
module.fail_json(msg="'permissions' MUST NOT be set when 'state=absent'.")
|
module.fail_json(msg="'permissions' MUST NOT be set when 'state=absent'.")
|
||||||
|
|
||||||
if state == 'absent' and not entity:
|
if state == 'absent' and not entity:
|
||||||
|
|
@ -369,24 +350,21 @@ def main():
|
||||||
entry = build_entry(etype, entity, permissions, use_nfsv4_acls)
|
entry = build_entry(etype, entity, permissions, use_nfsv4_acls)
|
||||||
command = build_command(
|
command = build_command(
|
||||||
module, 'set', path, follow,
|
module, 'set', path, follow,
|
||||||
default, recursive, recalculate_mask, use_nfsv4_acls, entry
|
default, recursive, recalculate_mask, entry
|
||||||
)
|
)
|
||||||
changed = acl_changed(module, command, entry, use_nfsv4_acls)
|
changed = acl_changed(module, command)
|
||||||
|
|
||||||
if changed and not module.check_mode:
|
if changed and not module.check_mode:
|
||||||
run_acl(module, command)
|
run_acl(module, command)
|
||||||
msg = "%s is present" % entry
|
msg = "%s is present" % entry
|
||||||
|
|
||||||
elif state == 'absent':
|
elif state == 'absent':
|
||||||
if use_nfsv4_acls:
|
|
||||||
entry = build_entry(etype, entity, permissions, use_nfsv4_acls)
|
|
||||||
else:
|
|
||||||
entry = build_entry(etype, entity, use_nfsv4_acls)
|
entry = build_entry(etype, entity, use_nfsv4_acls)
|
||||||
command = build_command(
|
command = build_command(
|
||||||
module, 'rm', path, follow,
|
module, 'rm', path, follow,
|
||||||
default, recursive, recalculate_mask, use_nfsv4_acls, entry
|
default, recursive, recalculate_mask, entry
|
||||||
)
|
)
|
||||||
changed = acl_changed(module, command, entry, use_nfsv4_acls)
|
changed = acl_changed(module, command)
|
||||||
|
|
||||||
if changed and not module.check_mode:
|
if changed and not module.check_mode:
|
||||||
run_acl(module, command, False)
|
run_acl(module, command, False)
|
||||||
|
|
@ -397,10 +375,7 @@ def main():
|
||||||
|
|
||||||
acl = run_acl(
|
acl = run_acl(
|
||||||
module,
|
module,
|
||||||
build_command(
|
build_command(module, 'get', path, follow, default, recursive, recalculate_mask)
|
||||||
module, 'get', path, follow, default, recursive,
|
|
||||||
recalculate_mask, use_nfsv4_acls
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
module.exit_json(changed=changed, msg=msg, acl=acl)
|
module.exit_json(changed=changed, msg=msg, acl=acl)
|
||||||
|
|
|
||||||
|
|
@ -43,11 +43,6 @@ options:
|
||||||
description:
|
description:
|
||||||
- Mount options (see fstab(5), or vfstab(4) on Solaris).
|
- Mount options (see fstab(5), or vfstab(4) on Solaris).
|
||||||
type: str
|
type: str
|
||||||
opts_no_log:
|
|
||||||
description:
|
|
||||||
- Do not log opts.
|
|
||||||
type: bool
|
|
||||||
default: false
|
|
||||||
dump:
|
dump:
|
||||||
description:
|
description:
|
||||||
- Dump (see fstab(5)).
|
- Dump (see fstab(5)).
|
||||||
|
|
@ -214,7 +209,6 @@ EXAMPLES = r'''
|
||||||
src: //192.168.1.200/share
|
src: //192.168.1.200/share
|
||||||
path: /mnt/smb_share
|
path: /mnt/smb_share
|
||||||
opts: "rw,vers=3,file_mode=0600,dir_mode=0700,dom={{ ad_domain }},username={{ ad_username }},password={{ ad_password }}"
|
opts: "rw,vers=3,file_mode=0600,dir_mode=0700,dom={{ ad_domain }},username={{ ad_username }},password={{ ad_password }}"
|
||||||
opts_no_log: true
|
|
||||||
fstype: cifs
|
fstype: cifs
|
||||||
state: ephemeral
|
state: ephemeral
|
||||||
'''
|
'''
|
||||||
|
|
@ -774,7 +768,6 @@ def main():
|
||||||
fstype=dict(type='str'),
|
fstype=dict(type='str'),
|
||||||
path=dict(type='path', required=True, aliases=['name']),
|
path=dict(type='path', required=True, aliases=['name']),
|
||||||
opts=dict(type='str'),
|
opts=dict(type='str'),
|
||||||
opts_no_log=dict(type='bool', default=False),
|
|
||||||
passno=dict(type='str', no_log=False, default='0'),
|
passno=dict(type='str', no_log=False, default='0'),
|
||||||
src=dict(type='path'),
|
src=dict(type='path'),
|
||||||
backup=dict(type='bool', default=False),
|
backup=dict(type='bool', default=False),
|
||||||
|
|
@ -788,9 +781,6 @@ def main():
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
if module.params['opts_no_log']:
|
|
||||||
module.no_log_values.add(module.params['opts'])
|
|
||||||
|
|
||||||
# solaris args:
|
# solaris args:
|
||||||
# name, src, fstype, opts, boot, passno, state, fstab=/etc/vfstab
|
# name, src, fstype, opts, boot, passno, state, fstab=/etc/vfstab
|
||||||
# linux args:
|
# linux args:
|
||||||
|
|
|
||||||
|
|
@ -739,53 +739,3 @@
|
||||||
- /tmp/myfs_A.img
|
- /tmp/myfs_A.img
|
||||||
- /tmp/myfs_B.img
|
- /tmp/myfs_B.img
|
||||||
- /tmp/myfs
|
- /tmp/myfs
|
||||||
|
|
||||||
- name: Block to test opts_no_log option
|
|
||||||
when: ansible_system == 'Linux'
|
|
||||||
block:
|
|
||||||
- name: Create an empty file
|
|
||||||
community.general.filesize:
|
|
||||||
path: /tmp/myfs.img
|
|
||||||
size: 1M
|
|
||||||
- name: Format FS
|
|
||||||
community.general.filesystem:
|
|
||||||
fstype: ext4
|
|
||||||
dev: /tmp/myfs.img
|
|
||||||
- name: Mount the FS with opts_no_log option true
|
|
||||||
ansible.posix.mount:
|
|
||||||
path: /tmp/myfs
|
|
||||||
src: /tmp/myfs.img
|
|
||||||
fstype: ext4
|
|
||||||
state: mounted
|
|
||||||
opts: rw
|
|
||||||
opts_no_log: true
|
|
||||||
register: mount_info
|
|
||||||
- name: Assert opts_no_log option true
|
|
||||||
ansible.builtin.assert:
|
|
||||||
that:
|
|
||||||
- mount_info.opts == 'VALUE_SPECIFIED_IN_NO_LOG_PARAMETER'
|
|
||||||
- name: Remount the FS with opts_no_log option false
|
|
||||||
ansible.posix.mount:
|
|
||||||
path: /tmp/myfs
|
|
||||||
src: /tmp/myfs.img
|
|
||||||
fstype: ext4
|
|
||||||
state: remounted
|
|
||||||
opts: rw,user
|
|
||||||
opts_no_log: false
|
|
||||||
register: mount_info
|
|
||||||
- name: Assert opts_no_log option false
|
|
||||||
ansible.builtin.assert:
|
|
||||||
that:
|
|
||||||
- mount_info.opts == 'rw,user'
|
|
||||||
always:
|
|
||||||
- name: Unmount FS
|
|
||||||
ansible.posix.mount:
|
|
||||||
path: /tmp/myfs
|
|
||||||
state: absent
|
|
||||||
- name: Remove the test FS
|
|
||||||
ansible.builtin.file:
|
|
||||||
path: '{{ item }}'
|
|
||||||
state: absent
|
|
||||||
loop:
|
|
||||||
- /tmp/myfs.img
|
|
||||||
- /tmp/myfs
|
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
tests/utils/shippable/timing.py shebang
|
|
||||||
Loading…
Reference in a new issue