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.4.tar.gz (40.1 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.4-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for env_to_vault-0.1.4.tar.gz
Algorithm Hash digest
SHA256 470e21d34b0e810b147778bab7285cf4e33e14c92e4d096c3b8123951aa0e18b
MD5 2a212656b39bc8c2f02a64ad0e9d8956
BLAKE2b-256 a08e09e6a993ca7870fb7351024587ba5e9c542eb401f5595c846943857a6834

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for env_to_vault-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f79fe5269ac0c2ed648de67bfe6b2386bbeaa285a7cf34236cf0081cf42feed5
MD5 a28fc4b9a39d197011f95407efdfab05
BLAKE2b-256 90274fc0b8a6b02b89719cc29b20e471d3f0cdc1cfdbfb9238295c4f3a342ec6

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