container-superposition 0.1.1

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.
Files changed (327) hide show
  1. package/README.md +843 -0
  2. package/dist/scripts/init.d.ts +3 -0
  3. package/dist/scripts/init.d.ts.map +1 -0
  4. package/dist/scripts/init.js +1190 -0
  5. package/dist/scripts/init.js.map +1 -0
  6. package/dist/scripts/migrate-to-manifests.d.ts +12 -0
  7. package/dist/scripts/migrate-to-manifests.d.ts.map +1 -0
  8. package/dist/scripts/migrate-to-manifests.js +230 -0
  9. package/dist/scripts/migrate-to-manifests.js.map +1 -0
  10. package/dist/tool/questionnaire/composer.d.ts +6 -0
  11. package/dist/tool/questionnaire/composer.d.ts.map +1 -0
  12. package/dist/tool/questionnaire/composer.js +1232 -0
  13. package/dist/tool/questionnaire/composer.js.map +1 -0
  14. package/dist/tool/readme/markdown-parser.d.ts +30 -0
  15. package/dist/tool/readme/markdown-parser.d.ts.map +1 -0
  16. package/dist/tool/readme/markdown-parser.js +139 -0
  17. package/dist/tool/readme/markdown-parser.js.map +1 -0
  18. package/dist/tool/readme/readme-generator.d.ts +9 -0
  19. package/dist/tool/readme/readme-generator.d.ts.map +1 -0
  20. package/dist/tool/readme/readme-generator.js +422 -0
  21. package/dist/tool/readme/readme-generator.js.map +1 -0
  22. package/dist/tool/schema/custom-loader.d.ts +17 -0
  23. package/dist/tool/schema/custom-loader.d.ts.map +1 -0
  24. package/dist/tool/schema/custom-loader.js +149 -0
  25. package/dist/tool/schema/custom-loader.js.map +1 -0
  26. package/dist/tool/schema/overlay-loader.d.ts +47 -0
  27. package/dist/tool/schema/overlay-loader.d.ts.map +1 -0
  28. package/dist/tool/schema/overlay-loader.js +252 -0
  29. package/dist/tool/schema/overlay-loader.js.map +1 -0
  30. package/dist/tool/schema/types.d.ts +212 -0
  31. package/dist/tool/schema/types.d.ts.map +1 -0
  32. package/dist/tool/schema/types.js +5 -0
  33. package/dist/tool/schema/types.js.map +1 -0
  34. package/docs/README.md +308 -0
  35. package/docs/architecture.md +233 -0
  36. package/docs/creating-overlays.md +549 -0
  37. package/docs/custom-patches.md +540 -0
  38. package/docs/dependencies.md +279 -0
  39. package/docs/examples/custom-patches-example.md +85 -0
  40. package/docs/examples.md +576 -0
  41. package/docs/messaging-comparison.md +265 -0
  42. package/docs/messaging-quick-start.md +385 -0
  43. package/docs/observability-workflow.md +537 -0
  44. package/docs/overlay-manifest-refactoring.md +214 -0
  45. package/docs/overlay-metadata-archive.md +54 -0
  46. package/docs/overlays.md +523 -0
  47. package/docs/presets-architecture.md +498 -0
  48. package/docs/presets.md +366 -0
  49. package/docs/publishing.md +476 -0
  50. package/docs/quick-reference.md +326 -0
  51. package/docs/ux.md +170 -0
  52. package/features/README.md +85 -0
  53. package/features/cross-distro-packages/README.md +146 -0
  54. package/features/cross-distro-packages/devcontainer-feature.json +20 -0
  55. package/features/cross-distro-packages/install.sh +58 -0
  56. package/features/local-secrets-manager/devcontainer-feature.json +18 -0
  57. package/features/local-secrets-manager/install.sh +127 -0
  58. package/features/project-scaffolder/devcontainer-feature.json +24 -0
  59. package/features/project-scaffolder/install.sh +100 -0
  60. package/features/team-conventions/devcontainer-feature.json +24 -0
  61. package/features/team-conventions/install.sh +93 -0
  62. package/overlays/.registry/README.md +14 -0
  63. package/overlays/.registry/base-images.yml +26 -0
  64. package/overlays/.registry/base-templates.yml +7 -0
  65. package/overlays/README.md +155 -0
  66. package/overlays/alertmanager/.env.example +5 -0
  67. package/overlays/alertmanager/README.md +465 -0
  68. package/overlays/alertmanager/alert-rules.yml +56 -0
  69. package/overlays/alertmanager/alertmanager.yml +42 -0
  70. package/overlays/alertmanager/devcontainer.patch.json +12 -0
  71. package/overlays/alertmanager/docker-compose.yml +20 -0
  72. package/overlays/alertmanager/overlay.yml +17 -0
  73. package/overlays/alertmanager/setup.sh +53 -0
  74. package/overlays/alertmanager/verify.sh +31 -0
  75. package/overlays/aws-cli/README.md +473 -0
  76. package/overlays/aws-cli/devcontainer.patch.json +13 -0
  77. package/overlays/aws-cli/overlay.yml +13 -0
  78. package/overlays/azure-cli/README.md +551 -0
  79. package/overlays/azure-cli/devcontainer.patch.json +8 -0
  80. package/overlays/azure-cli/overlay.yml +13 -0
  81. package/overlays/bun/README.md +312 -0
  82. package/overlays/bun/devcontainer.patch.json +41 -0
  83. package/overlays/bun/overlay.yml +16 -0
  84. package/overlays/bun/setup.sh +79 -0
  85. package/overlays/bun/verify.sh +30 -0
  86. package/overlays/codex/README.md +128 -0
  87. package/overlays/codex/devcontainer.patch.json +3 -0
  88. package/overlays/codex/overlay.yml +14 -0
  89. package/overlays/codex/setup.sh +24 -0
  90. package/overlays/codex/verify.sh +30 -0
  91. package/overlays/commitlint/README.md +333 -0
  92. package/overlays/commitlint/devcontainer.patch.json +8 -0
  93. package/overlays/commitlint/overlay.yml +16 -0
  94. package/overlays/commitlint/setup.sh +234 -0
  95. package/overlays/direnv/README.md +504 -0
  96. package/overlays/direnv/devcontainer.patch.json +6 -0
  97. package/overlays/direnv/overlay.yml +13 -0
  98. package/overlays/direnv/setup.sh +139 -0
  99. package/overlays/docker-in-docker/README.md +534 -0
  100. package/overlays/docker-in-docker/devcontainer.patch.json +10 -0
  101. package/overlays/docker-in-docker/overlay.yml +13 -0
  102. package/overlays/docker-sock/README.md +256 -0
  103. package/overlays/docker-sock/devcontainer.patch.json +9 -0
  104. package/overlays/docker-sock/docker-compose.yml +8 -0
  105. package/overlays/docker-sock/overlay.yml +13 -0
  106. package/overlays/dotnet/README.md +147 -0
  107. package/overlays/dotnet/devcontainer.patch.json +51 -0
  108. package/overlays/dotnet/global-tools.txt +24 -0
  109. package/overlays/dotnet/overlay.yml +13 -0
  110. package/overlays/dotnet/setup.sh +51 -0
  111. package/overlays/dotnet/verify.sh +26 -0
  112. package/overlays/gcloud/README.md +269 -0
  113. package/overlays/gcloud/devcontainer.patch.json +14 -0
  114. package/overlays/gcloud/overlay.yml +14 -0
  115. package/overlays/gcloud/verify.sh +52 -0
  116. package/overlays/git-helpers/README.md +168 -0
  117. package/overlays/git-helpers/devcontainer.patch.json +33 -0
  118. package/overlays/git-helpers/overlay.yml +15 -0
  119. package/overlays/git-helpers/setup.sh +91 -0
  120. package/overlays/go/README.md +293 -0
  121. package/overlays/go/devcontainer.patch.json +43 -0
  122. package/overlays/go/overlay.yml +15 -0
  123. package/overlays/go/setup.sh +33 -0
  124. package/overlays/go/verify.sh +40 -0
  125. package/overlays/grafana/.env.example +9 -0
  126. package/overlays/grafana/README.md +462 -0
  127. package/overlays/grafana/dashboard-provider.yml +11 -0
  128. package/overlays/grafana/dashboards/observability-overview.json +263 -0
  129. package/overlays/grafana/devcontainer.patch.json +12 -0
  130. package/overlays/grafana/docker-compose.yml +27 -0
  131. package/overlays/grafana/grafana-datasources.yml +57 -0
  132. package/overlays/grafana/overlay.yml +21 -0
  133. package/overlays/grafana/verify.sh +34 -0
  134. package/overlays/jaeger/.env.example +7 -0
  135. package/overlays/jaeger/README.md +867 -0
  136. package/overlays/jaeger/devcontainer.patch.json +12 -0
  137. package/overlays/jaeger/docker-compose.yml +17 -0
  138. package/overlays/jaeger/overlay.yml +19 -0
  139. package/overlays/java/README.md +267 -0
  140. package/overlays/java/devcontainer.patch.json +44 -0
  141. package/overlays/java/overlay.yml +16 -0
  142. package/overlays/java/setup.sh +41 -0
  143. package/overlays/java/verify.sh +42 -0
  144. package/overlays/just/README.md +443 -0
  145. package/overlays/just/devcontainer.patch.json +3 -0
  146. package/overlays/just/overlay.yml +13 -0
  147. package/overlays/just/setup.sh +182 -0
  148. package/overlays/kubectl-helm/README.md +660 -0
  149. package/overlays/kubectl-helm/devcontainer.patch.json +10 -0
  150. package/overlays/kubectl-helm/overlay.yml +13 -0
  151. package/overlays/loki/.env.example +5 -0
  152. package/overlays/loki/README.md +1156 -0
  153. package/overlays/loki/devcontainer.patch.json +12 -0
  154. package/overlays/loki/docker-compose.yml +18 -0
  155. package/overlays/loki/loki-config.yaml +45 -0
  156. package/overlays/loki/overlay.yml +17 -0
  157. package/overlays/minio/.env.example +9 -0
  158. package/overlays/minio/README.md +639 -0
  159. package/overlays/minio/devcontainer.patch.json +30 -0
  160. package/overlays/minio/docker-compose.yml +28 -0
  161. package/overlays/minio/overlay.yml +18 -0
  162. package/overlays/minio/setup.sh +61 -0
  163. package/overlays/minio/verify.sh +64 -0
  164. package/overlays/mkdocs/README.md +309 -0
  165. package/overlays/mkdocs/devcontainer.patch.json +24 -0
  166. package/overlays/mkdocs/overlay.yml +15 -0
  167. package/overlays/modern-cli-tools/README.md +556 -0
  168. package/overlays/modern-cli-tools/devcontainer.patch.json +3 -0
  169. package/overlays/modern-cli-tools/overlay.yml +13 -0
  170. package/overlays/modern-cli-tools/setup.sh +153 -0
  171. package/overlays/mongodb/.env.example +9 -0
  172. package/overlays/mongodb/README.md +481 -0
  173. package/overlays/mongodb/devcontainer.patch.json +32 -0
  174. package/overlays/mongodb/docker-compose.yml +44 -0
  175. package/overlays/mongodb/overlay.yml +17 -0
  176. package/overlays/mongodb/verify.sh +48 -0
  177. package/overlays/mysql/.env.example +11 -0
  178. package/overlays/mysql/README.md +542 -0
  179. package/overlays/mysql/devcontainer.patch.json +34 -0
  180. package/overlays/mysql/docker-compose.yml +55 -0
  181. package/overlays/mysql/overlay.yml +16 -0
  182. package/overlays/mysql/verify.sh +48 -0
  183. package/overlays/nats/.env.example +5 -0
  184. package/overlays/nats/README.md +762 -0
  185. package/overlays/nats/devcontainer.patch.json +24 -0
  186. package/overlays/nats/docker-compose.yml +31 -0
  187. package/overlays/nats/overlay.yml +18 -0
  188. package/overlays/nats/verify.sh +50 -0
  189. package/overlays/ngrok/README.md +503 -0
  190. package/overlays/ngrok/devcontainer.patch.json +3 -0
  191. package/overlays/ngrok/overlay.yml +14 -0
  192. package/overlays/ngrok/setup.sh +125 -0
  193. package/overlays/nodejs/README.md +192 -0
  194. package/overlays/nodejs/devcontainer.patch.json +49 -0
  195. package/overlays/nodejs/global-packages.txt +16 -0
  196. package/overlays/nodejs/overlay.yml +14 -0
  197. package/overlays/nodejs/setup.sh +46 -0
  198. package/overlays/nodejs/verify.sh +32 -0
  199. package/overlays/otel-collector/.env.example +9 -0
  200. package/overlays/otel-collector/README.md +1257 -0
  201. package/overlays/otel-collector/devcontainer.patch.json +28 -0
  202. package/overlays/otel-collector/docker-compose.yml +22 -0
  203. package/overlays/otel-collector/otel-collector-config.yaml +68 -0
  204. package/overlays/otel-collector/overlay.yml +21 -0
  205. package/overlays/otel-collector/setup.sh +49 -0
  206. package/overlays/otel-demo-nodejs/.env.example +2 -0
  207. package/overlays/otel-demo-nodejs/Dockerfile-otel-demo-nodejs +17 -0
  208. package/overlays/otel-demo-nodejs/README.md +409 -0
  209. package/overlays/otel-demo-nodejs/devcontainer.patch.json +12 -0
  210. package/overlays/otel-demo-nodejs/docker-compose.yml +19 -0
  211. package/overlays/otel-demo-nodejs/overlay.yml +23 -0
  212. package/overlays/otel-demo-nodejs/package-otel-demo-nodejs.json +20 -0
  213. package/overlays/otel-demo-nodejs/server-otel-demo-nodejs.js +259 -0
  214. package/overlays/otel-demo-nodejs/tracing-otel-demo-nodejs.js +57 -0
  215. package/overlays/otel-demo-nodejs/verify.sh +31 -0
  216. package/overlays/otel-demo-python/.env.example +2 -0
  217. package/overlays/otel-demo-python/Dockerfile-otel-demo-python +16 -0
  218. package/overlays/otel-demo-python/README.md +82 -0
  219. package/overlays/otel-demo-python/app-otel-demo-python.py +208 -0
  220. package/overlays/otel-demo-python/devcontainer.patch.json +12 -0
  221. package/overlays/otel-demo-python/docker-compose.yml +19 -0
  222. package/overlays/otel-demo-python/overlay.yml +23 -0
  223. package/overlays/otel-demo-python/requirements-otel-demo-python.txt +4 -0
  224. package/overlays/otel-demo-python/verify.sh +31 -0
  225. package/overlays/playwright/README.md +629 -0
  226. package/overlays/playwright/devcontainer.patch.json +9 -0
  227. package/overlays/playwright/overlay.yml +13 -0
  228. package/overlays/postgres/.env.example +6 -0
  229. package/overlays/postgres/README.md +602 -0
  230. package/overlays/postgres/devcontainer.patch.json +21 -0
  231. package/overlays/postgres/docker-compose.yml +22 -0
  232. package/overlays/postgres/overlay.yml +15 -0
  233. package/overlays/postgres/verify.sh +45 -0
  234. package/overlays/powershell/README.md +314 -0
  235. package/overlays/powershell/devcontainer.patch.json +22 -0
  236. package/overlays/powershell/overlay.yml +13 -0
  237. package/overlays/powershell/setup.sh +29 -0
  238. package/overlays/powershell/verify.sh +38 -0
  239. package/overlays/pre-commit/README.md +263 -0
  240. package/overlays/pre-commit/devcontainer.patch.json +9 -0
  241. package/overlays/pre-commit/overlay.yml +16 -0
  242. package/overlays/pre-commit/setup.sh +129 -0
  243. package/overlays/presets/docs-site.yml +118 -0
  244. package/overlays/presets/fullstack.yml +181 -0
  245. package/overlays/presets/microservice.yml +118 -0
  246. package/overlays/presets/web-api.yml +109 -0
  247. package/overlays/prometheus/.env.example +5 -0
  248. package/overlays/prometheus/README.md +1246 -0
  249. package/overlays/prometheus/devcontainer.patch.json +12 -0
  250. package/overlays/prometheus/docker-compose.yml +22 -0
  251. package/overlays/prometheus/overlay.yml +17 -0
  252. package/overlays/prometheus/prometheus.yml +12 -0
  253. package/overlays/prometheus/verify.sh +34 -0
  254. package/overlays/promtail/.env.example +2 -0
  255. package/overlays/promtail/README.md +357 -0
  256. package/overlays/promtail/devcontainer.patch.json +5 -0
  257. package/overlays/promtail/docker-compose.yml +16 -0
  258. package/overlays/promtail/overlay.yml +17 -0
  259. package/overlays/promtail/promtail-config.yaml +60 -0
  260. package/overlays/promtail/verify.sh +31 -0
  261. package/overlays/pulumi/README.md +472 -0
  262. package/overlays/pulumi/devcontainer.patch.json +13 -0
  263. package/overlays/pulumi/overlay.yml +14 -0
  264. package/overlays/pulumi/verify.sh +31 -0
  265. package/overlays/python/README.md +919 -0
  266. package/overlays/python/devcontainer.patch.json +41 -0
  267. package/overlays/python/overlay.yml +12 -0
  268. package/overlays/python/requirements-overlay.txt +13 -0
  269. package/overlays/python/setup.sh +47 -0
  270. package/overlays/python/verify.sh +32 -0
  271. package/overlays/rabbitmq/.env.example +7 -0
  272. package/overlays/rabbitmq/README.md +680 -0
  273. package/overlays/rabbitmq/devcontainer.patch.json +28 -0
  274. package/overlays/rabbitmq/docker-compose.yml +30 -0
  275. package/overlays/rabbitmq/overlay.yml +18 -0
  276. package/overlays/rabbitmq/verify.sh +41 -0
  277. package/overlays/redis/.env.example +4 -0
  278. package/overlays/redis/README.md +776 -0
  279. package/overlays/redis/devcontainer.patch.json +21 -0
  280. package/overlays/redis/docker-compose.yml +21 -0
  281. package/overlays/redis/overlay.yml +15 -0
  282. package/overlays/redis/verify.sh +41 -0
  283. package/overlays/redpanda/.env.example +10 -0
  284. package/overlays/redpanda/README.md +703 -0
  285. package/overlays/redpanda/devcontainer.patch.json +37 -0
  286. package/overlays/redpanda/docker-compose.yml +67 -0
  287. package/overlays/redpanda/overlay.yml +21 -0
  288. package/overlays/redpanda/verify.sh +48 -0
  289. package/overlays/rust/README.md +299 -0
  290. package/overlays/rust/devcontainer.patch.json +39 -0
  291. package/overlays/rust/overlay.yml +15 -0
  292. package/overlays/rust/setup.sh +36 -0
  293. package/overlays/rust/verify.sh +51 -0
  294. package/overlays/sqlite/README.md +584 -0
  295. package/overlays/sqlite/devcontainer.patch.json +14 -0
  296. package/overlays/sqlite/overlay.yml +15 -0
  297. package/overlays/sqlite/setup.sh +27 -0
  298. package/overlays/sqlite/verify.sh +43 -0
  299. package/overlays/sqlserver/.env.example +6 -0
  300. package/overlays/sqlserver/README.md +592 -0
  301. package/overlays/sqlserver/devcontainer.patch.json +22 -0
  302. package/overlays/sqlserver/docker-compose.yml +32 -0
  303. package/overlays/sqlserver/overlay.yml +17 -0
  304. package/overlays/sqlserver/verify.sh +30 -0
  305. package/overlays/tempo/.env.example +5 -0
  306. package/overlays/tempo/README.md +273 -0
  307. package/overlays/tempo/devcontainer.patch.json +12 -0
  308. package/overlays/tempo/docker-compose.yml +20 -0
  309. package/overlays/tempo/overlay.yml +20 -0
  310. package/overlays/tempo/tempo-config.yaml +32 -0
  311. package/overlays/tempo/verify.sh +31 -0
  312. package/overlays/terraform/README.md +389 -0
  313. package/overlays/terraform/devcontainer.patch.json +15 -0
  314. package/overlays/terraform/overlay.yml +14 -0
  315. package/overlays/terraform/verify.sh +63 -0
  316. package/package.json +74 -0
  317. package/templates/README.md +285 -0
  318. package/templates/compose/.devcontainer/devcontainer.json +46 -0
  319. package/templates/compose/.devcontainer/docker-compose.yml +12 -0
  320. package/templates/compose/README.md +20 -0
  321. package/templates/plain/.devcontainer/devcontainer.json +35 -0
  322. package/templates/plain/README.md +21 -0
  323. package/tool/README.md +281 -0
  324. package/tool/schema/base-images.schema.json +43 -0
  325. package/tool/schema/base-templates.schema.json +34 -0
  326. package/tool/schema/config.schema.json +71 -0
  327. package/tool/schema/overlay-manifest.schema.json +86 -0
