mirror of
https://github.com/ansible-collections/ansible.posix.git
synced 2026-05-11 20:12:14 +00:00
Compare commits
31 Commits
28b6db7845
...
stable-2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8feac41f50 | ||
|
|
04274f4ce7 | ||
|
|
1bcf7f3ee4 | ||
|
|
30db9884ce | ||
|
|
d16e94f541 | ||
|
|
535167e254 | ||
|
|
6336671eba | ||
|
|
f7ed590388 | ||
|
|
07c6e38679 | ||
|
|
f6663b7511 | ||
|
|
8831aa205c | ||
|
|
e54b8bf68f | ||
|
|
d792d39716 | ||
|
|
9d3cb96f23 | ||
|
|
a27063e1dc | ||
|
|
2351c27339 | ||
|
|
5902dcab58 | ||
|
|
953577cdb7 | ||
|
|
59493f92aa | ||
|
|
20ea2f068e | ||
|
|
1f1d637b7f | ||
|
|
7128f64169 | ||
|
|
3149f38296 | ||
|
|
8cc459f381 | ||
|
|
82e4990f72 | ||
|
|
98f3e1255e | ||
|
|
a004bd9494 | ||
|
|
a357ceeb49 | ||
|
|
e8fc89fe5a | ||
|
|
ce72b7b1f4 | ||
|
|
f61bb76a86 |
@@ -7,9 +7,5 @@ skip_list:
|
|||||||
- meta-runtime[unsupported-version] # This rule doesn't make any sense
|
- meta-runtime[unsupported-version] # This rule doesn't make any sense
|
||||||
- fqcn[deep] # This rule produces false positives for files in tests/unit/plugins/action/fixtures/
|
- fqcn[deep] # This rule produces false positives for files in tests/unit/plugins/action/fixtures/
|
||||||
- sanity[cannot-ignore] # This rule is skipped to keep backward compatibility with Python 2
|
- sanity[cannot-ignore] # This rule is skipped to keep backward compatibility with Python 2
|
||||||
|
|
||||||
exclude_paths:
|
exclude_paths:
|
||||||
- changelogs/
|
- changelogs/
|
||||||
- .github/
|
|
||||||
- tests/
|
|
||||||
- meta/
|
|
||||||
|
|||||||
@@ -57,23 +57,6 @@ stages:
|
|||||||
test: units
|
test: units
|
||||||
- name: Lint
|
- name: Lint
|
||||||
test: lint
|
test: lint
|
||||||
|
|
||||||
- stage: Sanity_2_21
|
|
||||||
displayName: Ansible 2.21 Sanity & Units & Lint
|
|
||||||
dependsOn: []
|
|
||||||
jobs:
|
|
||||||
- template: templates/matrix.yml
|
|
||||||
parameters:
|
|
||||||
nameFormat: "{0}"
|
|
||||||
testFormat: 2.21/{0}
|
|
||||||
targets:
|
|
||||||
- name: Sanity
|
|
||||||
test: sanity
|
|
||||||
- name: Units
|
|
||||||
test: units
|
|
||||||
- name: Lint
|
|
||||||
test: lint
|
|
||||||
|
|
||||||
- stage: Sanity_2_20
|
- stage: Sanity_2_20
|
||||||
displayName: Ansible 2.20 Sanity & Units & Lint
|
displayName: Ansible 2.20 Sanity & Units & Lint
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
@@ -89,7 +72,6 @@ stages:
|
|||||||
test: units
|
test: units
|
||||||
- name: Lint
|
- name: Lint
|
||||||
test: lint
|
test: lint
|
||||||
|
|
||||||
- stage: Sanity_2_19
|
- stage: Sanity_2_19
|
||||||
displayName: Ansible 2.19 Sanity & Units & Lint
|
displayName: Ansible 2.19 Sanity & Units & Lint
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
@@ -105,7 +87,6 @@ stages:
|
|||||||
test: units
|
test: units
|
||||||
- name: Lint
|
- name: Lint
|
||||||
test: lint
|
test: lint
|
||||||
|
|
||||||
- stage: Sanity_2_18
|
- stage: Sanity_2_18
|
||||||
displayName: Ansible 2.18 Sanity & Units & Lint
|
displayName: Ansible 2.18 Sanity & Units & Lint
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
@@ -121,7 +102,6 @@ stages:
|
|||||||
test: units
|
test: units
|
||||||
- name: Lint
|
- name: Lint
|
||||||
test: lint
|
test: lint
|
||||||
|
|
||||||
- stage: Sanity_2_17
|
- stage: Sanity_2_17
|
||||||
displayName: Ansible 2.17 Sanity & Units & Lint
|
displayName: Ansible 2.17 Sanity & Units & Lint
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
@@ -137,7 +117,21 @@ stages:
|
|||||||
test: units
|
test: units
|
||||||
- name: Lint
|
- name: Lint
|
||||||
test: lint
|
test: lint
|
||||||
|
- stage: Sanity_2_16
|
||||||
|
displayName: Ansible 2.16 Sanity & Units & Lint
|
||||||
|
dependsOn: []
|
||||||
|
jobs:
|
||||||
|
- template: templates/matrix.yml
|
||||||
|
parameters:
|
||||||
|
nameFormat: "{0}"
|
||||||
|
testFormat: 2.16/{0}
|
||||||
|
targets:
|
||||||
|
- name: Sanity
|
||||||
|
test: sanity
|
||||||
|
- name: Units
|
||||||
|
test: units
|
||||||
|
- name: Lint
|
||||||
|
test: lint
|
||||||
## Docker
|
## Docker
|
||||||
- stage: Docker_devel
|
- stage: Docker_devel
|
||||||
displayName: Docker devel
|
displayName: Docker devel
|
||||||
@@ -147,28 +141,12 @@ stages:
|
|||||||
parameters:
|
parameters:
|
||||||
testFormat: devel/linux/{0}/1
|
testFormat: devel/linux/{0}/1
|
||||||
targets:
|
targets:
|
||||||
- name: Fedora 44
|
- name: Fedora 42
|
||||||
test: fedora44
|
test: fedora42
|
||||||
- name: Ubuntu 22.04
|
- name: Ubuntu 22.04
|
||||||
test: ubuntu2204
|
test: ubuntu2204
|
||||||
- name: Ubuntu 24.04
|
- name: Ubuntu 24.04
|
||||||
test: ubuntu2404
|
test: ubuntu2404
|
||||||
|
|
||||||
- stage: Docker_2_21
|
|
||||||
displayName: Docker 2.21
|
|
||||||
dependsOn: []
|
|
||||||
jobs:
|
|
||||||
- template: templates/matrix.yml
|
|
||||||
parameters:
|
|
||||||
testFormat: devel/linux/{0}/1
|
|
||||||
targets:
|
|
||||||
- name: Fedora 44
|
|
||||||
test: fedora44
|
|
||||||
- name: Ubuntu 22.04
|
|
||||||
test: ubuntu2204
|
|
||||||
- name: Ubuntu 24.04
|
|
||||||
test: ubuntu2404
|
|
||||||
|
|
||||||
- stage: Docker_2_20
|
- stage: Docker_2_20
|
||||||
displayName: Docker 2.20
|
displayName: Docker 2.20
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
@@ -183,7 +161,6 @@ stages:
|
|||||||
test: ubuntu2204
|
test: ubuntu2204
|
||||||
- name: Ubuntu 24.04
|
- name: Ubuntu 24.04
|
||||||
test: ubuntu2404
|
test: ubuntu2404
|
||||||
|
|
||||||
- stage: Docker_2_19
|
- stage: Docker_2_19
|
||||||
displayName: Docker 2.19
|
displayName: Docker 2.19
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
@@ -198,7 +175,6 @@ stages:
|
|||||||
test: ubuntu2204
|
test: ubuntu2204
|
||||||
- name: Ubuntu 24.04
|
- name: Ubuntu 24.04
|
||||||
test: ubuntu2404
|
test: ubuntu2404
|
||||||
|
|
||||||
- stage: Docker_2_18
|
- stage: Docker_2_18
|
||||||
displayName: Docker 2.18
|
displayName: Docker 2.18
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
@@ -213,7 +189,6 @@ stages:
|
|||||||
test: ubuntu2204
|
test: ubuntu2204
|
||||||
- name: Ubuntu 24.04
|
- name: Ubuntu 24.04
|
||||||
test: ubuntu2404
|
test: ubuntu2404
|
||||||
|
|
||||||
- stage: Docker_2_17
|
- stage: Docker_2_17
|
||||||
displayName: Docker 2.17
|
displayName: Docker 2.17
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
@@ -226,6 +201,20 @@ stages:
|
|||||||
test: fedora39
|
test: fedora39
|
||||||
- name: Ubuntu 22.04
|
- name: Ubuntu 22.04
|
||||||
test: ubuntu2204
|
test: ubuntu2204
|
||||||
|
- stage: Docker_2_16
|
||||||
|
displayName: Docker 2.16
|
||||||
|
dependsOn: []
|
||||||
|
jobs:
|
||||||
|
- template: templates/matrix.yml
|
||||||
|
parameters:
|
||||||
|
testFormat: 2.16/linux/{0}/1
|
||||||
|
targets:
|
||||||
|
- name: CentOS 7
|
||||||
|
test: centos7
|
||||||
|
- name: Fedora 38
|
||||||
|
test: fedora38
|
||||||
|
- name: Ubuntu 22.04
|
||||||
|
test: ubuntu2204
|
||||||
|
|
||||||
## Remote
|
## Remote
|
||||||
- stage: Remote_devel
|
- stage: Remote_devel
|
||||||
@@ -236,32 +225,14 @@ stages:
|
|||||||
parameters:
|
parameters:
|
||||||
testFormat: devel/{0}/1
|
testFormat: devel/{0}/1
|
||||||
targets:
|
targets:
|
||||||
- name: RHEL 10.1
|
- name: RHEL 10.0
|
||||||
test: rhel/10.1
|
test: rhel/10.0
|
||||||
- name: RHEL 9.7
|
- name: RHEL 9.6
|
||||||
test: rhel/9.7
|
test: rhel/9.6
|
||||||
- name: FreeBSD 14.4
|
- name: FreeBSD 14.3
|
||||||
test: freebsd/14.4
|
test: freebsd/14.3
|
||||||
- name: FreeBSD 15.0
|
- name: FreeBSD 13.5
|
||||||
test: freebsd/15.0
|
test: freebsd/13.5
|
||||||
|
|
||||||
- stage: Remote_2_21
|
|
||||||
displayName: Remote 2.21
|
|
||||||
dependsOn: []
|
|
||||||
jobs:
|
|
||||||
- template: templates/matrix.yml
|
|
||||||
parameters:
|
|
||||||
testFormat: devel/{0}/1
|
|
||||||
targets:
|
|
||||||
- name: RHEL 10.1
|
|
||||||
test: rhel/10.1
|
|
||||||
- name: RHEL 9.7
|
|
||||||
test: rhel/9.7
|
|
||||||
- name: FreeBSD 14.4
|
|
||||||
test: freebsd/14.4
|
|
||||||
- name: FreeBSD 15.0
|
|
||||||
test: freebsd/15.0
|
|
||||||
|
|
||||||
- stage: Remote_2_20
|
- stage: Remote_2_20
|
||||||
displayName: Remote 2.20
|
displayName: Remote 2.20
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
@@ -270,15 +241,14 @@ stages:
|
|||||||
parameters:
|
parameters:
|
||||||
testFormat: 2.20/{0}/1
|
testFormat: 2.20/{0}/1
|
||||||
targets:
|
targets:
|
||||||
- name: RHEL 10.1
|
- name: RHEL 10.0
|
||||||
test: rhel/10.1
|
test: rhel/10.0
|
||||||
- name: RHEL 9.7
|
- name: RHEL 9.6
|
||||||
test: rhel/9.7
|
test: rhel/9.6
|
||||||
- name: FreeBSD 14.3
|
- name: FreeBSD 14.3
|
||||||
test: freebsd/14.3
|
test: freebsd/14.3
|
||||||
- name: FreeBSD 13.5
|
- name: FreeBSD 13.5
|
||||||
test: freebsd/13.5
|
test: freebsd/13.5
|
||||||
|
|
||||||
- stage: Remote_2_19
|
- stage: Remote_2_19
|
||||||
displayName: Remote 2.19
|
displayName: Remote 2.19
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
@@ -287,15 +257,14 @@ stages:
|
|||||||
parameters:
|
parameters:
|
||||||
testFormat: 2.19/{0}/1
|
testFormat: 2.19/{0}/1
|
||||||
targets:
|
targets:
|
||||||
- name: RHEL 10.1
|
- name: RHEL 10.0
|
||||||
test: rhel/10.1
|
test: rhel/10.0
|
||||||
- name: RHEL 9.7
|
- name: RHEL 9.5
|
||||||
test: rhel/9.7
|
test: rhel/9.5
|
||||||
- name: FreeBSD 14.2
|
- name: FreeBSD 14.2
|
||||||
test: freebsd/14.2
|
test: freebsd/14.2
|
||||||
- name: FreeBSD 13.5
|
- name: FreeBSD 13.5
|
||||||
test: freebsd/13.5
|
test: freebsd/13.5
|
||||||
|
|
||||||
- stage: Remote_2_18
|
- stage: Remote_2_18
|
||||||
displayName: Remote 2.18
|
displayName: Remote 2.18
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
@@ -304,13 +273,12 @@ stages:
|
|||||||
parameters:
|
parameters:
|
||||||
testFormat: 2.18/{0}/1
|
testFormat: 2.18/{0}/1
|
||||||
targets:
|
targets:
|
||||||
- name: RHEL 10.1
|
- name: RHEL 10.0
|
||||||
test: rhel/10.1
|
test: rhel/10.0
|
||||||
- name: RHEL 9.7
|
- name: RHEL 9.4
|
||||||
test: rhel/9.7
|
test: rhel/9.4
|
||||||
- name: FreeBSD 13.5
|
- name: FreeBSD 13.5
|
||||||
test: freebsd/13.5
|
test: freebsd/13.5
|
||||||
|
|
||||||
- stage: Remote_2_17
|
- stage: Remote_2_17
|
||||||
displayName: Remote 2.17
|
displayName: Remote 2.17
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
@@ -324,12 +292,26 @@ stages:
|
|||||||
test: rhel/10.0
|
test: rhel/10.0
|
||||||
- name: FreeBSD 13.5
|
- name: FreeBSD 13.5
|
||||||
test: freebsd/13.5
|
test: freebsd/13.5
|
||||||
|
- stage: Remote_2_16
|
||||||
|
displayName: Remote 2.16
|
||||||
|
dependsOn: []
|
||||||
|
jobs:
|
||||||
|
- template: templates/matrix.yml
|
||||||
|
parameters:
|
||||||
|
testFormat: 2.16/{0}/1
|
||||||
|
targets:
|
||||||
|
# 2.16 remote target only has RHEL 9.6 image
|
||||||
|
- name: RHEL 9.6
|
||||||
|
test: rhel/9.6
|
||||||
|
|
||||||
## Finally
|
## Finally
|
||||||
|
|
||||||
- stage: Summary
|
- stage: Summary
|
||||||
condition: succeededOrFailed()
|
condition: succeededOrFailed()
|
||||||
dependsOn:
|
dependsOn:
|
||||||
|
- Sanity_2_16
|
||||||
|
- Remote_2_16
|
||||||
|
- Docker_2_16
|
||||||
- Sanity_2_17
|
- Sanity_2_17
|
||||||
- Remote_2_17
|
- Remote_2_17
|
||||||
- Docker_2_17
|
- Docker_2_17
|
||||||
@@ -342,9 +324,6 @@ stages:
|
|||||||
- Sanity_2_20
|
- Sanity_2_20
|
||||||
- Remote_2_20
|
- Remote_2_20
|
||||||
- Docker_2_20
|
- Docker_2_20
|
||||||
- Sanity_2_21
|
|
||||||
- Remote_2_21
|
|
||||||
- Docker_2_21
|
|
||||||
- Sanity_devel
|
- Sanity_devel
|
||||||
- Remote_devel
|
- Remote_devel
|
||||||
- Docker_devel
|
- Docker_devel
|
||||||
|
|||||||
52
.github/BOTMETA.yml
vendored
Normal file
52
.github/BOTMETA.yml
vendored
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
---
|
||||||
|
automerge: false
|
||||||
|
files:
|
||||||
|
$module_utils/mount.py:
|
||||||
|
labels: mount
|
||||||
|
$modules/acl.py:
|
||||||
|
authors: astorije bcoca
|
||||||
|
labels: acl
|
||||||
|
ignore: astorije
|
||||||
|
$modules/at.py:
|
||||||
|
authors: risaacson
|
||||||
|
labels: at
|
||||||
|
$modules/authorized_key.py:
|
||||||
|
authors: ansible
|
||||||
|
labels: authorized_key
|
||||||
|
$modules/mount.py:
|
||||||
|
authors: ansible skvidal
|
||||||
|
maintainers: jtyr
|
||||||
|
labels: mount
|
||||||
|
ignore: skvidal
|
||||||
|
$modules/patch.py:
|
||||||
|
authors: jirutka luisperlaz
|
||||||
|
$modules/seboolean.py:
|
||||||
|
authors: sfromm
|
||||||
|
labels: seboolean
|
||||||
|
$modules/selinux.py:
|
||||||
|
authors: goozbach
|
||||||
|
maintainers: samdoran
|
||||||
|
labels: selinux
|
||||||
|
$modules/synchronize.py:
|
||||||
|
authors: tima
|
||||||
|
labels: synchronize
|
||||||
|
$modules/sysctl.py:
|
||||||
|
authors: davixx
|
||||||
|
maintainers: Akasurde
|
||||||
|
labels: sysctl
|
||||||
|
$plugins/:
|
||||||
|
labels: profile
|
||||||
|
$plugins/debug.py:
|
||||||
|
labels: debug
|
||||||
|
$plugins/patch.py:
|
||||||
|
labels: patch
|
||||||
|
$plugins/synchronize.py:
|
||||||
|
labels: synchronize
|
||||||
|
$plugins/timer.py:
|
||||||
|
macros:
|
||||||
|
actions: plugins/action
|
||||||
|
callbacks: plugins/callback
|
||||||
|
module_utils: plugins/module_utils
|
||||||
|
modules: plugins/modules
|
||||||
|
plugins: plugins/plugins
|
||||||
|
shells: plugins/shell
|
||||||
35
.github/workflows/certification.yml
vendored
35
.github/workflows/certification.yml
vendored
@@ -1,35 +0,0 @@
|
|||||||
---
|
|
||||||
# This workflow calls the latest version of the
|
|
||||||
# reusable workflow.
|
|
||||||
# You can copy this file into your respository if
|
|
||||||
# you want to check against pinned versions of
|
|
||||||
# Automation Hub tests.
|
|
||||||
name: Run collection certification checks
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches: [main]
|
|
||||||
workflow_dispatch:
|
|
||||||
schedule:
|
|
||||||
- cron: '0 6 * * *'
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: cert-ver-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
|
|
||||||
# Files that are not related to the core functionality
|
|
||||||
# of your collection can cause Ansible Lint to fail.
|
|
||||||
# If this happens, add an .ansible-lint file that includes
|
|
||||||
# those files and directories to the root of your
|
|
||||||
# repository; for example:
|
|
||||||
# https://github.com/ansible-collections/partner-certification-checker/blob/main/.ansible-lint
|
|
||||||
# https://github.com/ansible-collections/partner-certification-checker/blob/main/.ansible-lint
|
|
||||||
|
|
||||||
# If there are sanity test failures that cannot be fixed and are allowed to ignore
|
|
||||||
# https://docs.ansible.com/projects/lint/rules/sanity/, create a sanity ignore file
|
|
||||||
# https://docs.ansible.com/projects/ansible/devel/dev_guide/testing/sanity/ignores.html#ignore-file-location
|
|
||||||
# for each affected version of ansible-core (for example, `tests/sanity/ignore-2.18.txt`) and add corresponding entries.
|
|
||||||
jobs:
|
|
||||||
call:
|
|
||||||
uses: ansible-collections/partner-certification-checker/.github/workflows/certification-reusable.yml@v0.1
|
|
||||||
@@ -4,6 +4,27 @@ ansible.posix Release Notes
|
|||||||
|
|
||||||
.. contents:: Topics
|
.. contents:: Topics
|
||||||
|
|
||||||
|
v2.1.0
|
||||||
|
======
|
||||||
|
|
||||||
|
Release Summary
|
||||||
|
---------------
|
||||||
|
|
||||||
|
This is the minor release of the ``ansible.posix`` collection.
|
||||||
|
This changelog contains all changes to the modules and plugins
|
||||||
|
in the stable-2 branch that have been added after the release of
|
||||||
|
``ansible.posix`` 2.0.0
|
||||||
|
|
||||||
|
Minor Changes
|
||||||
|
-------------
|
||||||
|
|
||||||
|
- profile_tasks and profile_roles callback plugins - avoid deleted/deprecated callback functions, instead use modern interface that was introduced a longer time ago (https://github.com/ansible-collections/ansible.posix/issues/650).
|
||||||
|
|
||||||
|
Bugfixes
|
||||||
|
--------
|
||||||
|
|
||||||
|
- ansible.posix.cgroup_perf_recap - fixes json module load path (https://github.com/ansible-collections/ansible.posix/issues/630).
|
||||||
|
|
||||||
v2.0.0
|
v2.0.0
|
||||||
======
|
======
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<!-- Add CI and code coverage badges here. Samples included below. -->
|
<!-- Add CI and code coverage badges here. Samples included below. -->
|
||||||
[](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)-->
|
||||||
|
|
||||||
## Communication
|
## Communication
|
||||||
|
|
||||||
|
|||||||
@@ -490,3 +490,25 @@ releases:
|
|||||||
- 597_remove_fstab_comment_on_updating.yml
|
- 597_remove_fstab_comment_on_updating.yml
|
||||||
- 598_icmp_block_inversion.yml
|
- 598_icmp_block_inversion.yml
|
||||||
release_date: '2024-12-04'
|
release_date: '2024-12-04'
|
||||||
|
2.1.0:
|
||||||
|
changes:
|
||||||
|
bugfixes:
|
||||||
|
- ansible.posix.cgroup_perf_recap - fixes json module load path (https://github.com/ansible-collections/ansible.posix/issues/630).
|
||||||
|
minor_changes:
|
||||||
|
- profile_tasks and profile_roles callback plugins - avoid deleted/deprecated
|
||||||
|
callback functions, instead use modern interface that was introduced a longer
|
||||||
|
time ago (https://github.com/ansible-collections/ansible.posix/issues/650).
|
||||||
|
release_summary: 'This is the minor release of the ``ansible.posix`` collection.
|
||||||
|
|
||||||
|
This changelog contains all changes to the modules and plugins
|
||||||
|
|
||||||
|
in the stable-2 branch that have been added after the release of
|
||||||
|
|
||||||
|
``ansible.posix`` 2.0.0'
|
||||||
|
fragments:
|
||||||
|
- 2.1.0.yml
|
||||||
|
- 631_fixes_module_path.yml
|
||||||
|
- 642_ci_add_rhel10.yml
|
||||||
|
- 650-profile_tasks_roles.yml
|
||||||
|
- 654_ci_bump_core_version.yml
|
||||||
|
release_date: '2025-07-16'
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
trivial:
|
|
||||||
- Bump version to 3.0.0 for the next release (https://github.com/ansible-collections/ansible.posix/issues/603).
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
trivial:
|
|
||||||
- Remove ubuntu20.04 from CI tests (https://github.com/ansible-collections/ansible.posix/issues/612).
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
---
|
|
||||||
minor_changes:
|
|
||||||
- profile_tasks - Add option to provide a different date/time format (https://github.com/ansible-collections/ansible.posix/issues/279).
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
bugfixes:
|
|
||||||
- ansible.posix.cgroup_perf_recap - fixes json module load path (https://github.com/ansible-collections/ansible.posix/issues/630).
|
|
||||||
trivial:
|
|
||||||
- ansible.posix.seboolean - remove unnecessary condition from seboolean integration tests (https://github.com/ansible-collections/ansible.posix/issues/630).
|
|
||||||
- ansible.posix.selinux - optimize conditions for selinux integration tests (https://github.com/ansible-collections/ansible.posix/issues/630).
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
---
|
|
||||||
bugfixes:
|
|
||||||
- ansible.posix.authorized_key - fixes error on permission denied in authorized_key module (https://github.com/ansible-collections/ansible.posix/issues/462).
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
trivial:
|
|
||||||
- Add Red Hat Enterprise Linux 10.0 to the CI matrix (https://github.com/ansible-collections/ansible.posix/issues/642).
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
minor_changes:
|
|
||||||
- "profile_tasks and profile_roles callback plugins - avoid deleted/deprecated callback functions, instead use modern interface that was introduced a longer time ago (https://github.com/ansible-collections/ansible.posix/issues/650)."
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
---
|
|
||||||
trivial:
|
|
||||||
- Bump ansible-core version to 2.20 of devel branch and add 2.19 to CI
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
bugfixes:
|
|
||||||
- "firewalld_info - stop returning warnings as return values; this has been deprecated by ansible-core (https://github.com/ansible-collections/ansible.posix/pull/670)."
|
|
||||||
- "mount - stop returning warnings as return values; this has been deprecated by ansible-core (https://github.com/ansible-collections/ansible.posix/pull/670)."
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
namespace: ansible
|
namespace: ansible
|
||||||
name: posix
|
name: posix
|
||||||
version: 3.0.0
|
version: 2.1.0
|
||||||
readme: README.md
|
readme: README.md
|
||||||
authors:
|
authors:
|
||||||
- Ansible (github.com/ansible)
|
- Ansible (github.com/ansible)
|
||||||
|
|||||||
@@ -52,17 +52,6 @@ DOCUMENTATION = '''
|
|||||||
- section: callback_profile_tasks
|
- section: callback_profile_tasks
|
||||||
key: summary_only
|
key: summary_only
|
||||||
version_added: 1.5.0
|
version_added: 1.5.0
|
||||||
datetime_format:
|
|
||||||
description:
|
|
||||||
- Datetime format, as expected by the C(strftime) and C(strptime) methods.
|
|
||||||
An C(iso8601) alias will be translated to C('%Y-%m-%dT%H:%M:%S.%f') if that datetime standard wants to be used.
|
|
||||||
default: '%A %d %B %Y %H:%M:%S %z'
|
|
||||||
env:
|
|
||||||
- name: PROFILE_TASKS_DATETIME_FORMAT
|
|
||||||
ini:
|
|
||||||
- section: callback_profile_tasks
|
|
||||||
key: datetime_format
|
|
||||||
version_added: 3.0.0
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
EXAMPLES = '''
|
EXAMPLES = '''
|
||||||
@@ -83,15 +72,14 @@ sample output: >
|
|||||||
'''
|
'''
|
||||||
|
|
||||||
import collections
|
import collections
|
||||||
|
import time
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
from ansible.module_utils.six.moves import reduce
|
from ansible.module_utils.six.moves import reduce
|
||||||
from ansible.plugins.callback import CallbackBase
|
from ansible.plugins.callback import CallbackBase
|
||||||
|
|
||||||
|
|
||||||
# define start time
|
# define start time
|
||||||
dt0 = dtn = datetime.now().astimezone()
|
t0 = tn = time.time()
|
||||||
|
|
||||||
|
|
||||||
def secondsToStr(t):
|
def secondsToStr(t):
|
||||||
@@ -116,18 +104,17 @@ def filled(msg, fchar="*"):
|
|||||||
|
|
||||||
def timestamp(self):
|
def timestamp(self):
|
||||||
if self.current is not None:
|
if self.current is not None:
|
||||||
elapsed = (datetime.now().astimezone() - self.stats[self.current]['started']).total_seconds()
|
elapsed = time.time() - self.stats[self.current]['started']
|
||||||
self.stats[self.current]['elapsed'] += elapsed
|
self.stats[self.current]['elapsed'] += elapsed
|
||||||
|
|
||||||
|
|
||||||
def tasktime(self):
|
def tasktime():
|
||||||
global dtn
|
global tn
|
||||||
cdtn = datetime.now().astimezone()
|
time_current = time.strftime('%A %d %B %Y %H:%M:%S %z')
|
||||||
datetime_current = cdtn.strftime(self.datetime_format)
|
time_elapsed = secondsToStr(time.time() - tn)
|
||||||
time_elapsed = secondsToStr((cdtn - dtn).total_seconds())
|
time_total_elapsed = secondsToStr(time.time() - t0)
|
||||||
time_total_elapsed = secondsToStr((cdtn - dt0).total_seconds())
|
tn = time.time()
|
||||||
dtn = cdtn
|
return filled('%s (%s)%s%s' % (time_current, time_elapsed, ' ' * 7, time_total_elapsed))
|
||||||
return filled('%s (%s)%s%s' % (datetime_current, time_elapsed, ' ' * 7, time_total_elapsed))
|
|
||||||
|
|
||||||
|
|
||||||
class CallbackModule(CallbackBase):
|
class CallbackModule(CallbackBase):
|
||||||
@@ -147,7 +134,6 @@ class CallbackModule(CallbackBase):
|
|||||||
self.sort_order = None
|
self.sort_order = None
|
||||||
self.summary_only = None
|
self.summary_only = None
|
||||||
self.task_output_limit = None
|
self.task_output_limit = None
|
||||||
self.datetime_format = None
|
|
||||||
|
|
||||||
super(CallbackModule, self).__init__()
|
super(CallbackModule, self).__init__()
|
||||||
|
|
||||||
@@ -173,14 +159,9 @@ class CallbackModule(CallbackBase):
|
|||||||
else:
|
else:
|
||||||
self.task_output_limit = int(self.task_output_limit)
|
self.task_output_limit = int(self.task_output_limit)
|
||||||
|
|
||||||
self.datetime_format = self.get_option('datetime_format')
|
|
||||||
if self.datetime_format is not None:
|
|
||||||
if self.datetime_format == 'iso8601':
|
|
||||||
self.datetime_format = '%Y-%m-%dT%H:%M:%S.%f'
|
|
||||||
|
|
||||||
def _display_tasktime(self):
|
def _display_tasktime(self):
|
||||||
if not self.summary_only:
|
if not self.summary_only:
|
||||||
self._display.display(tasktime(self))
|
self._display.display(tasktime())
|
||||||
|
|
||||||
def _record_task(self, task):
|
def _record_task(self, task):
|
||||||
"""
|
"""
|
||||||
@@ -195,11 +176,10 @@ class CallbackModule(CallbackBase):
|
|||||||
# with the same UUID is executed when `serial` is specified in a playbook.
|
# with the same UUID is executed when `serial` is specified in a playbook.
|
||||||
# elapsed: Elapsed time since the first serialized task was started
|
# elapsed: Elapsed time since the first serialized task was started
|
||||||
self.current = task._uuid
|
self.current = task._uuid
|
||||||
dtn = datetime.now().astimezone()
|
|
||||||
if self.current not in self.stats:
|
if self.current not in self.stats:
|
||||||
self.stats[self.current] = {'started': dtn, 'elapsed': 0.0, 'name': task.get_name()}
|
self.stats[self.current] = {'started': time.time(), 'elapsed': 0.0, 'name': task.get_name()}
|
||||||
else:
|
else:
|
||||||
self.stats[self.current]['started'] = dtn
|
self.stats[self.current]['started'] = time.time()
|
||||||
if self._display.verbosity >= 2:
|
if self._display.verbosity >= 2:
|
||||||
self.stats[self.current]['path'] = task.get_path()
|
self.stats[self.current]['path'] = task.get_path()
|
||||||
|
|
||||||
@@ -213,7 +193,7 @@ class CallbackModule(CallbackBase):
|
|||||||
# Align summary report header with other callback plugin summary
|
# Align summary report header with other callback plugin summary
|
||||||
self._display.banner("TASKS RECAP")
|
self._display.banner("TASKS RECAP")
|
||||||
|
|
||||||
self._display.display(tasktime(self))
|
self._display.display(tasktime())
|
||||||
self._display.display(filled("", fchar="="))
|
self._display.display(filled("", fchar="="))
|
||||||
|
|
||||||
timestamp(self)
|
timestamp(self)
|
||||||
|
|||||||
@@ -225,8 +225,6 @@ import os.path
|
|||||||
import tempfile
|
import tempfile
|
||||||
import re
|
import re
|
||||||
import shlex
|
import shlex
|
||||||
import errno
|
|
||||||
import traceback
|
|
||||||
from operator import itemgetter
|
from operator import itemgetter
|
||||||
|
|
||||||
from ansible.module_utils._text import to_native
|
from ansible.module_utils._text import to_native
|
||||||
@@ -477,18 +475,16 @@ def parsekey(module, raw_key, rank=None):
|
|||||||
return (key, key_type, options, comment, rank)
|
return (key, key_type, options, comment, rank)
|
||||||
|
|
||||||
|
|
||||||
def readfile(module, filename):
|
def readfile(filename):
|
||||||
|
|
||||||
|
if not os.path.isfile(filename):
|
||||||
|
return ''
|
||||||
|
|
||||||
|
f = open(filename)
|
||||||
try:
|
try:
|
||||||
with open(filename, 'r') as f:
|
return f.read()
|
||||||
return f.read()
|
finally:
|
||||||
except IOError as e:
|
f.close()
|
||||||
if e.errno == errno.EACCES:
|
|
||||||
module.fail_json(msg="Permission denied on file or path for authorized keys file: %s" % filename,
|
|
||||||
exception=traceback.format_exc())
|
|
||||||
elif e.errno == errno.ENOENT:
|
|
||||||
return ''
|
|
||||||
else:
|
|
||||||
raise
|
|
||||||
|
|
||||||
|
|
||||||
def parsekeys(module, lines):
|
def parsekeys(module, lines):
|
||||||
@@ -601,7 +597,7 @@ def enforce_state(module, params):
|
|||||||
# check current state -- just get the filename, don't create file
|
# check current state -- just get the filename, don't create file
|
||||||
do_write = False
|
do_write = False
|
||||||
params["keyfile"] = keyfile(module, user, do_write, path, manage_dir)
|
params["keyfile"] = keyfile(module, user, do_write, path, manage_dir)
|
||||||
existing_content = readfile(module, params["keyfile"])
|
existing_content = readfile(params["keyfile"])
|
||||||
existing_keys = parsekeys(module, existing_content)
|
existing_keys = parsekeys(module, existing_content)
|
||||||
|
|
||||||
# Add a place holder for keys that should exist in the state=present and
|
# Add a place holder for keys that should exist in the state=present and
|
||||||
|
|||||||
@@ -319,6 +319,7 @@ def main():
|
|||||||
active_zones=module.params['active_zones'],
|
active_zones=module.params['active_zones'],
|
||||||
collected_zones=list(),
|
collected_zones=list(),
|
||||||
undefined_zones=list(),
|
undefined_zones=list(),
|
||||||
|
warnings=list(),
|
||||||
)
|
)
|
||||||
|
|
||||||
# Exit with failure message if requirements modules are not installed.
|
# Exit with failure message if requirements modules are not installed.
|
||||||
|
|||||||
@@ -279,7 +279,7 @@ def _set_mount_save_old(module, args):
|
|||||||
old_lines = []
|
old_lines = []
|
||||||
exists = False
|
exists = False
|
||||||
changed = False
|
changed = False
|
||||||
escaped_args = dict([(k, _escape_fstab(v)) for k, v in iteritems(args)])
|
escaped_args = dict([(k, _escape_fstab(v)) for k, v in iteritems(args) if k != 'warnings'])
|
||||||
new_line = '%(src)s %(name)s %(fstype)s %(opts)s %(dump)s %(passno)s\n'
|
new_line = '%(src)s %(name)s %(fstype)s %(opts)s %(dump)s %(passno)s\n'
|
||||||
|
|
||||||
if platform.system() == 'SunOS':
|
if platform.system() == 'SunOS':
|
||||||
@@ -804,6 +804,7 @@ def main():
|
|||||||
passno='-',
|
passno='-',
|
||||||
fstab=module.params['fstab'],
|
fstab=module.params['fstab'],
|
||||||
boot='yes' if module.params['boot'] else 'no',
|
boot='yes' if module.params['boot'] else 'no',
|
||||||
|
warnings=[]
|
||||||
)
|
)
|
||||||
if args['fstab'] is None:
|
if args['fstab'] is None:
|
||||||
args['fstab'] = '/etc/vfstab'
|
args['fstab'] = '/etc/vfstab'
|
||||||
@@ -815,6 +816,7 @@ def main():
|
|||||||
passno='0',
|
passno='0',
|
||||||
fstab=module.params['fstab'],
|
fstab=module.params['fstab'],
|
||||||
boot='yes',
|
boot='yes',
|
||||||
|
warnings=[]
|
||||||
)
|
)
|
||||||
if args['fstab'] is None:
|
if args['fstab'] is None:
|
||||||
args['fstab'] = '/etc/fstab'
|
args['fstab'] = '/etc/fstab'
|
||||||
@@ -832,7 +834,8 @@ def main():
|
|||||||
linux_mounts = get_linux_mounts(module)
|
linux_mounts = get_linux_mounts(module)
|
||||||
|
|
||||||
if linux_mounts is None:
|
if linux_mounts is None:
|
||||||
module.warn('Cannot open file /proc/self/mountinfo. Bind mounts might be misinterpreted.')
|
args['warnings'].append('Cannot open file /proc/self/mountinfo.'
|
||||||
|
' Bind mounts might be misinterpreted.')
|
||||||
|
|
||||||
# Override defaults with user specified params
|
# Override defaults with user specified params
|
||||||
for key in ('src', 'fstype', 'passno', 'opts', 'dump', 'fstab'):
|
for key in ('src', 'fstype', 'passno', 'opts', 'dump', 'fstab'):
|
||||||
@@ -844,7 +847,7 @@ def main():
|
|||||||
# specified in 'opts', mount module will ignore 'boot'.
|
# specified in 'opts', mount module will ignore 'boot'.
|
||||||
opts = args['opts'].split(',')
|
opts = args['opts'].split(',')
|
||||||
if module.params['boot'] and 'noauto' in opts:
|
if module.params['boot'] and 'noauto' in opts:
|
||||||
module.warn("Ignore the 'boot' due to 'opts' contains 'noauto'.")
|
args['warnings'].append("Ignore the 'boot' due to 'opts' contains 'noauto'.")
|
||||||
elif not module.params['boot']:
|
elif not module.params['boot']:
|
||||||
args['boot'] = 'no'
|
args['boot'] = 'no'
|
||||||
opts.append('noauto')
|
opts.append('noauto')
|
||||||
|
|||||||
@@ -80,13 +80,6 @@ EXAMPLES = r'''
|
|||||||
sysctl_file: /tmp/test_sysctl.conf
|
sysctl_file: /tmp/test_sysctl.conf
|
||||||
reload: false
|
reload: false
|
||||||
|
|
||||||
# Enable resource limits management in FreeBSD
|
|
||||||
- ansible.posix.sysctl:
|
|
||||||
name: kern.racct.enable
|
|
||||||
value: '1'
|
|
||||||
sysctl_file: /boot/loader.conf
|
|
||||||
reload: false
|
|
||||||
|
|
||||||
# Set ip forwarding on in /proc and verify token value with the sysctl command
|
# Set ip forwarding on in /proc and verify token value with the sysctl command
|
||||||
- ansible.posix.sysctl:
|
- ansible.posix.sysctl:
|
||||||
name: net.ipv4.ip_forward
|
name: net.ipv4.ip_forward
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
---
|
|
||||||
# -------------------------------------------------------------
|
|
||||||
# check permissions
|
|
||||||
|
|
||||||
- name: Create a file that is not accessible
|
|
||||||
ansible.builtin.file:
|
|
||||||
state: touch
|
|
||||||
path: "{{ output_dir | expanduser }}/file_permissions"
|
|
||||||
owner: root
|
|
||||||
mode: '0000'
|
|
||||||
|
|
||||||
- name: Create unprivileged user
|
|
||||||
ansible.builtin.user:
|
|
||||||
name: nopriv
|
|
||||||
create_home: true
|
|
||||||
|
|
||||||
- name: Try to delete a key from an unreadable file
|
|
||||||
become: true
|
|
||||||
become_user: nopriv
|
|
||||||
ansible.posix.authorized_key:
|
|
||||||
user: root
|
|
||||||
key: "{{ dss_key_basic }}"
|
|
||||||
state: absent
|
|
||||||
path: "{{ output_dir | expanduser }}/file_permissions"
|
|
||||||
register: result
|
|
||||||
ignore_errors: true
|
|
||||||
|
|
||||||
- name: Assert that the key deletion has failed
|
|
||||||
ansible.builtin.assert:
|
|
||||||
that:
|
|
||||||
- result is failed
|
|
||||||
|
|
||||||
- name: Remove the file
|
|
||||||
ansible.builtin.file:
|
|
||||||
state: absent
|
|
||||||
path: "{{ output_dir | expanduser }}/file_permissions"
|
|
||||||
|
|
||||||
- name: Remove the user
|
|
||||||
ansible.builtin.user:
|
|
||||||
name: nopriv
|
|
||||||
state: absent
|
|
||||||
@@ -34,6 +34,3 @@
|
|||||||
|
|
||||||
- name: Test for specifying key as a path
|
- name: Test for specifying key as a path
|
||||||
ansible.builtin.import_tasks: check_path.yml
|
ansible.builtin.import_tasks: check_path.yml
|
||||||
|
|
||||||
- name: Test for permission denied files
|
|
||||||
ansible.builtin.import_tasks: check_permissions.yml
|
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
tests/utils/shippable/check_matrix.py replace-urlopen
|
tests/utils/shippable/check_matrix.py replace-urlopen
|
||||||
|
tests/utils/shippable/timing.py shebang
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
tests/utils/shippable/check_matrix.py replace-urlopen
|
tests/utils/shippable/check_matrix.py replace-urlopen
|
||||||
|
tests/utils/shippable/timing.py shebang
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
tests/utils/shippable/timing.py shebang
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
tests/utils/shippable/timing.py shebang
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
tests/utils/shippable/timing.py shebang
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
tests/utils/shippable/timing.py shebang
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
tests/utils/shippable/timing.py shebang
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
tests/utils/shippable/timing.py shebang
|
||||||
plugins/action/synchronize.py pylint:ansible-bad-import-from
|
plugins/action/synchronize.py pylint:ansible-bad-import-from
|
||||||
plugins/callback/cgroup_perf_recap.py pylint:ansible-bad-import-from
|
plugins/callback/cgroup_perf_recap.py pylint:ansible-bad-import-from
|
||||||
plugins/modules/mount.py pylint:ansible-bad-import-from
|
plugins/modules/mount.py pylint:ansible-bad-import-from
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
plugins/action/synchronize.py pylint:ansible-bad-import-from
|
|
||||||
plugins/callback/cgroup_perf_recap.py pylint:ansible-bad-import-from
|
|
||||||
plugins/modules/mount.py pylint:ansible-bad-import-from
|
|
||||||
plugins/modules/sysctl.py pylint:ansible-bad-import-from
|
|
||||||
plugins/shell/csh.py pylint:ansible-bad-import-from
|
|
||||||
plugins/shell/fish.py pylint:ansible-bad-import-from
|
|
||||||
tests/unit/mock/procenv.py pylint:ansible-bad-import-from
|
|
||||||
tests/unit/mock/yaml_helper.py pylint:ansible-bad-import-from
|
|
||||||
tests/unit/modules/conftest.py pylint:ansible-bad-import-from
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python3
|
||||||
from __future__ import (absolute_import, division, print_function)
|
from __future__ import (absolute_import, division, print_function)
|
||||||
__metaclass__ = type
|
__metaclass__ = type
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user