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,389 @@
1
+ # Terraform Overlay
2
+
3
+ Adds Terraform CLI with HashiCorp language server and linting for Infrastructure as Code.
4
+
5
+ ## Features
6
+
7
+ - **Terraform CLI** - Latest version of Terraform/OpenTofu
8
+ - **tflint** - Terraform linter for best practices
9
+ - **VS Code Extension:** HashiCorp Terraform (hashicorp.terraform)
10
+ - Syntax highlighting
11
+ - Terraform language server (terraform-ls)
12
+ - IntelliSense and autocomplete
13
+ - Validation and formatting
14
+
15
+ ## Getting Started
16
+
17
+ ### Initialize Terraform
18
+
19
+ ```bash
20
+ # Create main.tf
21
+ cat > main.tf << 'EOF'
22
+ terraform {
23
+ required_version = ">= 1.0"
24
+ required_providers {
25
+ aws = {
26
+ source = "hashicorp/aws"
27
+ version = "~> 5.0"
28
+ }
29
+ }
30
+ }
31
+
32
+ provider "aws" {
33
+ region = "us-east-1"
34
+ }
35
+ EOF
36
+
37
+ # Initialize
38
+ terraform init
39
+ ```
40
+
41
+ ### Basic Commands
42
+
43
+ ```bash
44
+ # Format code
45
+ terraform fmt
46
+
47
+ # Validate configuration
48
+ terraform validate
49
+
50
+ # Plan changes
51
+ terraform plan
52
+
53
+ # Apply changes
54
+ terraform apply
55
+
56
+ # Destroy resources
57
+ terraform destroy
58
+ ```
59
+
60
+ ## Backend Configuration
61
+
62
+ ### Local Backend (Default)
63
+
64
+ ```hcl
65
+ # No configuration needed - state stored in terraform.tfstate
66
+ ```
67
+
68
+ ### S3 Backend (AWS)
69
+
70
+ ```hcl
71
+ terraform {
72
+ backend "s3" {
73
+ bucket = "my-terraform-state"
74
+ key = "project/terraform.tfstate"
75
+ region = "us-east-1"
76
+ encrypt = true
77
+ dynamodb_table = "terraform-locks"
78
+ }
79
+ }
80
+ ```
81
+
82
+ **Initialize with backend:**
83
+
84
+ ```bash
85
+ terraform init
86
+ ```
87
+
88
+ ### GCS Backend (Google Cloud)
89
+
90
+ ```hcl
91
+ terraform {
92
+ backend "gcs" {
93
+ bucket = "my-terraform-state"
94
+ prefix = "project"
95
+ }
96
+ }
97
+ ```
98
+
99
+ ### Azure Blob Storage Backend
100
+
101
+ ```hcl
102
+ terraform {
103
+ backend "azurerm" {
104
+ resource_group_name = "tfstate-rg"
105
+ storage_account_name = "tfstatestore"
106
+ container_name = "tfstate"
107
+ key = "project.terraform.tfstate"
108
+ }
109
+ }
110
+ ```
111
+
112
+ ### Terraform Cloud
113
+
114
+ ```hcl
115
+ terraform {
116
+ cloud {
117
+ organization = "my-org"
118
+
119
+ workspaces {
120
+ name = "my-workspace"
121
+ }
122
+ }
123
+ }
124
+ ```
125
+
126
+ **Authenticate:**
127
+
128
+ ```bash
129
+ terraform login
130
+ ```
131
+
132
+ ## Provider Configuration
133
+
134
+ ### AWS
135
+
136
+ ```hcl
137
+ provider "aws" {
138
+ region = var.aws_region
139
+
140
+ # Optional: Profile from ~/.aws/credentials
141
+ profile = "default"
142
+
143
+ # Optional: Assume role
144
+ assume_role {
145
+ role_arn = "arn:aws:iam::ACCOUNT_ID:role/TerraformRole"
146
+ }
147
+ }
148
+ ```
149
+
150
+ **Authentication:**
151
+
152
+ - Environment variables: `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`
153
+ - AWS CLI profile (recommended)
154
+ - IAM role (for EC2/ECS)
155
+
156
+ ### Google Cloud
157
+
158
+ ```hcl
159
+ provider "google" {
160
+ project = var.project_id
161
+ region = var.region
162
+
163
+ # Optional: Service account
164
+ credentials = file("service-account-key.json")
165
+ }
166
+ ```
167
+
168
+ **Authentication:**
169
+
170
+ - `GOOGLE_APPLICATION_CREDENTIALS` environment variable
171
+ - `gcloud auth application-default login`
172
+ - Service account key file
173
+
174
+ ### Azure
175
+
176
+ ```hcl
177
+ provider "azurerm" {
178
+ features {}
179
+
180
+ subscription_id = var.subscription_id
181
+ }
182
+ ```
183
+
184
+ **Authentication:**
185
+
186
+ - `az login`
187
+ - Service principal
188
+ - Managed identity (for Azure VMs)
189
+
190
+ ## Secret Management
191
+
192
+ ### Environment Variables
193
+
194
+ ```bash
195
+ # Export secrets (add to .env, never commit)
196
+ export AWS_ACCESS_KEY_ID="..."
197
+ export AWS_SECRET_ACCESS_KEY="..."
198
+ export TF_VAR_db_password="secret123"
199
+ ```
200
+
201
+ ### Variable Files
202
+
203
+ **variables.tf:**
204
+
205
+ ```hcl
206
+ variable "db_password" {
207
+ description = "Database password"
208
+ type = string
209
+ sensitive = true
210
+ }
211
+ ```
212
+
213
+ **terraform.tfvars** (add to .gitignore):
214
+
215
+ ```hcl
216
+ db_password = "secret123"
217
+ ```
218
+
219
+ ### External Secret Stores
220
+
221
+ ```hcl
222
+ # AWS Secrets Manager
223
+ data "aws_secretsmanager_secret_version" "db_password" {
224
+ secret_id = "prod/db/password"
225
+ }
226
+
227
+ resource "aws_db_instance" "example" {
228
+ password = data.aws_secretsmanager_secret_version.db_password.secret_string
229
+ }
230
+ ```
231
+
232
+ ## Common Workflows
233
+
234
+ ### Multi-Environment Setup
235
+
236
+ **Directory structure:**
237
+
238
+ ```
239
+ terraform/
240
+ ├── modules/
241
+ │ └── vpc/
242
+ │ ├── main.tf
243
+ │ ├── variables.tf
244
+ │ └── outputs.tf
245
+ ├── environments/
246
+ │ ├── dev/
247
+ │ │ ├── main.tf
248
+ │ │ └── terraform.tfvars
249
+ │ └── prod/
250
+ │ ├── main.tf
251
+ │ └── terraform.tfvars
252
+ ```
253
+
254
+ **Using modules:**
255
+
256
+ ```hcl
257
+ module "vpc" {
258
+ source = "../../modules/vpc"
259
+
260
+ environment = "dev"
261
+ cidr_block = "10.0.0.0/16"
262
+ }
263
+ ```
264
+
265
+ ### Linting with tflint
266
+
267
+ ```bash
268
+ # Initialize tflint
269
+ tflint --init
270
+
271
+ # Run linter
272
+ tflint
273
+
274
+ # With AWS rules
275
+ tflint --enable-rule=terraform_deprecated_syntax
276
+ ```
277
+
278
+ ### Format and Validate
279
+
280
+ ```bash
281
+ # Format all .tf files recursively
282
+ terraform fmt -recursive
283
+
284
+ # Validate configuration
285
+ terraform validate
286
+
287
+ # Check for security issues (requires external tool)
288
+ # tfsec .
289
+ ```
290
+
291
+ ## Best Practices
292
+
293
+ 1. **Use remote state** - Collaborate safely with team
294
+ 2. **Enable state locking** - Prevent concurrent modifications
295
+ 3. **Encrypt state** - Protect sensitive data
296
+ 4. **Use modules** - Reusable, maintainable code
297
+ 5. **Pin provider versions** - Avoid breaking changes
298
+ 6. **Separate environments** - Use workspaces or directories
299
+ 7. **Use .gitignore** - Exclude `.terraform/`, `*.tfstate`, `*.tfvars`
300
+ 8. **Variables for secrets** - Never hardcode credentials
301
+ 9. **Run `terraform plan`** - Always review before apply
302
+ 10. **Use `terraform-docs`** - Auto-generate documentation
303
+
304
+ ## Example .gitignore
305
+
306
+ ```gitignore
307
+ # Terraform files
308
+ .terraform/
309
+ *.tfstate
310
+ *.tfstate.*
311
+ .terraform.lock.hcl
312
+ terraform.tfvars
313
+ override.tf
314
+ override.tf.json
315
+
316
+ # Crash logs
317
+ crash.log
318
+ crash.*.log
319
+
320
+ # Secrets
321
+ *.pem
322
+ *.key
323
+ service-account*.json
324
+ ```
325
+
326
+ ## Troubleshooting
327
+
328
+ ### terraform command not found
329
+
330
+ Rebuild container:
331
+
332
+ - **VS Code:** `Cmd+Shift+P` → "Dev Containers: Rebuild Container"
333
+
334
+ ### State lock errors
335
+
336
+ ```bash
337
+ # Force unlock (use with caution)
338
+ terraform force-unlock LOCK_ID
339
+ ```
340
+
341
+ ### Provider authentication issues
342
+
343
+ ```bash
344
+ # AWS
345
+ aws sts get-caller-identity
346
+
347
+ # GCP
348
+ gcloud auth application-default print-access-token
349
+
350
+ # Azure
351
+ az account show
352
+ ```
353
+
354
+ ### Backend initialization
355
+
356
+ ```bash
357
+ # Reconfigure backend
358
+ terraform init -reconfigure
359
+
360
+ # Migrate state
361
+ terraform init -migrate-state
362
+ ```
363
+
364
+ ## OpenTofu Alternative
365
+
366
+ To use OpenTofu (open-source Terraform fork):
367
+
368
+ 1. Update `devcontainer.patch.json`:
369
+
370
+ ```json
371
+ {
372
+ "features": {
373
+ "ghcr.io/devcontainers/features/terraform:1": {
374
+ "version": "latest",
375
+ "installOpenTofu": true
376
+ }
377
+ }
378
+ }
379
+ ```
380
+
381
+ 2. Use `tofu` command instead of `terraform`
382
+
383
+ ## Related Overlays
384
+
385
+ - **aws-cli** - AWS resource management
386
+ - **gcloud** - Google Cloud resource management
387
+ - **azure-cli** - Azure resource management
388
+ - **kubectl-helm** - Kubernetes deployments
389
+ - **pulumi** - Alternative IaC tool with programming languages
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
3
+ "features": {
4
+ "ghcr.io/devcontainers/features/terraform:1": {
5
+ "version": "latest",
6
+ "tflint": "latest",
7
+ "terragrunt": "none"
8
+ }
9
+ },
10
+ "customizations": {
11
+ "vscode": {
12
+ "extensions": ["hashicorp.terraform"]
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,14 @@
1
+ id: terraform
2
+ name: Terraform
3
+ description: Infrastructure as Code with HCL (includes tflint)
4
+ category: cloud
5
+ supports: []
6
+ requires: []
7
+ suggests: []
8
+ conflicts: []
9
+ tags:
10
+ - cloud
11
+ - iac
12
+ - terraform
13
+ - infrastructure
14
+ ports: []
@@ -0,0 +1,63 @@
1
+ #!/bin/bash
2
+ # Verification script for Terraform overlay
3
+ # Confirms Terraform and tflint are installed
4
+
5
+ set -e
6
+
7
+ # Cleanup on exit
8
+ cleanup() {
9
+ if [ -n "$TEMP_DIR" ] && [ -d "$TEMP_DIR" ]; then
10
+ rm -rf "$TEMP_DIR"
11
+ fi
12
+ }
13
+ trap cleanup EXIT
14
+
15
+ echo "🔍 Verifying Terraform overlay..."
16
+ echo ""
17
+
18
+ # Check terraform is installed
19
+ echo "1️⃣ Checking Terraform CLI..."
20
+ if command -v terraform &> /dev/null; then
21
+ terraform version | head -1
22
+ echo " ✅ Terraform CLI found"
23
+ else
24
+ echo " ❌ Terraform CLI not found"
25
+ exit 1
26
+ fi
27
+
28
+ # Check tflint is installed
29
+ echo ""
30
+ echo "2️⃣ Checking tflint..."
31
+ if command -v tflint &> /dev/null; then
32
+ tflint --version
33
+ echo " ✅ tflint found"
34
+ else
35
+ echo " ❌ tflint not found"
36
+ exit 1
37
+ fi
38
+
39
+ # Test basic terraform functionality
40
+ echo ""
41
+ echo "3️⃣ Testing Terraform functionality..."
42
+ TEMP_DIR=$(mktemp -d)
43
+ cd "$TEMP_DIR"
44
+
45
+ cat > main.tf << 'EOF'
46
+ terraform {
47
+ required_version = ">= 1.0"
48
+ }
49
+
50
+ output "test" {
51
+ value = "Terraform working"
52
+ }
53
+ EOF
54
+
55
+ if terraform init > /dev/null 2>&1 && terraform validate > /dev/null 2>&1; then
56
+ echo " ✅ Terraform init and validate successful"
57
+ else
58
+ echo " ❌ Terraform init/validate failed"
59
+ exit 1
60
+ fi
61
+
62
+ echo ""
63
+ echo "✅ Terraform overlay verification complete"
package/package.json ADDED
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "container-superposition",
3
+ "version": "0.1.1",
4
+ "description": "Solution-ready devcontainer templates and features with guided initialization",
5
+ "type": "module",
6
+ "main": "dist/scripts/init.js",
7
+ "bin": {
8
+ "container-superposition": "./dist/scripts/init.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "init": "tsx scripts/init.ts",
13
+ "init:build": "npm run build && node dist/scripts/init.js",
14
+ "test": "vitest run",
15
+ "test:watch": "vitest",
16
+ "test:smoke": "bash scripts/test.sh",
17
+ "docs:generate": "tsx docs/generate-docs.ts",
18
+ "format": "prettier --write \"**/*.{ts,js,json,md,yaml,yml}\"",
19
+ "format:check": "prettier --check \"**/*.{ts,js,json,md,yaml,yml}\"",
20
+ "clean": "rm -rf dist",
21
+ "prepublishOnly": "npm run build"
22
+ },
23
+ "keywords": [
24
+ "devcontainer",
25
+ "development-containers",
26
+ "docker",
27
+ "vscode",
28
+ "codespaces",
29
+ "templates",
30
+ "scaffolding"
31
+ ],
32
+ "author": "veggerby",
33
+ "license": "MIT",
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "https://github.com/veggerby/container-superposition.git"
37
+ },
38
+ "files": [
39
+ "dist/",
40
+ "templates/",
41
+ "features/",
42
+ "overlays/",
43
+ "tool/**/*.json",
44
+ "tool/**/*.yml",
45
+ "tool/**/*.yaml",
46
+ "tool/**/README.md",
47
+ "docs/**/*.md",
48
+ "!docs/generate-docs.ts",
49
+ "!**/*.tgz",
50
+ "README.md",
51
+ "LICENSE"
52
+ ],
53
+ "dependencies": {
54
+ "@inquirer/checkbox": "^5.0.4",
55
+ "@inquirer/prompts": "^8.2.0",
56
+ "boxen": "^7.1.1",
57
+ "chalk": "^5.6.2",
58
+ "commander": "^12.1.0",
59
+ "js-yaml": "^4.1.1",
60
+ "ora": "^8.2.0"
61
+ },
62
+ "devDependencies": {
63
+ "@types/js-yaml": "^4.0.9",
64
+ "@types/node": "^20.19.33",
65
+ "@vitest/ui": "^4.0.18",
66
+ "prettier": "^3.4.2",
67
+ "tsx": "^4.7.0",
68
+ "typescript": "^5.3.3",
69
+ "vitest": "^4.0.18"
70
+ },
71
+ "engines": {
72
+ "node": ">=20.0.0"
73
+ }
74
+ }