A tool to convert environment variables from ENV files to HashiCorp Vault Secret Engine format
Project description
Env-to-Vault
A tool to convert environment variables from ENV files to HashiCorp Vault Secret Engine format, with automatic key case conversion (uppercase to lowercase) and robust configuration management using Pydantic.
Features
- 🔄 Convert ENV files to Vault Secret Engine format
- 🔤 Automatic uppercase to lowercase key conversion
- ⚙️ Robust configuration management with Pydantic
- 🔐 Secure Vault integration with multiple authentication methods
- 🛠️ Command-line interface with validation and dry-run modes
Installation
Prerequisites
- Python 3.8+
- HashiCorp Vault server/cloud
- uv (recommended) or pip
Using uv (Recommended)
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone the repository
git clone <repository-url>
cd env-to-vault
# Install dependencies
uv sync
# Install the package in development mode
uv pip install -e .
Using pip
pip install env-to-vault
Quick Start
- Create a configuration file (
config.yaml):
vault:
url: "http://localhost:8200"
token: "your-vault-token"
secret_engine: "secret"
path_prefix: "env"
env_file:
path: ".env"
encoding: "utf-8"
- Run the conversion:
env-to-vault convert --config config.yaml
Configuration
Vault Configuration
url: Vault server URLtoken: Vault authentication tokensecret_engine: Secret engine name (default: "secret")path_prefix: Path prefix for secrets in Vault
Environment File Configuration
path: Path to the ENV fileencoding: File encoding (default: "utf-8")
Usage Examples
Basic Conversion
# Convert .env file to Vault
env-to-vault convert --env-file .env --vault-url http://localhost:8200 --vault-token your-token
Using Configuration File
# Use configuration file
env-to-vault convert --config config.yaml
Validation Mode
# Validate configuration without making changes
env-to-vault validate --config config.yaml
Verbose Output
# Show detailed output
env-to-vault convert --config config.yaml --verbose
Development
Setup Development Environment
# Install development dependencies
uv sync --group dev
# Run tests
uv run pytest
# Run linting
uv run black src tests
uv run flake8 src tests
# Run type checking
uv run mypy src
Project Structure
env-to-vault/
├── src/
│ └── env_to_vault/
│ ├── __init__.py
│ ├── cli.py
│ ├── config.py
│ ├── parser.py
│ └── vault.py
├── tests/
├── examples/
├── pyproject.toml
└── README.md
License
MIT License - see 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file env_to_vault-0.1.2.tar.gz.
File metadata
- Download URL: env_to_vault-0.1.2.tar.gz
- Upload date:
- Size: 39.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
afb16a298760d59becc74f41676ef72414bdfa7b362a301619d6809ef87d1ce2
|
|
| MD5 |
3b608f9f43f22fdcc3a7a841d059cad6
|
|
| BLAKE2b-256 |
e83470c85904e67afbef26bc2cb57fccf509c0682efe37ebf5f14743cbd3cf6c
|
File details
Details for the file env_to_vault-0.1.2-py3-none-any.whl.
File metadata
- Download URL: env_to_vault-0.1.2-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3950653bc19aeaeeadc9dc821d133271def7b2a38aa56cf557c6f453cf8d8945
|
|
| MD5 |
1b31186d14020101cb0047e357472d23
|
|
| BLAKE2b-256 |
ef3ac8d3d2caff09591f28ca70989f4486d619e228edd0214cdc92c419d2cdce
|