@@ -0,0 +1,42 @@
1
+ global:
2
+ resolve_timeout: 5m
3
+
4
+ route:
5
+ group_by: ['alertname', 'cluster', 'service']
6
+ group_wait: 10s
7
+ group_interval: 10s
8
+ repeat_interval: 12h
9
+ receiver: 'default'
10
+
11
+ routes:
12
+ # Route critical alerts to webhook
13
+ - match:
14
+ severity: critical
15
+ receiver: webhook
16
+ continue: true
17
+
18
+ # Route warning alerts with longer wait
19
+ - match:
20
+ severity: warning
21
+ receiver: default
22
+ group_wait: 30s
23
+
24
+ receivers:
25
+ - name: 'default'
26
+ # Example: Log alerts to console
27
+ # In production, configure email, Slack, PagerDuty, etc.
28
+
29
+ - name: 'webhook'
30
+ webhook_configs:
31
+ - url: 'http://devcontainer:5001/alerts' # Replace with your webhook service
32
+ send_resolved: true
33
+ # Example webhook receiver - update URL to match your webhook service
34
+ # For development, you can run a simple webhook receiver in the devcontainer
35
+
36
+ inhibit_rules:
37
+ # Inhibit warning if critical is firing
38
+ - source_match:
39
+ severity: 'critical'
40
+ target_match:
41
+ severity: 'warning'
42
+ equal: ['alertname', 'cluster', 'service']
@@ -0,0 +1,12 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
3
+ "runServices": ["alertmanager"],
4
+ "_serviceOrder": 2,
5
+ "forwardPorts": [9093],
6
+ "portsAttributes": {
7
+ "9093": {
8
+ "label": "Alertmanager UI",
9
+ "onAutoForward": "openBrowser"
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,20 @@
1
+ version: '3.8'
2
+ services:
3
+ alertmanager:
4
+ image: prom/alertmanager:${ALERTMANAGER_VERSION:-latest}
5
+ command:
6
+ - '--config.file=/etc/alertmanager/alertmanager.yml'
7
+ - '--storage.path=/alertmanager'
8
+ volumes:
9
+ - ./alertmanager-alertmanager.yml:/etc/alertmanager/alertmanager.yml
10
+ - alertmanager_data:/alertmanager
11
+ ports:
12
+ - '${ALERTMANAGER_PORT:-9093}:9093'
13
+ networks:
14
+ - devnet
15
+
16
+ volumes:
17
+ alertmanager_data:
18
+
19
+ networks:
20
+ devnet:
@@ -0,0 +1,17 @@
1
+ id: alertmanager
2
+ name: Alertmanager
3
+ description: Alert routing and notification management for Prometheus
4
+ category: observability
5
+ supports:
6
+ - compose
7
+ requires:
8
+ - prometheus
9
+ suggests: []
10
+ conflicts: []
11
+ tags:
12
+ - observability
13
+ - alerts
14
+ - prometheus
15
+ ports:
16
+ - 9093
17
+ order: 2
@@ -0,0 +1,53 @@
1
+ #!/bin/bash
2
+ # Alertmanager setup script - Updates Prometheus configuration
3
+
4
+ set -e
5
+
6
+ echo "🔧 Setting up Alertmanager integration..."
7
+
8
+ # Determine workspace root dynamically to support both /workspaces/* and /workspace layouts
9
+ WORKSPACE_ROOT="${LOCAL_WORKSPACE_FOLDER:-$PWD}"
10
+
11
+ # If the current root does not contain a .devcontainer, try common devcontainer locations
12
+ if [ ! -d "$WORKSPACE_ROOT/.devcontainer" ]; then
13
+ # Try to detect a workspace under /workspaces (compose templates)
14
+ if [ -d "/workspaces" ]; then
15
+ FIRST_WORKSPACE_DIR="$(find /workspaces -maxdepth 1 -mindepth 1 -type d 2>/dev/null | head -n 1)"
16
+ if [ -n "$FIRST_WORKSPACE_DIR" ] && [ -d "$FIRST_WORKSPACE_DIR/.devcontainer" ]; then
17
+ WORKSPACE_ROOT="$FIRST_WORKSPACE_DIR"
18
+ fi
19
+ fi
20
+ fi
21
+
22
+ # Fallback to /workspace if it exists and contains a .devcontainer (non-compose setups)
23
+ if [ ! -d "$WORKSPACE_ROOT/.devcontainer" ] && [ -d "/workspace/.devcontainer" ]; then
24
+ WORKSPACE_ROOT="/workspace"
25
+ fi
26
+
27
+ PROMETHEUS_CONFIG="$WORKSPACE_ROOT/.devcontainer/prometheus-prometheus.yml"
28
+
29
+ # Check if Prometheus config exists
30
+ if [ -f "$PROMETHEUS_CONFIG" ]; then
31
+ echo "📝 Updating Prometheus configuration for Alertmanager integration..."
32
+
33
+ # Check if alerting section already exists
34
+ if ! grep -q "alerting:" "$PROMETHEUS_CONFIG"; then
35
+ # Add alerting configuration
36
+ cat >> "$PROMETHEUS_CONFIG" << 'EOF'
37
+
38
+ # Alertmanager configuration
39
+ alerting:
40
+ alertmanagers:
41
+ - static_configs:
42
+ - targets: ['alertmanager:9093']
43
+ EOF
44
+ echo "✓ Added Alertmanager configuration to Prometheus"
45
+ echo "ℹ️ Note: Alert rules should be mounted separately in Prometheus docker-compose.yml"
46
+ else
47
+ echo "✓ Alertmanager configuration already present"
48
+ fi
49
+ else
50
+ echo "⚠️ Prometheus configuration not found. Make sure prometheus overlay is enabled."
51
+ fi
52
+
53
+ echo "✓ Alertmanager setup complete"
@@ -0,0 +1,31 @@
1
+ #!/bin/bash
2
+ # Alertmanager verification script
3
+
4
+ echo "🔍 Verifying Alertmanager installation..."
5
+
6
+ # Track overall success
7
+ ALL_CHECKS_PASSED=true
8
+
9
+ # Check if Alertmanager service is running
10
+ if docker ps --format '{{.Names}}' | grep -q alertmanager; then
11
+ echo "✓ Alertmanager service is running"
12
+ else
13
+ echo "✗ Alertmanager service is not running"
14
+ ALL_CHECKS_PASSED=false
15
+ fi
16
+
17
+ # Check if Alertmanager API is accessible
18
+ if curl -s -o /dev/null -w "%{http_code}" http://alertmanager:9093/-/healthy 2>/dev/null | grep -q "200"; then
19
+ echo "✓ Alertmanager API is accessible"
20
+ else
21
+ echo "⚠️ Alertmanager API not responding yet (may still be starting)"
22
+ fi
23
+
24
+ # Final result
25
+ if [ "$ALL_CHECKS_PASSED" = true ]; then
26
+ echo "✓ All critical checks passed"
27
+ exit 0
28
+ else
29
+ echo "✗ Some checks failed"
30
+ exit 1
31
+ fi
@@ -0,0 +1,473 @@
1
+ # AWS CLI Overlay
2
+
3
+ AWS Command Line Interface for managing Amazon Web Services from your development container.
4
+
5
+ ## Features
6
+
7
+ - **AWS CLI v2** - Latest AWS command-line interface
8
+ - **Pre-configured** - Ready to use with your AWS credentials
9
+ - **Multi-service support** - Manage EC2, S3, Lambda, RDS, and 200+ AWS services
10
+ - **JSON/YAML output** - Flexible output formats for scripting
11
+ - **Auto-completion** - Command completion for faster workflows
12
+
13
+ ## Authentication
14
+
15
+ ### Interactive Login (SSO)
16
+
17
+ For organizations using AWS IAM Identity Center (formerly AWS SSO):
18
+
19
+ ```bash
20
+ # Configure SSO profile
21
+ aws configure sso
22
+
23
+ # Login with SSO
24
+ aws sso login --profile my-profile
25
+
26
+ # Set as default profile
27
+ export AWS_PROFILE=my-profile
28
+ ```
29
+
30
+ ### Access Keys (IAM User)
31
+
32
+ ```bash
33
+ # Configure credentials interactively
34
+ aws configure
35
+
36
+ # Or set via environment variables
37
+ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
38
+ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
39
+ export AWS_DEFAULT_REGION=us-east-1
40
+ ```
41
+
42
+ ### Credential Files
43
+
44
+ Create `~/.aws/credentials`:
45
+
46
+ ```ini
47
+ [default]
48
+ aws_access_key_id = AKIAIOSFODNN7EXAMPLE
49
+ aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
50
+
51
+ [dev]
52
+ aws_access_key_id = AKIAIOSFODNN7EXAMPLE
53
+ aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
54
+ ```
55
+
56
+ Create `~/.aws/config`:
57
+
58
+ ```ini
59
+ [default]
60
+ region = us-east-1
61
+ output = json
62
+
63
+ [profile dev]
64
+ region = us-west-2
65
+ output = yaml
66
+ ```
67
+
68
+ ### Instance/Container Roles
69
+
70
+ When running in EC2 or ECS, credentials are automatically provided by the instance metadata service.
71
+
72
+ ```bash
73
+ # Verify credentials
74
+ aws sts get-caller-identity
75
+ ```
76
+
77
+ ## Common Commands
78
+
79
+ ### Identity and Access Management (IAM)
80
+
81
+ ```bash
82
+ # Get current identity
83
+ aws sts get-caller-identity
84
+
85
+ # List IAM users
86
+ aws iam list-users
87
+
88
+ # Create IAM user
89
+ aws iam create-user --user-name john-doe
90
+
91
+ # Attach policy to user
92
+ aws iam attach-user-policy \
93
+ --user-name john-doe \
94
+ --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess
95
+ ```
96
+
97
+ ### S3 (Simple Storage Service)
98
+
99
+ ```bash
100
+ # List buckets
101
+ aws s3 ls
102
+
103
+ # Create bucket
104
+ aws s3 mb s3://my-unique-bucket-name
105
+
106
+ # Upload file
107
+ aws s3 cp file.txt s3://my-bucket/
108
+
109
+ # Download file
110
+ aws s3 cp s3://my-bucket/file.txt ./
111
+
112
+ # Sync directory
113
+ aws s3 sync ./local-dir s3://my-bucket/remote-dir
114
+
115
+ # Delete bucket (must be empty)
116
+ aws s3 rb s3://my-bucket
117
+ ```
118
+
119
+ ### EC2 (Elastic Compute Cloud)
120
+
121
+ ```bash
122
+ # List instances
123
+ aws ec2 describe-instances
124
+
125
+ # List instances with query filter
126
+ aws ec2 describe-instances \
127
+ --query 'Reservations[*].Instances[*].[InstanceId,State.Name,InstanceType]' \
128
+ --output table
129
+
130
+ # Start instance
131
+ aws ec2 start-instances --instance-ids i-1234567890abcdef0
132
+
133
+ # Stop instance
134
+ aws ec2 stop-instances --instance-ids i-1234567890abcdef0
135
+
136
+ # Create key pair
137
+ aws ec2 create-key-pair --key-name MyKeyPair --query 'KeyMaterial' --output text > MyKeyPair.pem
138
+ chmod 400 MyKeyPair.pem
139
+ ```
140
+
141
+ ### Lambda
142
+
143
+ ```bash
144
+ # List functions
145
+ aws lambda list-functions
146
+
147
+ # Invoke function
148
+ aws lambda invoke \
149
+ --function-name my-function \
150
+ --payload '{"key":"value"}' \
151
+ response.json
152
+
153
+ # Update function code
154
+ aws lambda update-function-code \
155
+ --function-name my-function \
156
+ --zip-file fileb://function.zip
157
+
158
+ # Get function configuration
159
+ aws lambda get-function-configuration --function-name my-function
160
+ ```
161
+
162
+ ### CloudFormation
163
+
164
+ ```bash
165
+ # List stacks
166
+ aws cloudformation list-stacks
167
+
168
+ # Create stack
169
+ aws cloudformation create-stack \
170
+ --stack-name my-stack \
171
+ --template-body file://template.yaml \
172
+ --parameters ParameterKey=KeyName,ParameterValue=MyKey
173
+
174
+ # Update stack
175
+ aws cloudformation update-stack \
176
+ --stack-name my-stack \
177
+ --template-body file://template.yaml
178
+
179
+ # Delete stack
180
+ aws cloudformation delete-stack --stack-name my-stack
181
+
182
+ # Describe stack events
183
+ aws cloudformation describe-stack-events --stack-name my-stack
184
+ ```
185
+
186
+ ### RDS (Relational Database Service)
187
+
188
+ ```bash
189
+ # List database instances
190
+ aws rds describe-db-instances
191
+
192
+ # Create database instance
193
+ aws rds create-db-instance \
194
+ --db-instance-identifier mydb \
195
+ --db-instance-class db.t3.micro \
196
+ --engine postgres \
197
+ --master-username admin \
198
+ --master-user-password MyPassword123 \
199
+ --allocated-storage 20
200
+
201
+ # Modify database instance
202
+ aws rds modify-db-instance \
203
+ --db-instance-identifier mydb \
204
+ --allocated-storage 30 \
205
+ --apply-immediately
206
+ ```
207
+
208
+ ### ECS (Elastic Container Service)
209
+
210
+ ```bash
211
+ # List clusters
212
+ aws ecs list-clusters
213
+
214
+ # List services
215
+ aws ecs list-services --cluster my-cluster
216
+
217
+ # Describe service
218
+ aws ecs describe-services \
219
+ --cluster my-cluster \
220
+ --services my-service
221
+
222
+ # Update service (e.g., force new deployment)
223
+ aws ecs update-service \
224
+ --cluster my-cluster \
225
+ --service my-service \
226
+ --force-new-deployment
227
+ ```
228
+
229
+ ## Configuration
230
+
231
+ ### Named Profiles
232
+
233
+ ```bash
234
+ # Use specific profile
235
+ aws s3 ls --profile dev
236
+
237
+ # Set default profile for session
238
+ export AWS_PROFILE=dev
239
+
240
+ # Configure new profile
241
+ aws configure --profile prod
242
+ ```
243
+
244
+ ### Output Formats
245
+
246
+ ```bash
247
+ # JSON (default)
248
+ aws ec2 describe-instances --output json
249
+
250
+ # YAML
251
+ aws ec2 describe-instances --output yaml
252
+
253
+ # Table
254
+ aws ec2 describe-instances --output table
255
+
256
+ # Text (for scripting)
257
+ aws ec2 describe-instances --output text
258
+ ```
259
+
260
+ ### Query Filtering
261
+
262
+ ```bash
263
+ # JMESPath query examples
264
+ aws ec2 describe-instances \
265
+ --query 'Reservations[*].Instances[*].[InstanceId,State.Name]'
266
+
267
+ # Filter by tag
268
+ aws ec2 describe-instances \
269
+ --filters "Name=tag:Environment,Values=production" \
270
+ --query 'Reservations[*].Instances[*].[InstanceId,Tags[?Key==`Name`].Value|[0]]'
271
+ ```
272
+
273
+ ## Use Cases
274
+
275
+ ### Infrastructure Management
276
+
277
+ - Launch and manage EC2 instances
278
+ - Configure load balancers and auto-scaling
279
+ - Manage VPCs and security groups
280
+
281
+ ### Application Deployment
282
+
283
+ - Deploy Lambda functions
284
+ - Update ECS services
285
+ - Manage CloudFormation stacks
286
+
287
+ ### Data Management
288
+
289
+ - Upload/download files to S3
290
+ - Backup RDS databases
291
+ - Manage DynamoDB tables
292
+
293
+ ### CI/CD Integration
294
+
295
+ - Automated deployments
296
+ - Infrastructure provisioning
297
+ - Credential management in pipelines
298
+
299
+ ## Credential Management
300
+
301
+ ### Security Best Practices
302
+
303
+ ⚠️ **Never commit AWS credentials to version control**
304
+
305
+ **Secure Methods:**
306
+
307
+ 1. **Environment Variables** - Set in `.env` (excluded from git)
308
+
309
+ ```bash
310
+ AWS_ACCESS_KEY_ID=xxxxx
311
+ AWS_SECRET_ACCESS_KEY=xxxxx
312
+ AWS_DEFAULT_REGION=us-east-1
313
+ ```
314
+
315
+ 2. **AWS SSO** - Use for organizational accounts
316
+
317
+ ```bash
318
+ aws configure sso
319
+ aws sso login
320
+ ```
321
+
322
+ 3. **IAM Roles** - Use when running in AWS (EC2, ECS, Lambda)
323
+ - No credentials needed
324
+ - Automatically rotated
325
+
326
+ 4. **AWS Vault** - Secure credential storage
327
+ ```bash
328
+ aws-vault exec dev -- aws s3 ls
329
+ ```
330
+
331
+ ### Least Privilege
332
+
333
+ Always grant minimum required permissions:
334
+
335
+ ```json
336
+ {
337
+ "Version": "2012-10-17",
338
+ "Statement": [
339
+ {
340
+ "Effect": "Allow",
341
+ "Action": ["s3:GetObject", "s3:PutObject"],
342
+ "Resource": "arn:aws:s3:::my-bucket/*"
343
+ }
344
+ ]
345
+ }
346
+ ```
347
+
348
+ ### MFA (Multi-Factor Authentication)
349
+
350
+ For enhanced security with temporary credentials:
351
+
352
+ ```bash
353
+ # Get session token with MFA
354
+ aws sts get-session-token \
355
+ --serial-number arn:aws:iam::123456789012:mfa/user \
356
+ --token-code 123456
357
+
358
+ # Use temporary credentials
359
+ export AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE
360
+ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
361
+ export AWS_SESSION_TOKEN=FwoGZXIvYXdzEBYaD...
362
+ ```
363
+
364
+ ## Troubleshooting
365
+
366
+ ### aws command not found
367
+
368
+ Rebuild container:
369
+
370
+ - **VS Code:** `Cmd+Shift+P` → "Dev Containers: Rebuild Container"
371
+
372
+ ### Invalid credentials
373
+
374
+ ```bash
375
+ # Verify credentials are set
376
+ aws sts get-caller-identity
377
+
378
+ # Check credential configuration
379
+ cat ~/.aws/credentials
380
+ cat ~/.aws/config
381
+
382
+ # Re-configure
383
+ aws configure
384
+ ```
385
+
386
+ ### Region errors
387
+
388
+ ```bash
389
+ # Set default region
390
+ export AWS_DEFAULT_REGION=us-east-1
391
+
392
+ # Or specify in each command
393
+ aws s3 ls --region us-west-2
394
+ ```
395
+
396
+ ### Permission denied errors
397
+
398
+ ```bash
399
+ # Check what actions you're allowed to perform
400
+ aws iam get-user
401
+
402
+ # Review attached policies
403
+ aws iam list-attached-user-policies --user-name your-username
404
+ ```
405
+
406
+ ### Rate limiting
407
+
408
+ AWS API has rate limits. Use pagination and delays:
409
+
410
+ ```bash
411
+ # Paginate results
412
+ aws s3api list-objects-v2 \
413
+ --bucket my-bucket \
414
+ --max-items 100 \
415
+ --starting-token <token-from-previous-call>
416
+
417
+ # Add delay between calls in scripts
418
+ sleep 1
419
+ ```
420
+
421
+ ## CLI Configuration Tips
422
+
423
+ ### Enable Auto-completion
424
+
425
+ ```bash
426
+ # For bash
427
+ complete -C '/usr/local/bin/aws_completer' aws
428
+
429
+ # For zsh (add to ~/.zshrc)
430
+ autoload bashcompinit && bashcompinit
431
+ complete -C '/usr/local/bin/aws_completer' aws
432
+ ```
433
+
434
+ ### Useful Aliases
435
+
436
+ Add to `.bashrc` or `.zshrc`:
437
+
438
+ ```bash
439
+ alias awswho='aws sts get-caller-identity'
440
+ alias awsregions='aws ec2 describe-regions --output table'
441
+ alias awsprofile='echo $AWS_PROFILE'
442
+ ```
443
+
444
+ ### Default Settings
445
+
446
+ Set CLI defaults in `~/.aws/config`:
447
+
448
+ ```ini
449
+ [default]
450
+ region = us-east-1
451
+ output = json
452
+ cli_pager =
453
+
454
+ [profile dev]
455
+ region = us-west-2
456
+ output = yaml
457
+ ```
458
+
459
+ ## Related Overlays
460
+
461
+ - **terraform** - Infrastructure as Code for AWS resources
462
+ - **pulumi** - Modern IaC using TypeScript/Python/Go
463
+ - **kubectl-helm** - For EKS (Elastic Kubernetes Service) management
464
+ - **nodejs/python/dotnet** - For Lambda function development
465
+ - **docker-sock/docker-in-docker** - For ECS container development
466
+
467
+ ## Additional Resources
468
+
469
+ - [AWS CLI Documentation](https://docs.aws.amazon.com/cli/)
470
+ - [AWS CLI Command Reference](https://awscli.amazonaws.com/v2/documentation/api/latest/index.html)
471
+ - [AWS CLI Configuration Guide](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
472
+ - [AWS Security Best Practices](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)
473
+ - [JMESPath Tutorial](https://jmespath.org/tutorial.html) - For query filtering
@@ -0,0 +1,13 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
3
+ "features": {
4
+ "ghcr.io/devcontainers/features/aws-cli:1": {
5
+ "version": "latest"
6
+ }
7
+ },
8
+ "customizations": {
9
+ "vscode": {
10
+ "extensions": ["amazonwebservices.aws-toolkit-vscode"]
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,13 @@
1
+ id: aws-cli
2
+ name: AWS CLI
3
+ description: Amazon Web Services command-line tools
4
+ category: cloud
5
+ supports: []
6
+ requires: []
7
+ suggests: []
8
+ conflicts: []
9
+ tags:
10
+ - cloud
11
+ - aws
12
+ - cli
13
+ ports: []