Skip to content

Release KSM Ansible v1.4.0#952

Open
stas-schaller wants to merge 9 commits intomasterfrom
release/integration/ansible/v1.4.0
Open

Release KSM Ansible v1.4.0#952
stas-schaller wants to merge 9 commits intomasterfrom
release/integration/ansible/v1.4.0

Conversation

@stas-schaller
Copy link
Contributor

@stas-schaller stas-schaller commented Feb 26, 2026

Summary

Release branch for v1.4.0 — bug fixes for keeper_create on empty shared folders, missing system packages in the Tower Execution Environment Docker image, and Python 3.9 minimum with updated SDK dependencies.

Changes

Bug Fixes

  • Empty shared folder create (KSM-816): keeper_create failed when the target shared folder contained no records. The plugin now uses the get_folders endpoint to resolve the folder encryption key, which returns all folders regardless of record count. Previously get_secrets was used, which only returns folder keys bundled alongside records.
  • Tower EE missing system packages (KSM-827): keeper-secrets-manager-tower-ee Docker image was missing openssh-clients, sshpass, rsync, and git — packages present in the previous ansible-runner base that are absent from redhat/ubi9. This caused AAP to fail with [dumb-init] ssh agent: No such file or directory at container startup. Added all four packages to additional_build_packages in execution-environment.yml. Added regression test to prevent recurrence.

Maintenance

  • (KSM-811) Raised minimum Python version from 3.7 to 3.9 to align with keeper-secrets-manager-core >= 17.2.0
  • (KSM-811) Bumped keeper-secrets-manager-core to >=17.2.0 and keeper-secrets-manager-helper to >=1.1.0
  • (KSM-811) Dropped Python 3.7/3.8 classifiers, added 3.12 and 3.13
  • Clarified shared_folder_uid docs in keeper_create to note it must be a top-level shared folder UID, not a subfolder UID
  • Synced galaxy README (had stalled at v1.2.6, missing v1.3.0 entries)

Breaking Changes

None.

Related Issues

Switch create_record() from create_secret() to create_secret_with_options().
create_secret() uses get_secrets(full_response=True) to look up folder
encryption keys, which only returns folders bundled with records. Empty
shared folders are invisible to it, so the key is never found and creation
fails. create_secret_with_options() calls the dedicated get_folders endpoint
which returns all accessible folders regardless of record count.

Adds regression test (keeper_create_empty_folder_test.py) that confirms
create_secret() raises when the folder has no records, and updates the
existing keeper_create_test.py mock patch target to match the new code path.
Add 1.4.0 section to README and galaxy README covering KSM-816. Sync
galaxy README which had stalled at 1.2.6 (missing 1.3.0 entries).
Clarify shared_folder_uid in keeper_create action and module docs to
note it must be a top-level shared folder UID, not a subfolder UID.
Update python_requires from >=3.7 to >=3.9 to align with
keeper-secrets-manager-core >= 17.2.0. Bump core to >=17.2.0 and
helper to >=1.1.0 in setup.py and requirements.txt. Drop Python 3.7
and 3.8 classifiers, add 3.12 and 3.13.
The redhat/ubi9 base image (introduced Oct 2025) does not include packages
that the previous ansible-runner base provided. This caused AAP to fail with
[dumb-init] ssh agent: No such file or directory on container startup.

Added to additional_build_packages in execution-environment.yml:
- openssh-clients: provides ssh-agent required by AAP at container startup
- sshpass: required for password-based SSH (ansible_ssh_pass)
- rsync: required by ansible.builtin.synchronize module
- git: required by ansible.builtin.git module

Added regression test (keeper_tower_ee_test.py) to verify all required
packages are declared in the EE spec on every CI run.
The redhat/ubi9 base image (introduced Oct 2025) does not include packages
that the previous ansible-runner base provided. This caused AAP to fail with
[dumb-init] ssh agent: No such file or directory on container startup.

Added to additional_build_packages in execution-environment.yml:
- openssh-clients: provides ssh-agent required by AAP at container startup
- sshpass: required for password-based SSH (ansible_ssh_pass)
- rsync: required by ansible.builtin.synchronize module
- git: required by ansible.builtin.git module

Added regression test (keeper_tower_ee_test.py) to verify all required
packages are declared in the EE spec on every CI run.
@stas-schaller stas-schaller changed the title feat(ansible): release Keeper Secrets Manager Ansible v1.4.0 Release KSM Ansible v1.4.0 Mar 2, 2026
Python 3.9+ includes importlib.metadata in the standard library, making
the importlib_metadata backport unnecessary. Also fixes stale dependency
versions in tower EE requirements.txt.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

keeper_create

1 participant