Compare commits

...

7 commits

Author SHA1 Message Date
alexander
73259a5b62
Merge 69c04cd5bd into 5321a9ecb5 2024-09-25 12:18:04 +09:00
softwarefactory-project-zuul[bot]
5321a9ecb5
Merge pull request #571 from saito-hideki/pr/bump_core_version
[CI] bump ansible-core version to 2.19 for devel branch

SUMMARY

bump devel test to ansible-core 2.19
add ansible-core 2.18 to the stable list (CI only covers sanity tests at the moment)

ISSUE TYPE

CI Pull Request

COMPONENT NAME
ansible.posix
ADDITIONAL INFORMATION
None
2024-09-25 01:24:12 +00:00
Hideki Saito
7194b6bb13
CI - bump ansible-core version
* bump devel test to ansible-core 2.19
* add ansible-core 2.18 to stable list but CI only covers sanity test at the moment.

Signed-off-by: Hideki Saito <saito@fgrep.org>
2024-09-25 09:37:42 +09:00
Александр Бакановский
69c04cd5bd
Update integration tests 2024-09-17 17:56:04 +03:00
Александр Бакановский
f7f346f823
Update CHANGELOG 2024-09-17 17:41:20 +03:00
Александр Бакановский
76e3baa72d
Update integration tests 2024-09-17 17:26:35 +03:00
Александр Бакановский
1ec0718e7b
Allow path for authorized_key 2024-09-17 17:26:17 +03:00
9 changed files with 113 additions and 3 deletions

View file

@ -57,6 +57,21 @@ 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: []
@ -113,6 +128,20 @@ 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: []
@ -176,6 +205,18 @@ 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: []
@ -234,8 +275,11 @@ 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 # - Remote_devel # Wait for test environment release
- Docker_devel # - Docker_devel # Wait for test environment release
jobs: jobs:
- template: templates/coverage.yml - template: templates/coverage.yml

View file

@ -74,11 +74,14 @@ 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.18 (devel) - ansible-core 2.19 (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. -->

View file

@ -0,0 +1,3 @@
---
minor_changes:
- authorized_keys - allow using absolute path to a file as a SSH key(s) source (https://github.com/ansible-collections/ansible.posix/pull/568)

View file

@ -0,0 +1,3 @@
---
trivial:
- Bump ansible-core version to 2.19 of devel branch and add 2.18 to CI.

View file

@ -24,6 +24,7 @@ options:
key: key:
description: description:
- The SSH public key(s), as a string or (since Ansible 1.9) url (https://github.com/username.keys). - The SSH public key(s), as a string or (since Ansible 1.9) url (https://github.com/username.keys).
- You can also use absolute path on a target host to a file with SSH key(s)
type: str type: str
required: true required: true
path: path:
@ -96,6 +97,12 @@ EXAMPLES = r'''
state: present state: present
key: https://github.com/charlie.keys key: https://github.com/charlie.keys
- name: Set authorized keys taken from path
ansible.posix.authorized_key:
user: charlie
state: present
key: /home/charlie/.ssh/id_rsa.pub
- name: Set authorized keys taken from url using lookup - name: Set authorized keys taken from url using lookup
ansible.posix.authorized_key: ansible.posix.authorized_key:
user: charlie user: charlie
@ -570,6 +577,18 @@ def enforce_state(module, params):
# resp.read gives bytes on python3, convert to native string type # resp.read gives bytes on python3, convert to native string type
key = to_native(key, errors='surrogate_or_strict') key = to_native(key, errors='surrogate_or_strict')
# if the key is an absolute path, check for existense and use it as a key source
if key.startswith("/"):
if not os.path.exists(key):
module.fail_json(msg="Path to a key file not found: %s" % key)
if not os.path.isfile(key):
module.fail_json(msg="Path to a key is a directory and must be a file: %s" % key)
try:
with open(key, 'r') as source_fh:
key = source_fh.read()
except OSError as e:
module.fail_json(msg="Failed to read key file %s : %s" % (key, to_native(e)))
# extract individual keys into an array, skipping blank lines and comments # extract individual keys into an array, skipping blank lines and comments
new_keys = [s for s in key.splitlines() if s and not s.startswith('#')] new_keys = [s for s in key.splitlines() if s and not s.startswith('#')]

View file

@ -35,3 +35,5 @@ multiple_keys_comments: |
ssh-rsa DATA_BASIC 1@testing ssh-rsa DATA_BASIC 1@testing
# I like adding comments yo-dude-this-is-not-a-key INVALID_DATA 2@testing # I like adding comments yo-dude-this-is-not-a-key INVALID_DATA 2@testing
ecdsa-sha2-nistp521 ECDSA_DATA 4@testing ecdsa-sha2-nistp521 ECDSA_DATA 4@testing
key_path: /tmp/id_rsa.pub

View file

@ -0,0 +1,32 @@
---
- name: Create key file for test
ansible.builtin.copy:
dest: "{{ key_path }}"
content: "{{ rsa_key_basic }}"
mode: "0600"
- name: Add key using path
ansible.posix.authorized_key:
user: root
key: "{{ key_path }}"
state: present
path: "{{ output_dir | expanduser }}/authorized_keys"
register: result
- name: Assert that the key was added
ansible.builtin.assert:
that:
- result.changed == true
- name: Add key using path again
ansible.posix.authorized_key:
user: root
key: "{{ key_path }}"
state: present
path: "{{ output_dir | expanduser }}/authorized_keys"
register: result
- name: Assert that no changes were applied
ansible.builtin.assert:
that:
- result.changed == false

View file

@ -31,3 +31,6 @@
- name: Test for the management of comments with key - name: Test for the management of comments with key
ansible.builtin.import_tasks: comments.yml ansible.builtin.import_tasks: comments.yml
- name: Test for specifying key as a path
ansible.builtin.import_tasks: setup_steps.yml

View file

@ -0,0 +1 @@
tests/utils/shippable/timing.py shebang