envsync
is a developer tool designed to synchronize environment variables across different environments and cloud providers. It provides a flexible configuration system and supports adapters for various platforms, including AWS, Google Cloud Platform (GCP) (soon), and Azure (soon), with the ability to extend to other providers.
- Synchronize environment variables based on a schema.
- Support for multiple cloud providers via adapters (e.g., AWS).
- Configurable via YAML files or environment variables.
- Validate configurations before synchronization.
- Extensible architecture for adding new adapters.
- Go 1.21 or higher
- Git
-
Clone the repository:
git clone https://github.com/tommyalmeida/envsync.git cd envsync
-
Build the binary:
make build
-
Move the binary to your PATH (optional):
sudo mv bin/envsync /usr/local/bin/
Create a envsync.yaml file in your project root or specify a custom config file using the -c flag. Example envsync.yaml:
schema:
variables:
PORT:
required: true
type: number
default: "3000"
description: "Server port"
rules:
require_all: false
allow_extra: true
ignore_patterns:
- "^TEMP_.*"
- "^DEBUG_.*"
adapter:
name: "aws"
config:
region: "us-west-2"
envsync
- AWS: Syncs environment variables to AWS Systems Manager Parameter Store.
make build
make test
We welcome contributions! To get started:
- Fork the repository.
- Create a feature branch:
git checkout -b feature/your-feature
- Commit your changes:
git commit -m "Describe your changes"
- Push to your branch:
git push origin feature/your-feature
- Open a Pull Request on GitHub.
Please ensure your code follows the project's style and includes relevant tests and documentation.
Inspired by the need for seamless environment management across cloud providers and my current pain in the ass.