envilder 0.7.1 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +259 -259
- package/ROADMAP.md +40 -40
- package/docs/CHANGELOG.md +345 -345
- package/docs/SECURITY.md +167 -167
- package/lib/apps/cli/Index.js +0 -0
- package/lib/envilder/infrastructure/variableStore/FileVariableStore.js +1 -1
- package/lib/envilder/infrastructure/variableStore/FileVariableStore.js.map +1 -1
- package/package.json +36 -33
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 Marçal Albert Castellví <mac.albert@gmail.com>
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Marçal Albert Castellví <mac.albert@gmail.com>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,259 +1,259 @@
|
|
|
1
|
-
# 🗝️ Envilder ☁️
|
|
2
|
-
|
|
3
|
-
<p align="center">
|
|
4
|
-
<img src="https://github.com/user-attachments/assets/96bf1efa-7d21-440a-a414-3a20e7f9a1f1" alt="Envilder">
|
|
5
|
-
</p>
|
|
6
|
-
|
|
7
|
-
<p align="center">
|
|
8
|
-
<b>Automate .env and secret management with Envilder</b><br>
|
|
9
|
-
<span>Streamline your environment setup with AWS Parameter Store</span>
|
|
10
|
-
</p>
|
|
11
|
-
|
|
12
|
-
<p align="center">
|
|
13
|
-
<a href="https://www.npmjs.com/package/envilder">
|
|
14
|
-
<img src="https://img.shields.io/npm/v/envilder.svg" alt="npm version">
|
|
15
|
-
</a>
|
|
16
|
-
<a href="https://img.shields.io/npm/dm/envilder.svg">
|
|
17
|
-
<img src="https://img.shields.io/npm/dm/envilder.svg" alt="npm downloads">
|
|
18
|
-
</a>
|
|
19
|
-
<a href="https://github.com/macalbert/envilder/actions/workflows/tests.yml">
|
|
20
|
-
<img src="https://github.com/macalbert/envilder/actions/workflows/tests.yml/badge.svg" alt="CI Tests">
|
|
21
|
-
</a>
|
|
22
|
-
<a href="https://macalbert.github.io/envilder/">
|
|
23
|
-
<img src="https://img.shields.io/badge/coverage-report-green.svg" alt="Coverage Report">
|
|
24
|
-
</a>
|
|
25
|
-
<a href="https://snyk.io/test/github/macalbert/envilder">
|
|
26
|
-
<img src="https://snyk.io/test/github/macalbert/envilder/badge.svg" alt="Known Vulnerabilities">
|
|
27
|
-
</a>
|
|
28
|
-
<a href="./LICENSE">
|
|
29
|
-
<img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT License">
|
|
30
|
-
</a>
|
|
31
|
-
</p>
|
|
32
|
-
|
|
33
|
-
## Why centralize environment variables?
|
|
34
|
-
|
|
35
|
-
Envilder is a CLI tool for .env automation, AWS SSM secrets management, and secure environment variable sync.
|
|
36
|
-
Generating and maintaining consistent .env files is a real pain point for any development team. From outdated
|
|
37
|
-
secrets to insecure practices, the risks are tangible. Envilder eliminates these pitfalls by centralizing and
|
|
38
|
-
automating secret management across real-world environments (dev, test, production) in a simple, secure, and
|
|
39
|
-
efficient way. Use Envilder to automate .env files, sync secrets with AWS Parameter Store, and streamline
|
|
40
|
-
onboarding and CI/CD workflows.
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## ❗ What Envilder solves
|
|
45
|
-
|
|
46
|
-
- Desync between environments (dev, prod)
|
|
47
|
-
- Secrets not properly propagated across team members
|
|
48
|
-
- CI/CD pipeline failures due to outdated or missing .env files
|
|
49
|
-
- Slow and manual onboarding processes
|
|
50
|
-
- Security risks from sharing secrets via Slack, email, or other channels
|
|
51
|
-
- Insecure .env practices and manual secret sharing
|
|
52
|
-
|
|
53
|
-
## ✅ How Envilder makes life easier
|
|
54
|
-
|
|
55
|
-
- 🛡️ Centralizes secrets in AWS Parameter Store
|
|
56
|
-
- ⚙️ Generates .env files automatically for every environment
|
|
57
|
-
- 🔄 Applies changes idempotently and instantly
|
|
58
|
-
- 🔐 Improves security: no need to share secrets manually; everything is managed via AWS SSM
|
|
59
|
-
- 👥 Simplifies onboarding and internal rotations
|
|
60
|
-
- 🚀 Enables cloud-native, infrastructure-as-code secret management
|
|
61
|
-
- 🤖 Perfect for DevOps, CI/CD, and team sync
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## 📚 Table of Contents
|
|
66
|
-
|
|
67
|
-
- [🗝️ Envilder ☁️](#️-envilder-️)
|
|
68
|
-
- [Why centralize environment variables?](#why-centralize-environment-variables)
|
|
69
|
-
- [❗ What Envilder solves](#-what-envilder-solves)
|
|
70
|
-
- [✅ How Envilder makes life easier](#-how-envilder-makes-life-easier)
|
|
71
|
-
- [📚 Table of Contents](#-table-of-contents)
|
|
72
|
-
- [⚙️ Features](#️-features)
|
|
73
|
-
- [💾 Installation](#-installation)
|
|
74
|
-
- [🚀 Quick Start](#-quick-start)
|
|
75
|
-
- [🎥 Video Demonstration](#-video-demonstration)
|
|
76
|
-
- [🏁 Get Started (3 steps)](#-get-started-3-steps)
|
|
77
|
-
- [📚 Quick Links](#-quick-links)
|
|
78
|
-
- [🛠️ How it works](#️-how-it-works)
|
|
79
|
-
- [Frequently Asked Questions (FAQ)](#frequently-asked-questions-faq)
|
|
80
|
-
- [🏁 Roadmap](#-roadmap)
|
|
81
|
-
- [🤝 Contributing](#-contributing)
|
|
82
|
-
- [📜 License](#-license)
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## ⚙️ Features
|
|
87
|
-
|
|
88
|
-
- 🔒 **Strict access control** — IAM policies define access to secrets across stages (dev, staging, prod)
|
|
89
|
-
- 📊 **Auditable** — All reads/writes are logged in AWS CloudTrail
|
|
90
|
-
- 🧩 **Single source of truth** — No more Notion, emails or copy/paste of envs
|
|
91
|
-
- 🔁 **Idempotent sync** — Only what’s in your map gets updated. Nothing else is touched
|
|
92
|
-
- 🧱 **Zero infrastructure** — Fully based on native AWS SSM. No Lambdas, no servers, no fuss
|
|
93
|
-
|
|
94
|
-
### 🧱 Feature Status
|
|
95
|
-
|
|
96
|
-
- 🤖 **GitHub Action** — [Integrate directly in CI/CD workflows](./github-action/README.md)
|
|
97
|
-
- 📤 **Push & Pull** — Bidirectional sync between local `.env` and AWS SSM
|
|
98
|
-
- 🎯 **AWS Profile support** — Use `--profile` flag for multi-account setups
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
## 💾 Installation
|
|
103
|
-
|
|
104
|
-
🛠 Requirements:
|
|
105
|
-
|
|
106
|
-
- Node.js **v20+** (cloud-native compatible)
|
|
107
|
-
- AWS CLI installed and configured
|
|
108
|
-
- IAM user/role with `ssm:GetParameter`, `ssm:PutParameter`
|
|
109
|
-
|
|
110
|
-
```bash
|
|
111
|
-
pnpm add -g envilder
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
> 💡 **New to AWS SSM?** AWS Systems Manager Parameter Store provides secure storage for configuration data and secrets:
|
|
115
|
-
>
|
|
116
|
-
> - [AWS SSM Parameter Store Overview](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)
|
|
117
|
-
> - [Setting up AWS CLI credentials](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
|
|
118
|
-
> - [IAM permissions for SSM](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)
|
|
119
|
-
|
|
120
|
-
### 🤖 GitHub Action
|
|
121
|
-
|
|
122
|
-
Use Envilder directly in your CI/CD workflows with our official GitHub Action:
|
|
123
|
-
|
|
124
|
-
```yaml
|
|
125
|
-
- name: Configure AWS Credentials
|
|
126
|
-
uses: aws-actions/configure-aws-credentials@v5
|
|
127
|
-
with:
|
|
128
|
-
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
|
|
129
|
-
aws-region: us-east-1
|
|
130
|
-
|
|
131
|
-
- name: Pull secrets from AWS SSM
|
|
132
|
-
uses: macalbert/envilder/github-action@
|
|
133
|
-
with:
|
|
134
|
-
map-file: param-map.json
|
|
135
|
-
env-file: .env
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
📖 **[View full GitHub Action documentation](./github-action/README.md)**
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
## 🚀 Quick Start
|
|
143
|
-
|
|
144
|
-
### 🎥 Video Demonstration
|
|
145
|
-
|
|
146
|
-
Watch how easy it is to automate your .env management in less than 1 minute:
|
|
147
|
-
|
|
148
|
-

|
|
149
|
-
|
|
150
|
-
### 🏁 Get Started (3 steps)
|
|
151
|
-
|
|
152
|
-
After configuring the AWS CLI and ensuring you have the necessary permissions to create SSM parameters,
|
|
153
|
-
you can begin pushing your first environment variables.
|
|
154
|
-
|
|
155
|
-
1. **Create a mapping file:**
|
|
156
|
-
|
|
157
|
-
```json
|
|
158
|
-
{
|
|
159
|
-
"DB_PASSWORD": "/my-app/db/password"
|
|
160
|
-
}
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
2. **Push a secret to AWS SSM:**
|
|
164
|
-
|
|
165
|
-
```bash
|
|
166
|
-
envilder --push --key=DB_PASSWORD --value=12345 --ssm-path=/my-app/db/password
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
Once your secrets are stored in AWS, you can easily generate or synchronize your local .env files:
|
|
170
|
-
|
|
171
|
-
1. **Generate your .env file from AWS SSM:**
|
|
172
|
-
|
|
173
|
-
```bash
|
|
174
|
-
envilder --map=param-map.json --envfile=.env
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
Your secrets are now managed and versioned from AWS SSM. Add `.env` to your `.gitignore` for security.
|
|
178
|
-
Envilder is designed for automation, onboarding, and secure cloud-native workflows.
|
|
179
|
-
|
|
180
|
-
### 📚 Quick Links
|
|
181
|
-
|
|
182
|
-
- [Requirements & Installation](docs/requirements-installation.md)
|
|
183
|
-
- [Push Command Guide](docs/push-command.md)
|
|
184
|
-
- [Pull Command Guide](docs/pull-command.md)
|
|
185
|
-
|
|
186
|
-
---
|
|
187
|
-
|
|
188
|
-
## 🛠️ How it works
|
|
189
|
-
|
|
190
|
-
```mermaid
|
|
191
|
-
graph LR
|
|
192
|
-
A["Mapping File<br/>(param-map.json)"] --> B[Envilder]:::core
|
|
193
|
-
C["Environment File<br/> '.env' or --key"] --> B
|
|
194
|
-
D["AWS Credentials"]:::aws --> B
|
|
195
|
-
E["AWS SSM"]:::aws --> B
|
|
196
|
-
B --> F["Pull/Push Secrets 💾"]
|
|
197
|
-
|
|
198
|
-
classDef aws fill:#ffcc66,color:#000000,stroke:#333,stroke-width:1.5px;
|
|
199
|
-
classDef core fill:#1f3b57,color:#fff,stroke:#ccc,stroke-width:2px;
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
1. Create a new `.env` file like `'ENV_VAR=12345'`
|
|
203
|
-
2. Define mappings in a JSON file : `{"ENV_VAR": "ssm/path"}`
|
|
204
|
-
3. Run Envilder: `--push` to upload, or `--map` + `--envfile` to generate
|
|
205
|
-
4. Envilder syncs secrets securely with AWS SSM Parameter Store using your AWS credentials
|
|
206
|
-
5. Result: your secrets are always up-to-date, secure, and ready for any environment
|
|
207
|
-
|
|
208
|
-
---
|
|
209
|
-
|
|
210
|
-
## Frequently Asked Questions (FAQ)
|
|
211
|
-
|
|
212
|
-
**Q: What is Envilder?**
|
|
213
|
-
A: Envilder is a CLI tool for automating .env and secret management using AWS SSM Parameter Store.
|
|
214
|
-
|
|
215
|
-
**Q: How does Envilder improve security?**
|
|
216
|
-
A: Secrets are never stored in code or shared via chat/email. All secrets are managed and synced securely via AWS SSM.
|
|
217
|
-
|
|
218
|
-
**Q: Can I use Envilder in CI/CD pipelines?**
|
|
219
|
-
A: Yes! Envilder is designed for automation and works seamlessly in CI/CD workflows.
|
|
220
|
-
|
|
221
|
-
**Q: Does Envilder support multiple AWS profiles?**
|
|
222
|
-
A: Yes, you can use the `--profile` flag to select different AWS credentials.
|
|
223
|
-
|
|
224
|
-
**Q: What environments does Envilder support?**
|
|
225
|
-
A: Any environment supported by AWS SSM—dev, test, staging, production, etc.
|
|
226
|
-
|
|
227
|
-
**Q: Is Envilder open source?**
|
|
228
|
-
A: Yes, licensed under MIT.
|
|
229
|
-
|
|
230
|
-
---
|
|
231
|
-
|
|
232
|
-
## 🏁 Roadmap
|
|
233
|
-
|
|
234
|
-
We're continuously improving Envilder based on community feedback. Upcoming features include:
|
|
235
|
-
|
|
236
|
-
- 🔌 **Multi-backend support** (Azure Key Vault, HashiCorp Vault, etc.)
|
|
237
|
-
- 🔍 **Check/sync mode** for drift detection
|
|
238
|
-
- 🧠 **Auto-discovery** for bulk parameter fetching
|
|
239
|
-
|
|
240
|
-
👉 **[View full roadmap with priorities](./ROADMAP.md)**
|
|
241
|
-
|
|
242
|
-
---
|
|
243
|
-
|
|
244
|
-
## 🤝 Contributing
|
|
245
|
-
|
|
246
|
-
All help is welcome — PRs, issues, ideas!
|
|
247
|
-
|
|
248
|
-
- 🔧 Use our [Pull Request Template](.github/pull_request_template.md)
|
|
249
|
-
- 🧪 Add tests where possible
|
|
250
|
-
- 💬 Feedback and discussion welcome
|
|
251
|
-
- 🏗️ Check our [Architecture Documentation](./docs/architecture/README.md)
|
|
252
|
-
- 🔒 Review our [Security Policy](./docs/SECURITY.md)
|
|
253
|
-
|
|
254
|
-
---
|
|
255
|
-
|
|
256
|
-
## 📜 License
|
|
257
|
-
|
|
258
|
-
MIT © [Marçal Albert](https://github.com/macalbert)
|
|
259
|
-
See [LICENSE](./LICENSE) | [CHANGELOG](./docs/CHANGELOG.md) | [Security Policy](./docs/SECURITY.md)
|
|
1
|
+
# 🗝️ Envilder ☁️
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="https://github.com/user-attachments/assets/96bf1efa-7d21-440a-a414-3a20e7f9a1f1" alt="Envilder">
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<b>Automate .env and secret management with Envilder</b><br>
|
|
9
|
+
<span>Streamline your environment setup with AWS Parameter Store</span>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="https://www.npmjs.com/package/envilder">
|
|
14
|
+
<img src="https://img.shields.io/npm/v/envilder.svg" alt="npm version">
|
|
15
|
+
</a>
|
|
16
|
+
<a href="https://img.shields.io/npm/dm/envilder.svg">
|
|
17
|
+
<img src="https://img.shields.io/npm/dm/envilder.svg" alt="npm downloads">
|
|
18
|
+
</a>
|
|
19
|
+
<a href="https://github.com/macalbert/envilder/actions/workflows/tests.yml">
|
|
20
|
+
<img src="https://github.com/macalbert/envilder/actions/workflows/tests.yml/badge.svg" alt="CI Tests">
|
|
21
|
+
</a>
|
|
22
|
+
<a href="https://macalbert.github.io/envilder/">
|
|
23
|
+
<img src="https://img.shields.io/badge/coverage-report-green.svg" alt="Coverage Report">
|
|
24
|
+
</a>
|
|
25
|
+
<a href="https://snyk.io/test/github/macalbert/envilder">
|
|
26
|
+
<img src="https://snyk.io/test/github/macalbert/envilder/badge.svg" alt="Known Vulnerabilities">
|
|
27
|
+
</a>
|
|
28
|
+
<a href="./LICENSE">
|
|
29
|
+
<img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT License">
|
|
30
|
+
</a>
|
|
31
|
+
</p>
|
|
32
|
+
|
|
33
|
+
## Why centralize environment variables?
|
|
34
|
+
|
|
35
|
+
Envilder is a CLI tool for .env automation, AWS SSM secrets management, and secure environment variable sync.
|
|
36
|
+
Generating and maintaining consistent .env files is a real pain point for any development team. From outdated
|
|
37
|
+
secrets to insecure practices, the risks are tangible. Envilder eliminates these pitfalls by centralizing and
|
|
38
|
+
automating secret management across real-world environments (dev, test, production) in a simple, secure, and
|
|
39
|
+
efficient way. Use Envilder to automate .env files, sync secrets with AWS Parameter Store, and streamline
|
|
40
|
+
onboarding and CI/CD workflows.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## ❗ What Envilder solves
|
|
45
|
+
|
|
46
|
+
- Desync between environments (dev, prod)
|
|
47
|
+
- Secrets not properly propagated across team members
|
|
48
|
+
- CI/CD pipeline failures due to outdated or missing .env files
|
|
49
|
+
- Slow and manual onboarding processes
|
|
50
|
+
- Security risks from sharing secrets via Slack, email, or other channels
|
|
51
|
+
- Insecure .env practices and manual secret sharing
|
|
52
|
+
|
|
53
|
+
## ✅ How Envilder makes life easier
|
|
54
|
+
|
|
55
|
+
- 🛡️ Centralizes secrets in AWS Parameter Store
|
|
56
|
+
- ⚙️ Generates .env files automatically for every environment
|
|
57
|
+
- 🔄 Applies changes idempotently and instantly
|
|
58
|
+
- 🔐 Improves security: no need to share secrets manually; everything is managed via AWS SSM
|
|
59
|
+
- 👥 Simplifies onboarding and internal rotations
|
|
60
|
+
- 🚀 Enables cloud-native, infrastructure-as-code secret management
|
|
61
|
+
- 🤖 Perfect for DevOps, CI/CD, and team sync
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 📚 Table of Contents
|
|
66
|
+
|
|
67
|
+
- [🗝️ Envilder ☁️](#️-envilder-️)
|
|
68
|
+
- [Why centralize environment variables?](#why-centralize-environment-variables)
|
|
69
|
+
- [❗ What Envilder solves](#-what-envilder-solves)
|
|
70
|
+
- [✅ How Envilder makes life easier](#-how-envilder-makes-life-easier)
|
|
71
|
+
- [📚 Table of Contents](#-table-of-contents)
|
|
72
|
+
- [⚙️ Features](#️-features)
|
|
73
|
+
- [💾 Installation](#-installation)
|
|
74
|
+
- [🚀 Quick Start](#-quick-start)
|
|
75
|
+
- [🎥 Video Demonstration](#-video-demonstration)
|
|
76
|
+
- [🏁 Get Started (3 steps)](#-get-started-3-steps)
|
|
77
|
+
- [📚 Quick Links](#-quick-links)
|
|
78
|
+
- [🛠️ How it works](#️-how-it-works)
|
|
79
|
+
- [Frequently Asked Questions (FAQ)](#frequently-asked-questions-faq)
|
|
80
|
+
- [🏁 Roadmap](#-roadmap)
|
|
81
|
+
- [🤝 Contributing](#-contributing)
|
|
82
|
+
- [📜 License](#-license)
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## ⚙️ Features
|
|
87
|
+
|
|
88
|
+
- 🔒 **Strict access control** — IAM policies define access to secrets across stages (dev, staging, prod)
|
|
89
|
+
- 📊 **Auditable** — All reads/writes are logged in AWS CloudTrail
|
|
90
|
+
- 🧩 **Single source of truth** — No more Notion, emails or copy/paste of envs
|
|
91
|
+
- 🔁 **Idempotent sync** — Only what’s in your map gets updated. Nothing else is touched
|
|
92
|
+
- 🧱 **Zero infrastructure** — Fully based on native AWS SSM. No Lambdas, no servers, no fuss
|
|
93
|
+
|
|
94
|
+
### 🧱 Feature Status
|
|
95
|
+
|
|
96
|
+
- 🤖 **GitHub Action** — [Integrate directly in CI/CD workflows](./github-action/README.md)
|
|
97
|
+
- 📤 **Push & Pull** — Bidirectional sync between local `.env` and AWS SSM
|
|
98
|
+
- 🎯 **AWS Profile support** — Use `--profile` flag for multi-account setups
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 💾 Installation
|
|
103
|
+
|
|
104
|
+
🛠 Requirements:
|
|
105
|
+
|
|
106
|
+
- Node.js **v20+** (cloud-native compatible)
|
|
107
|
+
- AWS CLI installed and configured
|
|
108
|
+
- IAM user/role with `ssm:GetParameter`, `ssm:PutParameter`
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
pnpm add -g envilder
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
> 💡 **New to AWS SSM?** AWS Systems Manager Parameter Store provides secure storage for configuration data and secrets:
|
|
115
|
+
>
|
|
116
|
+
> - [AWS SSM Parameter Store Overview](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)
|
|
117
|
+
> - [Setting up AWS CLI credentials](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)
|
|
118
|
+
> - [IAM permissions for SSM](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)
|
|
119
|
+
|
|
120
|
+
### 🤖 GitHub Action
|
|
121
|
+
|
|
122
|
+
Use Envilder directly in your CI/CD workflows with our official GitHub Action:
|
|
123
|
+
|
|
124
|
+
```yaml
|
|
125
|
+
- name: Configure AWS Credentials
|
|
126
|
+
uses: aws-actions/configure-aws-credentials@v5
|
|
127
|
+
with:
|
|
128
|
+
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
|
|
129
|
+
aws-region: us-east-1
|
|
130
|
+
|
|
131
|
+
- name: Pull secrets from AWS SSM
|
|
132
|
+
uses: macalbert/envilder/github-action@v0.7.2
|
|
133
|
+
with:
|
|
134
|
+
map-file: param-map.json
|
|
135
|
+
env-file: .env
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
📖 **[View full GitHub Action documentation](./github-action/README.md)**
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## 🚀 Quick Start
|
|
143
|
+
|
|
144
|
+
### 🎥 Video Demonstration
|
|
145
|
+
|
|
146
|
+
Watch how easy it is to automate your .env management in less than 1 minute:
|
|
147
|
+
|
|
148
|
+

|
|
149
|
+
|
|
150
|
+
### 🏁 Get Started (3 steps)
|
|
151
|
+
|
|
152
|
+
After configuring the AWS CLI and ensuring you have the necessary permissions to create SSM parameters,
|
|
153
|
+
you can begin pushing your first environment variables.
|
|
154
|
+
|
|
155
|
+
1. **Create a mapping file:**
|
|
156
|
+
|
|
157
|
+
```json
|
|
158
|
+
{
|
|
159
|
+
"DB_PASSWORD": "/my-app/db/password"
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
2. **Push a secret to AWS SSM:**
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
envilder --push --key=DB_PASSWORD --value=12345 --ssm-path=/my-app/db/password
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Once your secrets are stored in AWS, you can easily generate or synchronize your local .env files:
|
|
170
|
+
|
|
171
|
+
1. **Generate your .env file from AWS SSM:**
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
envilder --map=param-map.json --envfile=.env
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Your secrets are now managed and versioned from AWS SSM. Add `.env` to your `.gitignore` for security.
|
|
178
|
+
Envilder is designed for automation, onboarding, and secure cloud-native workflows.
|
|
179
|
+
|
|
180
|
+
### 📚 Quick Links
|
|
181
|
+
|
|
182
|
+
- [Requirements & Installation](docs/requirements-installation.md)
|
|
183
|
+
- [Push Command Guide](docs/push-command.md)
|
|
184
|
+
- [Pull Command Guide](docs/pull-command.md)
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## 🛠️ How it works
|
|
189
|
+
|
|
190
|
+
```mermaid
|
|
191
|
+
graph LR
|
|
192
|
+
A["Mapping File<br/>(param-map.json)"] --> B[Envilder]:::core
|
|
193
|
+
C["Environment File<br/> '.env' or --key"] --> B
|
|
194
|
+
D["AWS Credentials"]:::aws --> B
|
|
195
|
+
E["AWS SSM"]:::aws --> B
|
|
196
|
+
B --> F["Pull/Push Secrets 💾"]
|
|
197
|
+
|
|
198
|
+
classDef aws fill:#ffcc66,color:#000000,stroke:#333,stroke-width:1.5px;
|
|
199
|
+
classDef core fill:#1f3b57,color:#fff,stroke:#ccc,stroke-width:2px;
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
1. Create a new `.env` file like `'ENV_VAR=12345'`
|
|
203
|
+
2. Define mappings in a JSON file : `{"ENV_VAR": "ssm/path"}`
|
|
204
|
+
3. Run Envilder: `--push` to upload, or `--map` + `--envfile` to generate
|
|
205
|
+
4. Envilder syncs secrets securely with AWS SSM Parameter Store using your AWS credentials
|
|
206
|
+
5. Result: your secrets are always up-to-date, secure, and ready for any environment
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Frequently Asked Questions (FAQ)
|
|
211
|
+
|
|
212
|
+
**Q: What is Envilder?**
|
|
213
|
+
A: Envilder is a CLI tool for automating .env and secret management using AWS SSM Parameter Store.
|
|
214
|
+
|
|
215
|
+
**Q: How does Envilder improve security?**
|
|
216
|
+
A: Secrets are never stored in code or shared via chat/email. All secrets are managed and synced securely via AWS SSM.
|
|
217
|
+
|
|
218
|
+
**Q: Can I use Envilder in CI/CD pipelines?**
|
|
219
|
+
A: Yes! Envilder is designed for automation and works seamlessly in CI/CD workflows.
|
|
220
|
+
|
|
221
|
+
**Q: Does Envilder support multiple AWS profiles?**
|
|
222
|
+
A: Yes, you can use the `--profile` flag to select different AWS credentials.
|
|
223
|
+
|
|
224
|
+
**Q: What environments does Envilder support?**
|
|
225
|
+
A: Any environment supported by AWS SSM—dev, test, staging, production, etc.
|
|
226
|
+
|
|
227
|
+
**Q: Is Envilder open source?**
|
|
228
|
+
A: Yes, licensed under MIT.
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## 🏁 Roadmap
|
|
233
|
+
|
|
234
|
+
We're continuously improving Envilder based on community feedback. Upcoming features include:
|
|
235
|
+
|
|
236
|
+
- 🔌 **Multi-backend support** (Azure Key Vault, HashiCorp Vault, etc.)
|
|
237
|
+
- 🔍 **Check/sync mode** for drift detection
|
|
238
|
+
- 🧠 **Auto-discovery** for bulk parameter fetching
|
|
239
|
+
|
|
240
|
+
👉 **[View full roadmap with priorities](./ROADMAP.md)**
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## 🤝 Contributing
|
|
245
|
+
|
|
246
|
+
All help is welcome — PRs, issues, ideas!
|
|
247
|
+
|
|
248
|
+
- 🔧 Use our [Pull Request Template](.github/pull_request_template.md)
|
|
249
|
+
- 🧪 Add tests where possible
|
|
250
|
+
- 💬 Feedback and discussion welcome
|
|
251
|
+
- 🏗️ Check our [Architecture Documentation](./docs/architecture/README.md)
|
|
252
|
+
- 🔒 Review our [Security Policy](./docs/SECURITY.md)
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## 📜 License
|
|
257
|
+
|
|
258
|
+
MIT © [Marçal Albert](https://github.com/macalbert)
|
|
259
|
+
See [LICENSE](./LICENSE) | [CHANGELOG](./docs/CHANGELOG.md) | [Security Policy](./docs/SECURITY.md)
|
package/ROADMAP.md
CHANGED
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
# 🛣️ Envilder Roadmap
|
|
2
|
-
|
|
3
|
-
Envilder aims to be the simplest, most reliable way to generate `.env` files from AWS SSM Parameter Store
|
|
4
|
-
— for both local development and CI/CD pipelines.
|
|
5
|
-
|
|
6
|
-
> **Note:** This roadmap contains ideas and potential features based on initial vision and community feedback.
|
|
7
|
-
> Not all features are guaranteed to be implemented. Priorities may change based on user needs, feedback,
|
|
8
|
-
> and real-world usage patterns. Your input matters—feel free to share your thoughts and suggestions!
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## Feature Status & Roadmap
|
|
13
|
-
|
|
14
|
-
| Feature | Status | Priority | Notes |
|
|
15
|
-
|---------|--------|----------|-------|
|
|
16
|
-
| **Mapping-based resolution** | ✅ Implemented | - | Core functionality |
|
|
17
|
-
| **`.env` file generation** | ✅ Implemented | - | Core functionality |
|
|
18
|
-
| **AWS profile support** | ✅ Implemented | - | `--profile` flag |
|
|
19
|
-
| **Push mode** (`--push`) | ✅ Implemented | - | [Guide](./docs/push-command.md) |
|
|
20
|
-
| **GitHub Action** | ✅ Implemented | - | [Documentation](./github-action/README.md) |
|
|
21
|
-
| **Onboarding documentation** | ✅ Implemented | - | [Setup guide](./docs/requirements-installation.md) |
|
|
22
|
-
| **Plugin system / Multi-backend** | ❌ Planned | 🔥 Next | Starting with Azure Key Vault support |
|
|
23
|
-
| **Check/sync mode** (`--check`) | ❌ Planned | High | Validate SSM vs `.env`, fail CI if out-of-sync |
|
|
24
|
-
| **Auto-discovery mode** (`--auto`) | ❌ Planned | Medium | Fetch all parameters with a given prefix |
|
|
25
|
-
| **Webhook/Slack notifications** | ❌ Planned | Low | Notify on secret sync for audit/logging |
|
|
26
|
-
| **Hierarchical mapping** | ❌ Future | Low | Per-environment `param-map.json` |
|
|
27
|
-
| **Web-based demo** | ❌ Future | Low | Interactive mapping tester |
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## 🙌 Contribute or Suggest Ideas
|
|
32
|
-
|
|
33
|
-
If you've faced similar problems or want to help improve this tool, feel free to:
|
|
34
|
-
|
|
35
|
-
- 🐛 [Open an issue](https://github.com/macalbert/envilder/issues/new)
|
|
36
|
-
- 💡 Share feature ideas and use cases
|
|
37
|
-
- 🔧 Submit a Pull Request
|
|
38
|
-
- 💬 Provide feedback on planned features
|
|
39
|
-
|
|
40
|
-
Every bit of feedback helps make this tool better for the community!
|
|
1
|
+
# 🛣️ Envilder Roadmap
|
|
2
|
+
|
|
3
|
+
Envilder aims to be the simplest, most reliable way to generate `.env` files from AWS SSM Parameter Store
|
|
4
|
+
— for both local development and CI/CD pipelines.
|
|
5
|
+
|
|
6
|
+
> **Note:** This roadmap contains ideas and potential features based on initial vision and community feedback.
|
|
7
|
+
> Not all features are guaranteed to be implemented. Priorities may change based on user needs, feedback,
|
|
8
|
+
> and real-world usage patterns. Your input matters—feel free to share your thoughts and suggestions!
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Feature Status & Roadmap
|
|
13
|
+
|
|
14
|
+
| Feature | Status | Priority | Notes |
|
|
15
|
+
|---------|--------|----------|-------|
|
|
16
|
+
| **Mapping-based resolution** | ✅ Implemented | - | Core functionality |
|
|
17
|
+
| **`.env` file generation** | ✅ Implemented | - | Core functionality |
|
|
18
|
+
| **AWS profile support** | ✅ Implemented | - | `--profile` flag |
|
|
19
|
+
| **Push mode** (`--push`) | ✅ Implemented | - | [Guide](./docs/push-command.md) |
|
|
20
|
+
| **GitHub Action** | ✅ Implemented | - | [Documentation](./github-action/README.md) |
|
|
21
|
+
| **Onboarding documentation** | ✅ Implemented | - | [Setup guide](./docs/requirements-installation.md) |
|
|
22
|
+
| **Plugin system / Multi-backend** | ❌ Planned | 🔥 Next | Starting with Azure Key Vault support |
|
|
23
|
+
| **Check/sync mode** (`--check`) | ❌ Planned | High | Validate SSM vs `.env`, fail CI if out-of-sync |
|
|
24
|
+
| **Auto-discovery mode** (`--auto`) | ❌ Planned | Medium | Fetch all parameters with a given prefix |
|
|
25
|
+
| **Webhook/Slack notifications** | ❌ Planned | Low | Notify on secret sync for audit/logging |
|
|
26
|
+
| **Hierarchical mapping** | ❌ Future | Low | Per-environment `param-map.json` |
|
|
27
|
+
| **Web-based demo** | ❌ Future | Low | Interactive mapping tester |
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 🙌 Contribute or Suggest Ideas
|
|
32
|
+
|
|
33
|
+
If you've faced similar problems or want to help improve this tool, feel free to:
|
|
34
|
+
|
|
35
|
+
- 🐛 [Open an issue](https://github.com/macalbert/envilder/issues/new)
|
|
36
|
+
- 💡 Share feature ideas and use cases
|
|
37
|
+
- 🔧 Submit a Pull Request
|
|
38
|
+
- 💬 Provide feedback on planned features
|
|
39
|
+
|
|
40
|
+
Every bit of feedback helps make this tool better for the community!
|