https://github.com/zheaoli/env-to-vault
https://github.com/zheaoli/env-to-vault
Last synced: 1 day ago
JSON representation
- Host: GitHub
- URL: https://github.com/zheaoli/env-to-vault
- Owner: Zheaoli
- License: mit
- Created: 2025-08-13T13:56:55.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2025-08-13T16:16:50.000Z (about 2 months ago)
- Last Synced: 2025-08-13T18:33:40.433Z (about 2 months ago)
- Language: Python
- Size: 49.8 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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)
```bash
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh# Clone the repository
git clone
cd env-to-vault# Install dependencies
uv sync# Install the package in development mode
uv pip install -e .
```### Using pip
```bash
pip install env-to-vault
```## Quick Start
1. **Create a configuration file** (`config.yaml`):
```yaml
vault:
url: "http://localhost:8200"
token: "your-vault-token"
secret_engine: "secret"
path_prefix: "env"env_file:
path: ".env"
encoding: "utf-8"
```2. **Run the conversion**:
```bash
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
```bash
# Convert .env file to Vault
env-to-vault convert --env-file .env --vault-url http://localhost:8200 --vault-token your-token
```### Using Configuration File
```bash
# Use configuration file
env-to-vault convert --config config.yaml
```### Validation Mode
```bash
# Validate configuration without making changes
env-to-vault validate --config config.yaml
```### Verbose Output
```bash
# Show detailed output
env-to-vault convert --config config.yaml --verbose
```## Development
### Setup Development Environment
```bash
# 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](LICENSE) file for details.