CLI tool for hashicorp vault
Project description
# CLI tool for Hashicorp Vault
This tools allows simple interactions with the vault API, allowing
configuration to be done in a separate step using a YAML configuration file.
This is especially interesting if you interact with Hashicorp Vault from
automated deployment tools
## Installation
The tool is packaged but the package is not yet available on pypi.
`pip install vault-cli`
If you wish to use the hvac backend, install with
`pip install vault-cli[hvac]`
## Usage
```console
$ vault --help
Usage: vault [OPTIONS] COMMAND [ARGS]...
Interact with a Vault. See subcommands for details.
Options:
-U, --url TEXT URL of the vault instance
--verify / --no-verify Verify HTTPS certificate
-c, --certificate FILENAME The certificate to connect to vault
-t, --token TEXT The token to connect to Vault
-T, --token-file FILENAME File which contains the token to connect to
Vault
-u, --username TEXT The username used for userpass authentication
-w, --password-file FILENAME Can read from stdin if "-" is used as
parameter
-b, --base-path TEXT Base path for requests
--backend TEXT Name of the backend to use (requests, hvac)
-h, --help Show this message and exit.
Commands:
delete Deletes a single secret.
get Return a single secret value.
get-all Return multiple secrets.
list List all the secrets at the given path.
set Set a single secret to the given value(s).
```
## Authentication
There are three ways to authenticate against the vault:
- Username and password file: provide a username and a file to read the
password from. The file may be `-` for stdin.
- Certificate: provide the path to a certificate file. The file may also be
read from stdin via `-`.
- Token: Bypass authentication step if you already have a valid token.
## Examples
```console
# Connect to https://vault.mydomain:8200/project and list the secrets
$ vault --url=https://vault.mydomain:8200 --certificate=/etc/vault/certificate.key --base-path=project/ list
['mysecret']
# Using the configuration file, get the value for my_secret (yaml format)
$ vault get my_secret
--- qwerty
...
# Same with only the value of the secret in plain text
$ vault get my_secret --text
qwerty
# Add another secret
$ vault set my_other_secret supersecret
Done
# Add a secret object
$ vault set --yaml blob_secret "{code: supercode}"
Done
# Get all values from the vault in a single command (yaml format)
$ vault get-all
---
my_secret: qwerty
my_other_secret: supersecret
blob_secret:
code: supercode
test:
my_folder_secret: sesame
# Get a nested secret based on a path
$ vault get-all test/my_folder_secret
test:
my_folder_secret: sesame
# Get all values from a folder in a single command (yaml format)
$ vault get-all test my_secret
---
my_secret: qwerty
test:
my_folder_secret: sesame
# Delete a secret
$ vault delete my_other_secret
Done
```
## Configuration
All files at the following location are read (in increasing priority order),
parsed, merged and used:
1. `/etc/vault.yml`
2. `~/.vault.yml`
3. `./.vault.yml`
Any option passed as command line flag will be used over the corresponding
option in the documentation.
The expected format of the configuration is a mapping, with option names and
their corresponding values:
```yaml
---
username: my_username
password-file: ~/.vault-password
# or
token-file: ~/.vault-token
url: https://vault.mydomain:8200
verify: no
base-path: project/
...
```
Just note that the `--verify / --no-verify` flag become `verify: yes` or
`verify: no`
## State
The tool is currently in beta mode. It's missing docs, tests, CI, and such.
Be warned.
## License
Copyright 2018 PeopleDoc
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
This tools allows simple interactions with the vault API, allowing
configuration to be done in a separate step using a YAML configuration file.
This is especially interesting if you interact with Hashicorp Vault from
automated deployment tools
## Installation
The tool is packaged but the package is not yet available on pypi.
`pip install vault-cli`
If you wish to use the hvac backend, install with
`pip install vault-cli[hvac]`
## Usage
```console
$ vault --help
Usage: vault [OPTIONS] COMMAND [ARGS]...
Interact with a Vault. See subcommands for details.
Options:
-U, --url TEXT URL of the vault instance
--verify / --no-verify Verify HTTPS certificate
-c, --certificate FILENAME The certificate to connect to vault
-t, --token TEXT The token to connect to Vault
-T, --token-file FILENAME File which contains the token to connect to
Vault
-u, --username TEXT The username used for userpass authentication
-w, --password-file FILENAME Can read from stdin if "-" is used as
parameter
-b, --base-path TEXT Base path for requests
--backend TEXT Name of the backend to use (requests, hvac)
-h, --help Show this message and exit.
Commands:
delete Deletes a single secret.
get Return a single secret value.
get-all Return multiple secrets.
list List all the secrets at the given path.
set Set a single secret to the given value(s).
```
## Authentication
There are three ways to authenticate against the vault:
- Username and password file: provide a username and a file to read the
password from. The file may be `-` for stdin.
- Certificate: provide the path to a certificate file. The file may also be
read from stdin via `-`.
- Token: Bypass authentication step if you already have a valid token.
## Examples
```console
# Connect to https://vault.mydomain:8200/project and list the secrets
$ vault --url=https://vault.mydomain:8200 --certificate=/etc/vault/certificate.key --base-path=project/ list
['mysecret']
# Using the configuration file, get the value for my_secret (yaml format)
$ vault get my_secret
--- qwerty
...
# Same with only the value of the secret in plain text
$ vault get my_secret --text
qwerty
# Add another secret
$ vault set my_other_secret supersecret
Done
# Add a secret object
$ vault set --yaml blob_secret "{code: supercode}"
Done
# Get all values from the vault in a single command (yaml format)
$ vault get-all
---
my_secret: qwerty
my_other_secret: supersecret
blob_secret:
code: supercode
test:
my_folder_secret: sesame
# Get a nested secret based on a path
$ vault get-all test/my_folder_secret
test:
my_folder_secret: sesame
# Get all values from a folder in a single command (yaml format)
$ vault get-all test my_secret
---
my_secret: qwerty
test:
my_folder_secret: sesame
# Delete a secret
$ vault delete my_other_secret
Done
```
## Configuration
All files at the following location are read (in increasing priority order),
parsed, merged and used:
1. `/etc/vault.yml`
2. `~/.vault.yml`
3. `./.vault.yml`
Any option passed as command line flag will be used over the corresponding
option in the documentation.
The expected format of the configuration is a mapping, with option names and
their corresponding values:
```yaml
---
username: my_username
password-file: ~/.vault-password
# or
token-file: ~/.vault-token
url: https://vault.mydomain:8200
verify: no
base-path: project/
...
```
Just note that the `--verify / --no-verify` flag become `verify: yes` or
`verify: no`
## State
The tool is currently in beta mode. It's missing docs, tests, CI, and such.
Be warned.
## License
Copyright 2018 PeopleDoc
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
vault-cli-0.2.1.tar.gz
(7.0 kB
view details)
Built Distribution
File details
Details for the file vault-cli-0.2.1.tar.gz
.
File metadata
- Download URL: vault-cli-0.2.1.tar.gz
- Upload date:
- Size: 7.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7215e5fd0b07c7a0489c22ede3ac4c7eae42b2ea1e55e5e27b54ef3c9e99bdda |
|
MD5 | 034b79fa644eb2fc4a0e89ef61f7ce70 |
|
BLAKE2b-256 | 634bdbe58355064cc82a5d4ef13f40c240cc7817a36def6845a218140032141b |
File details
Details for the file vault_cli-0.2.1-py2.py3-none-any.whl
.
File metadata
- Download URL: vault_cli-0.2.1-py2.py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 080f9f301de0d7c969d5816393d7a6b3b268db1f94656585c1b36d3bd9330e28 |
|
MD5 | 2705422e581fe90539df9e62fc6d7564 |
|
BLAKE2b-256 | e3d86d21598ea7e78b8cf4a20e6990aa3e9073d2c3a2d61c1ef0e44a4a85f9d7 |