Skip to main content

No project description provided

Project description

Vault Keyring Client

This project provides an installable version of the original community script vault-keyring-client.py for Ansible, allowing you to manage vault passwords using your OS's native keyring application.

Description

The vault-keyring-client is a CLI tool to store and retrieve Ansible vault passwords in the keyring. This version is implemented using typer for a modern CLI interface, making it easy to use and extend.

Installation

To install the vault-keyring-client, you can use Poetry:

poetry add git+https://git@github.com/jakob1379/vault-keyring-client.git#main

Usage

$ vault-keyring-client [OPTIONS]

Options:

  • --vault-id TEXT: Name of the vault secret to get from keyring.
  • --username TEXT: The username whose keyring is queried.
  • --set: Set the password instead of getting it.
  • --install-completion: Install completion for the current shell.
  • --show-completion: Show completion for the current shell, to copy it or customize the installation.
  • --help: Show this message and exit.

Original Script

This project is based on the original vault-keyring-client.py script contributed by Matt Martz and Justin Mayer. The original script can be found in the Ansible Community's contrib-scripts repository:

Original vault-keyring-client.py script

Using with Ansible

The script is designed to work with Ansible, making your playbooks more efficient by eliminating the need to manually enter become_pass for each host. Follow these steps to set it up:

  1. Create an Entry: First, create an entry with vault-keyring-client --set --vault-id my_vault_id.

  2. Configure Ansible: To make Ansible automatically try the passwords stored in your keyring, add the following to your .envrc or manually source your .env file:

    export ANSIBLE_VAULT_IDENTITY_LIST="my_vault_id@$(poetry run which vault-keyring-client),my_other_vault_id@$(poetry run which vault-keyring-client)"
    
  3. Create a Secure Vault: Create a vault file outside of your repository to avoid accidental commits. Store it in a safe location, for example, ~/.become_passwords. Structure the key-value pairs as become_pass_<hostname>: "mytopsecret_host_password". Encrypt the file using:

    ansible-vault encrypt --encrypt-vault-id my_vault_id <path_to_vault>
    
  4. Update Playbooks: Add the following configuration to your playbooks to use the stored passwords:

    - name: Playbook that does not require manual sudo passwords
      hosts: amazing_host
      become: true
      vars:
        ansible_become_password: "{{ lookup('vars', 'become_pass_' + inventory_hostname) }}"
      vars_files:
        - ~/.become_passwords.yml
      roles:
        - users
    

    When you run the playbook, Ansible will try all keys in the VAULT_IDENTITY_LIST in order and use the correct one to unlock ~/.become_passwords, matching the password with the hostname.

License

This project is licensed under the GNU General Public License v3.0 or later. See the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vault_keyring_client-0.2.4.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

vault_keyring_client-0.2.4-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

Details for the file vault_keyring_client-0.2.4.tar.gz.

File metadata

  • Download URL: vault_keyring_client-0.2.4.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.11.9 Linux/6.8.0-35-generic

File hashes

Hashes for vault_keyring_client-0.2.4.tar.gz
Algorithm Hash digest
SHA256 5f4a8224f680d18b49c25d71f86e86d8fddaa063d534a02ee28a165bf72b0196
MD5 d9a40e96f47a041d7bcdd5f530ee8d5c
BLAKE2b-256 996fa55c562d8ff0f08e8003c6e6fc6ab2bc7f1f0cc726e908d9aa57e2efeeb8

See more details on using hashes here.

File details

Details for the file vault_keyring_client-0.2.4-py3-none-any.whl.

File metadata

File hashes

Hashes for vault_keyring_client-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 43aba0841e699872f6cc2e26cc51016702306851776c53231b237318969ddac8
MD5 b94bc31c24155deff36f11aaa4335905
BLAKE2b-256 d495d1b56d266c38d101b24ff8c2f73bba46b773629672089c08062c8c47f2e8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page