Skip to main content

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

  1. 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"
  1. Run the conversion:
env-to-vault convert --config config.yaml

Configuration

Vault Configuration

  • url: Vault server URL
  • token: Vault authentication token
  • secret_engine: Secret engine name (default: "secret")
  • path_prefix: Path prefix for secrets in Vault

Environment File Configuration

  • path: Path to the ENV file
  • encoding: 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

env_to_vault-0.1.0.tar.gz (39.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

env_to_vault-0.1.0-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file env_to_vault-0.1.0.tar.gz.

File metadata

  • Download URL: env_to_vault-0.1.0.tar.gz
  • Upload date:
  • Size: 39.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.8

File hashes

Hashes for env_to_vault-0.1.0.tar.gz
Algorithm Hash digest
SHA256 94c3eea57c18905a92b474172bf463861050ed20114280d8711b1edd063f7ed7
MD5 48bdae912ecbda0c2a68cd9a026b943f
BLAKE2b-256 3adf4226b3ec2c40ae195e06224a6c9de08ea5755549b72a30e93a4cf679290d

See more details on using hashes here.

File details

Details for the file env_to_vault-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for env_to_vault-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1e06f65aa740d62b6a4b0228b4ca83895a987fdcf2ca74736abdaa4f5dcd745c
MD5 6653b3f60e7f09329c96260ef87c2c54
BLAKE2b-256 19976ed43b7d21fefd97a9199855071cf2eda02486500e9bd739aa6340685ae6

See more details on using hashes here.

Supported by

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