@intentius/chant-lexicon-terraform 0.101.0 → 0.104.0
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/dist/__fixtures__/terragrunt/affected-cases.d.ts +23 -0
- package/dist/__fixtures__/terragrunt/affected-cases.d.ts.map +1 -0
- package/dist/__fixtures__/terragrunt/record.d.ts +17 -0
- package/dist/__fixtures__/terragrunt/record.d.ts.map +1 -0
- package/dist/change-set.d.ts +67 -0
- package/dist/change-set.d.ts.map +1 -0
- package/dist/changed-roots.d.ts +30 -0
- package/dist/changed-roots.d.ts.map +1 -0
- package/dist/codegen/package.d.ts +1 -1
- package/dist/commands.d.ts +26 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/components/capability-plugin.d.ts +54 -0
- package/dist/components/capability-plugin.d.ts.map +1 -0
- package/dist/composites/terraform-pin-rollout-op.d.ts +44 -0
- package/dist/composites/terraform-pin-rollout-op.d.ts.map +1 -0
- package/dist/config.d.ts +3 -3
- package/dist/hcl/descend.d.ts +1 -1
- package/dist/hcl/descend.d.ts.map +1 -1
- package/dist/hcl/edges.d.ts +2 -2
- package/dist/hcl/edges.d.ts.map +1 -1
- package/dist/hcl/jsonencode.d.ts +106 -0
- package/dist/hcl/jsonencode.d.ts.map +1 -0
- package/dist/hcl/marker.d.ts.map +1 -1
- package/dist/hcl/parse.d.ts +29 -1
- package/dist/hcl/parse.d.ts.map +1 -1
- package/dist/hcl/roots.d.ts +1 -1
- package/dist/hcl/roots.d.ts.map +1 -1
- package/dist/hcl/suppressions.d.ts.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/integrity.json +22 -4
- package/dist/lint/audit-catalog.d.ts.map +1 -1
- package/dist/lint/audit-lineage.d.ts +1 -1
- package/dist/lint/audit-lineage.d.ts.map +1 -1
- package/dist/lint/post-synth/flat-attributes.d.ts +69 -0
- package/dist/lint/post-synth/flat-attributes.d.ts.map +1 -0
- package/dist/lint/post-synth/index.d.ts.map +1 -1
- package/dist/lint/post-synth/module-source.d.ts +27 -1
- package/dist/lint/post-synth/module-source.d.ts.map +1 -1
- package/dist/lint/post-synth/terragrunt.d.ts +37 -0
- package/dist/lint/post-synth/terragrunt.d.ts.map +1 -0
- package/dist/lint/post-synth/tf002.d.ts +3 -1
- package/dist/lint/post-synth/tf002.d.ts.map +1 -1
- package/dist/lint/post-synth/tf030.d.ts +51 -0
- package/dist/lint/post-synth/tf030.d.ts.map +1 -0
- package/dist/lint/post-synth/tf031.d.ts +55 -0
- package/dist/lint/post-synth/tf031.d.ts.map +1 -0
- package/dist/lint/post-synth/tf032.d.ts +71 -0
- package/dist/lint/post-synth/tf032.d.ts.map +1 -0
- package/dist/lint/post-synth/tf033.d.ts +50 -0
- package/dist/lint/post-synth/tf033.d.ts.map +1 -0
- package/dist/lint/post-synth/tf034.d.ts +25 -0
- package/dist/lint/post-synth/tf034.d.ts.map +1 -0
- package/dist/lint/post-synth/tf035.d.ts +33 -0
- package/dist/lint/post-synth/tf035.d.ts.map +1 -0
- package/dist/lint/post-synth/tf036.d.ts +33 -0
- package/dist/lint/post-synth/tf036.d.ts.map +1 -0
- package/dist/lint/post-synth/tf037.d.ts +31 -0
- package/dist/lint/post-synth/tf037.d.ts.map +1 -0
- package/dist/lint/post-synth/tf038.d.ts +22 -0
- package/dist/lint/post-synth/tf038.d.ts.map +1 -0
- package/dist/lint/post-synth/tf039.d.ts +23 -0
- package/dist/lint/post-synth/tf039.d.ts.map +1 -0
- package/dist/lint/post-synth/tf040.d.ts +30 -0
- package/dist/lint/post-synth/tf040.d.ts.map +1 -0
- package/dist/lint/post-synth/tf041.d.ts +20 -0
- package/dist/lint/post-synth/tf041.d.ts.map +1 -0
- package/dist/lint/post-synth/tf042.d.ts +18 -0
- package/dist/lint/post-synth/tf042.d.ts.map +1 -0
- package/dist/lint/post-synth/tf043.d.ts +17 -0
- package/dist/lint/post-synth/tf043.d.ts.map +1 -0
- package/dist/lint/post-synth/tf044.d.ts +17 -0
- package/dist/lint/post-synth/tf044.d.ts.map +1 -0
- package/dist/lint/post-synth/tf045.d.ts +22 -0
- package/dist/lint/post-synth/tf045.d.ts.map +1 -0
- package/dist/manifest.json +1 -1
- package/dist/okf/index.md +16 -0
- package/dist/okf/rules/TF030.md +11 -0
- package/dist/okf/rules/TF031.md +11 -0
- package/dist/okf/rules/TF032.md +11 -0
- package/dist/okf/rules/TF033.md +11 -0
- package/dist/okf/rules/TF034.md +11 -0
- package/dist/okf/rules/TF035.md +11 -0
- package/dist/okf/rules/TF036.md +11 -0
- package/dist/okf/rules/TF037.md +11 -0
- package/dist/okf/rules/TF038.md +11 -0
- package/dist/okf/rules/TF039.md +11 -0
- package/dist/okf/rules/TF040.md +11 -0
- package/dist/okf/rules/TF041.md +11 -0
- package/dist/okf/rules/TF042.md +11 -0
- package/dist/okf/rules/TF043.md +11 -0
- package/dist/okf/rules/TF044.md +11 -0
- package/dist/okf/rules/TF045.md +11 -0
- package/dist/op/activities/index.d.ts +4 -0
- package/dist/op/activities/index.d.ts.map +1 -1
- package/dist/op/activities/pin-rollout.d.ts +46 -0
- package/dist/op/activities/pin-rollout.d.ts.map +1 -0
- package/dist/op/activities/terraform.d.ts +24 -50
- package/dist/op/activities/terraform.d.ts.map +1 -1
- package/dist/op/activity-contracts.d.ts +66 -18
- package/dist/op/activity-contracts.d.ts.map +1 -1
- package/dist/op/builders.d.ts +9 -0
- package/dist/op/builders.d.ts.map +1 -1
- package/dist/pin/edit-ts.d.ts +21 -0
- package/dist/pin/edit-ts.d.ts.map +1 -0
- package/dist/pin/edit.d.ts +52 -0
- package/dist/pin/edit.d.ts.map +1 -0
- package/dist/pin/forge.d.ts +39 -0
- package/dist/pin/forge.d.ts.map +1 -0
- package/dist/pin/index.d.ts +22 -0
- package/dist/pin/index.d.ts.map +1 -0
- package/dist/pin/rollout.d.ts +116 -0
- package/dist/pin/rollout.d.ts.map +1 -0
- package/dist/pin/scan.d.ts +54 -0
- package/dist/pin/scan.d.ts.map +1 -0
- package/dist/pin/source.d.ts +93 -0
- package/dist/pin/source.d.ts.map +1 -0
- package/dist/pin/waves.d.ts +66 -0
- package/dist/pin/waves.d.ts.map +1 -0
- package/dist/plan-digest.d.ts +59 -0
- package/dist/plan-digest.d.ts.map +1 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/rules/flat-attributes.ts +146 -0
- package/dist/rules/module-source.ts +56 -1
- package/dist/rules/terragrunt.ts +76 -0
- package/dist/rules/tf002.ts +1 -1
- package/dist/rules/tf030.ts +290 -0
- package/dist/rules/tf031.ts +370 -0
- package/dist/rules/tf032.ts +226 -0
- package/dist/rules/tf033.ts +160 -0
- package/dist/rules/tf034.ts +63 -0
- package/dist/rules/tf035.ts +74 -0
- package/dist/rules/tf036.ts +119 -0
- package/dist/rules/tf037.ts +101 -0
- package/dist/rules/tf038.ts +71 -0
- package/dist/rules/tf039.ts +64 -0
- package/dist/rules/tf040.ts +76 -0
- package/dist/rules/tf041.ts +56 -0
- package/dist/rules/tf042.ts +42 -0
- package/dist/rules/tf043.ts +49 -0
- package/dist/rules/tf044.ts +51 -0
- package/dist/rules/tf045.ts +47 -0
- package/dist/terragrunt/affected.d.ts +119 -0
- package/dist/terragrunt/affected.d.ts.map +1 -0
- package/dist/terragrunt/index.d.ts +11 -0
- package/dist/terragrunt/index.d.ts.map +1 -0
- package/dist/terragrunt/mocks.d.ts +147 -0
- package/dist/terragrunt/mocks.d.ts.map +1 -0
- package/dist/terragrunt/run.d.ts +130 -0
- package/dist/terragrunt/run.d.ts.map +1 -0
- package/dist/terragrunt/units.d.ts +103 -0
- package/dist/terragrunt/units.d.ts.map +1 -0
- package/dist/terragrunt/wave.d.ts +89 -0
- package/dist/terragrunt/wave.d.ts.map +1 -0
- package/package.json +13 -3
- package/src/__fixtures__/change-set/choudoufu-set-plan.change-set.golden.json +95 -0
- package/src/__fixtures__/change-set/choudoufu-set-plan.json +76 -0
- package/src/__fixtures__/change-set/choudoufu.part.golden.json +173 -0
- package/src/__fixtures__/change-set/choudoufu.plan.json +610 -0
- package/src/__fixtures__/change-set/terraform.import-forget.plan.json +81 -0
- package/src/__fixtures__/change-set/terraform.part.golden.json +173 -0
- package/src/__fixtures__/change-set/terraform.plan.json +589 -0
- package/src/__fixtures__/change-set/tofu.part.golden.json +173 -0
- package/src/__fixtures__/change-set/tofu.plan.json +588 -0
- package/src/__fixtures__/change-set/v1.tf.txt +21 -0
- package/src/__fixtures__/change-set/v2-module-app.tf.txt +4 -0
- package/src/__fixtures__/change-set/v2.tf.txt +21 -0
- package/src/__fixtures__/pin/choudoufu-live-waves-n5.json +83 -0
- package/src/__fixtures__/pin/largeset-oci-n5/apply-order.txt +5 -0
- package/src/__fixtures__/pin/largeset-oci-n5/estates/e01/estate.chdf.hcl +6 -0
- package/src/__fixtures__/pin/largeset-oci-n5/estates/e01/main.tf +33 -0
- package/src/__fixtures__/pin/largeset-oci-n5/estates/e02/estate.chdf.hcl +6 -0
- package/src/__fixtures__/pin/largeset-oci-n5/estates/e02/main.tf +45 -0
- package/src/__fixtures__/pin/largeset-oci-n5/estates/e03/estate.chdf.hcl +6 -0
- package/src/__fixtures__/pin/largeset-oci-n5/estates/e03/main.tf +47 -0
- package/src/__fixtures__/pin/largeset-oci-n5/estates/e04/estate.chdf.hcl +6 -0
- package/src/__fixtures__/pin/largeset-oci-n5/estates/e04/main.tf +31 -0
- package/src/__fixtures__/pin/largeset-oci-n5/estates/e05/estate.chdf.hcl +6 -0
- package/src/__fixtures__/pin/largeset-oci-n5/estates/e05/main.tf +27 -0
- package/src/__fixtures__/pin/largeset-oci-n5/fixture.json +77 -0
- package/src/__fixtures__/plan-summary/largeset-n5-bump.json +2071 -0
- package/src/__fixtures__/plan-summary/largeset-n5.summary.golden.json +95 -0
- package/src/__fixtures__/plan-summary/largeset-n5.summary.golden.md +22 -0
- package/src/__fixtures__/plan-summary/largeset-n5.summary.golden.txt +12 -0
- package/src/__fixtures__/terragrunt/affected/catalog/units/web/terragrunt.hcl +3 -0
- package/src/__fixtures__/terragrunt/affected/gitignore +3 -0
- package/src/__fixtures__/terragrunt/affected/live/dev/app/terragrunt.hcl +3 -0
- package/src/__fixtures__/terragrunt/affected/live/dev/vpc/terragrunt.hcl +3 -0
- package/src/__fixtures__/terragrunt/affected/live/prod/app/terragrunt.hcl +3 -0
- package/src/__fixtures__/terragrunt/affected/live/stg/terragrunt.stack.hcl +5 -0
- package/src/__fixtures__/terragrunt/affected/modules/app/main.tf +6 -0
- package/src/__fixtures__/terragrunt/affected/modules/app/policy.json +1 -0
- package/src/__fixtures__/terragrunt/affected/modules/net/main.tf +2 -0
- package/src/__fixtures__/terragrunt/affected/modules/thing/main.tf +3 -0
- package/src/__fixtures__/terragrunt/affected/root.hcl +5 -0
- package/src/__fixtures__/terragrunt/affected-cases.ts +126 -0
- package/src/__fixtures__/terragrunt/five-units/catalog/units/thing/terragrunt.hcl +3 -0
- package/src/__fixtures__/terragrunt/five-units/live/dev/app/terragrunt.hcl +13 -0
- package/src/__fixtures__/terragrunt/five-units/live/dev/db/terragrunt.hcl +8 -0
- package/src/__fixtures__/terragrunt/five-units/live/dev/vpc/terragrunt.hcl +3 -0
- package/src/__fixtures__/terragrunt/five-units/live/prod/app/terragrunt.hcl +8 -0
- package/src/__fixtures__/terragrunt/five-units/live/prod/vpc/terragrunt.hcl +3 -0
- package/src/__fixtures__/terragrunt/five-units/modules/thing/main.tf +7 -0
- package/src/__fixtures__/terragrunt/five-units/root.hcl +5 -0
- package/src/__fixtures__/terragrunt/record.ts +56 -0
- package/src/__fixtures__/terragrunt/recorded/affected-find.json +50 -0
- package/src/__fixtures__/terragrunt/recorded/failed-plan-report.json +36 -0
- package/src/__fixtures__/terragrunt/recorded/find.json +67 -0
- package/src/__fixtures__/terragrunt/recorded/version.txt +1 -0
- package/src/__fixtures__/terragrunt/recorded/wave-1/apply-report.json +22 -0
- package/src/__fixtures__/terragrunt/recorded/wave-1/json/live/dev/vpc/tfplan.json +1 -0
- package/src/__fixtures__/terragrunt/recorded/wave-1/json/live/prod/vpc/tfplan.json +1 -0
- package/src/__fixtures__/terragrunt/recorded/wave-1/plan-report.json +22 -0
- package/src/__fixtures__/terragrunt/recorded/wave-2/json/live/dev/db/tfplan.json +1 -0
- package/src/__fixtures__/terragrunt/recorded/wave-2/json/live/prod/app/tfplan.json +1 -0
- package/src/__fixtures__/terragrunt/recorded/wave-2/plan-report.json +22 -0
- package/src/change-set-combined-run.test.ts +156 -0
- package/src/change-set.test.ts +151 -0
- package/src/change-set.ts +273 -0
- package/src/changed-roots.test.ts +58 -0
- package/src/changed-roots.ts +102 -0
- package/src/commands.ts +112 -0
- package/src/components/capability-plugin.test.ts +91 -0
- package/src/components/capability-plugin.ts +131 -0
- package/src/components/pr-loop.tofu.test.ts +244 -0
- package/src/composites/terraform-pin-rollout-op.test.ts +69 -0
- package/src/composites/terraform-pin-rollout-op.ts +60 -0
- package/src/hcl/descend.ts +1 -1
- package/src/hcl/edges.ts +2 -2
- package/src/hcl/jsonencode.test.ts +226 -0
- package/src/hcl/jsonencode.ts +454 -0
- package/src/hcl/parse.test.ts +25 -0
- package/src/hcl/parse.ts +91 -6
- package/src/hcl/roots.ts +1 -1
- package/src/hcl/suppressions.ts +8 -2
- package/src/index.ts +18 -0
- package/src/lint/audit-catalog.ts +230 -0
- package/src/lint/audit-lineage.ts +155 -1
- package/src/lint/audit.test.ts +3 -1
- package/src/lint/post-synth/estate-2284.test.ts +68 -0
- package/src/lint/post-synth/fixtures/TF030/negative-rules.tf +45 -0
- package/src/lint/post-synth/fixtures/TF030/negative.tf +55 -0
- package/src/lint/post-synth/fixtures/TF030/not-determined-port.tf +28 -0
- package/src/lint/post-synth/fixtures/TF030/not-determined-standalone.tf +32 -0
- package/src/lint/post-synth/fixtures/TF030/not-determined-vpc-rule.tf +21 -0
- package/src/lint/post-synth/fixtures/TF030/not-determined.tf +39 -0
- package/src/lint/post-synth/fixtures/TF030/positive-ipv6.tf +44 -0
- package/src/lint/post-synth/fixtures/TF030/positive-mixed.tf +36 -0
- package/src/lint/post-synth/fixtures/TF030/positive-standalone.tf +25 -0
- package/src/lint/post-synth/fixtures/TF030/positive.tf +43 -0
- package/src/lint/post-synth/fixtures/TF031/negative.tf +89 -0
- package/src/lint/post-synth/fixtures/TF031/not-determined.tf +139 -0
- package/src/lint/post-synth/fixtures/TF031/positive-data-source.tf +57 -0
- package/src/lint/post-synth/fixtures/TF031/positive-heredoc.tf +149 -0
- package/src/lint/post-synth/fixtures/TF031/positive-jsonencode.tf +115 -0
- package/src/lint/post-synth/fixtures/TF032/negative-heredoc.tf +20 -0
- package/src/lint/post-synth/fixtures/TF032/negative-references.tf +214 -0
- package/src/lint/post-synth/fixtures/TF032/negative.tf +99 -0
- package/src/lint/post-synth/fixtures/TF032/positive-heredoc.tf +22 -0
- package/src/lint/post-synth/fixtures/TF032/positive-sidecar.tf +197 -0
- package/src/lint/post-synth/fixtures/TF032/positive.tf +54 -0
- package/src/lint/post-synth/fixtures/TF033/negative.tf +39 -0
- package/src/lint/post-synth/fixtures/TF033/not-determined-aurora.tf +25 -0
- package/src/lint/post-synth/fixtures/TF033/positive-absent.tf +93 -0
- package/src/lint/post-synth/fixtures/TF033/positive.tf +50 -0
- package/src/lint/post-synth/fixtures/TF034/negative.tf +24 -0
- package/src/lint/post-synth/fixtures/TF034/positive-absent.tf +36 -0
- package/src/lint/post-synth/fixtures/TF034/positive.tf +14 -0
- package/src/lint/post-synth/fixtures/TF035/negative-absent.tf +43 -0
- package/src/lint/post-synth/fixtures/TF035/negative.tf +54 -0
- package/src/lint/post-synth/fixtures/TF035/positive.tf +37 -0
- package/src/lint/post-synth/fixtures/TF036/negative.tf +61 -0
- package/src/lint/post-synth/fixtures/TF036/not-determined.tf +28 -0
- package/src/lint/post-synth/fixtures/TF036/positive.tf +38 -0
- package/src/lint/post-synth/fixtures/TF037/negative-exclusion.tf +63 -0
- package/src/lint/post-synth/fixtures/TF037/negative.tf +27 -0
- package/src/lint/post-synth/fixtures/TF037/not-determined.tf +27 -0
- package/src/lint/post-synth/fixtures/TF037/positive-absent.tf +15 -0
- package/src/lint/post-synth/fixtures/TF037/positive.tf +26 -0
- package/src/lint/post-synth/fixtures/TF038/positive.tf +3 -0
- package/src/lint/post-synth/fixtures/TF039/positive.tf +4 -0
- package/src/lint/post-synth/fixtures/TF041/negative/terragrunt.hcl +12 -0
- package/src/lint/post-synth/fixtures/TF041/positive/terragrunt.hcl +7 -0
- package/src/lint/post-synth/fixtures/TF041/positive-apply/terragrunt.hcl +8 -0
- package/src/lint/post-synth/fixtures/TF042/negative/terragrunt.hcl +13 -0
- package/src/lint/post-synth/fixtures/TF042/positive/terragrunt.hcl +9 -0
- package/src/lint/post-synth/fixtures/TF043/negative/terragrunt.hcl +3 -0
- package/src/lint/post-synth/fixtures/TF043/negative-other/terragrunt.hcl +3 -0
- package/src/lint/post-synth/fixtures/TF043/positive-git/terragrunt.hcl +3 -0
- package/src/lint/post-synth/fixtures/TF043/positive-oci/terragrunt.hcl +3 -0
- package/src/lint/post-synth/fixtures/TF043/positive-tfr/terragrunt.hcl +3 -0
- package/src/lint/post-synth/fixtures/TF044/negative/terragrunt.hcl +9 -0
- package/src/lint/post-synth/fixtures/TF044/positive/terragrunt.hcl +7 -0
- package/src/lint/post-synth/fixtures/TF044/positive-generate/terragrunt.hcl +9 -0
- package/src/lint/post-synth/fixtures/TF045/negative/root.hcl +1 -0
- package/src/lint/post-synth/fixtures/TF045/negative/terragrunt.hcl +3 -0
- package/src/lint/post-synth/fixtures/TF045/positive/root.hcl +9 -0
- package/src/lint/post-synth/fixtures/TF045/positive/terragrunt.hcl +3 -0
- package/src/lint/post-synth/fixtures/TF045/unit-only/terragrunt.hcl +3 -0
- package/src/lint/post-synth/fixtures/estate-2284/clean/main.tf +132 -0
- package/src/lint/post-synth/fixtures/estate-2284/violating/main.tf +112 -0
- package/src/lint/post-synth/flat-attributes.ts +146 -0
- package/src/lint/post-synth/index.ts +32 -0
- package/src/lint/post-synth/module-source.test.ts +42 -1
- package/src/lint/post-synth/module-source.ts +56 -1
- package/src/lint/post-synth/terragrunt.ts +76 -0
- package/src/lint/post-synth/tf002.ts +1 -1
- package/src/lint/post-synth/tf030.test.ts +219 -0
- package/src/lint/post-synth/tf030.ts +290 -0
- package/src/lint/post-synth/tf031.test.ts +229 -0
- package/src/lint/post-synth/tf031.ts +370 -0
- package/src/lint/post-synth/tf032.test.ts +127 -0
- package/src/lint/post-synth/tf032.ts +226 -0
- package/src/lint/post-synth/tf033.test.ts +126 -0
- package/src/lint/post-synth/tf033.ts +160 -0
- package/src/lint/post-synth/tf034.test.ts +71 -0
- package/src/lint/post-synth/tf034.ts +63 -0
- package/src/lint/post-synth/tf035.test.ts +68 -0
- package/src/lint/post-synth/tf035.ts +74 -0
- package/src/lint/post-synth/tf036.test.ts +87 -0
- package/src/lint/post-synth/tf036.ts +119 -0
- package/src/lint/post-synth/tf037.test.ts +88 -0
- package/src/lint/post-synth/tf037.ts +101 -0
- package/src/lint/post-synth/tf038.test.ts +51 -0
- package/src/lint/post-synth/tf038.ts +71 -0
- package/src/lint/post-synth/tf039.test.ts +40 -0
- package/src/lint/post-synth/tf039.ts +64 -0
- package/src/lint/post-synth/tf040.test.ts +55 -0
- package/src/lint/post-synth/tf040.ts +76 -0
- package/src/lint/post-synth/tf041.test.ts +50 -0
- package/src/lint/post-synth/tf041.ts +56 -0
- package/src/lint/post-synth/tf042.test.ts +19 -0
- package/src/lint/post-synth/tf042.ts +42 -0
- package/src/lint/post-synth/tf043.test.ts +65 -0
- package/src/lint/post-synth/tf043.ts +49 -0
- package/src/lint/post-synth/tf044.test.ts +27 -0
- package/src/lint/post-synth/tf044.ts +51 -0
- package/src/lint/post-synth/tf045.test.ts +30 -0
- package/src/lint/post-synth/tf045.ts +47 -0
- package/src/op/activities/index.ts +4 -0
- package/src/op/activities/pin-rollout.ts +77 -0
- package/src/op/activities/terraform.test.ts +13 -0
- package/src/op/activities/terraform.ts +46 -86
- package/src/op/activity-contracts.test.ts +4 -1
- package/src/op/activity-contracts.ts +42 -0
- package/src/op/builders.ts +13 -0
- package/src/pin/bundle.test.ts +53 -0
- package/src/pin/edit-ts.test.ts +39 -0
- package/src/pin/edit-ts.ts +77 -0
- package/src/pin/edit.test.ts +199 -0
- package/src/pin/edit.ts +157 -0
- package/src/pin/forge.ts +85 -0
- package/src/pin/index.ts +22 -0
- package/src/pin/rollout.test.ts +232 -0
- package/src/pin/rollout.ts +451 -0
- package/src/pin/scan.ts +309 -0
- package/src/pin/source.ts +206 -0
- package/src/pin/waves.test.ts +101 -0
- package/src/pin/waves.ts +125 -0
- package/src/plan-digest.ts +99 -0
- package/src/plan-summary.test.ts +154 -0
- package/src/plugin.ts +25 -2
- package/src/terragrunt/affected.acceptance.test.ts +83 -0
- package/src/terragrunt/affected.test.ts +177 -0
- package/src/terragrunt/affected.ts +348 -0
- package/src/terragrunt/index.ts +11 -0
- package/src/terragrunt/mocks.acceptance.test.ts +105 -0
- package/src/terragrunt/mocks.test.ts +309 -0
- package/src/terragrunt/mocks.ts +324 -0
- package/src/terragrunt/run.ts +369 -0
- package/src/terragrunt/terragrunt.acceptance.test.ts +122 -0
- package/src/terragrunt/terragrunt.test.ts +332 -0
- package/src/terragrunt/units.ts +235 -0
- package/src/terragrunt/wave.ts +181 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Vendored for TF036 (chant #2288) from https://github.com/ned1313/terraform-tuesdays
|
|
2
|
+
# Path: 2021-04-13-AWS-KMS/ebs/main.tf
|
|
3
|
+
# Commit: 7651f6028ba18f01ad0273a15169e4058025c944
|
|
4
|
+
# Licence: MIT, https://github.com/ned1313/terraform-tuesdays/blob/7651f6028ba18f01ad0273a15169e4058025c944/LICENSE
|
|
5
|
+
# The whole file, unmodified.
|
|
6
|
+
#
|
|
7
|
+
# TF036: silent. The volume sets encrypted = true with a customer managed kms_key_id.
|
|
8
|
+
#
|
|
9
|
+
# Copyright (c) 2020 Ned Bellavance
|
|
10
|
+
#
|
|
11
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
12
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
13
|
+
# in the Software without restriction, including without limitation the rights
|
|
14
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
15
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
16
|
+
# furnished to do so, subject to the following conditions:
|
|
17
|
+
#
|
|
18
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
19
|
+
# copies or substantial portions of the Software.
|
|
20
|
+
#
|
|
21
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
22
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
23
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
24
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
25
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
26
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
27
|
+
# SOFTWARE.
|
|
28
|
+
|
|
29
|
+
terraform {
|
|
30
|
+
required_providers {
|
|
31
|
+
aws = {
|
|
32
|
+
source = "hashicorp/aws"
|
|
33
|
+
version = "~> 3.0"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
# Configure the AWS Provider
|
|
39
|
+
provider "aws" {
|
|
40
|
+
region = var.region
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
variable "region" {
|
|
44
|
+
type = string
|
|
45
|
+
default = "us-east-1"
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
data "aws_availability_zones" "azs" {
|
|
49
|
+
state = "available"
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
resource "aws_kms_key" "ebs" {
|
|
53
|
+
description = "EBS key"
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
resource "aws_ebs_volume" "encrypted" {
|
|
57
|
+
availability_zone = data.aws_availability_zones.azs.names[0]
|
|
58
|
+
size = 40
|
|
59
|
+
encrypted = true
|
|
60
|
+
kms_key_id = aws_kms_key.ebs.arn
|
|
61
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Vendored for TF036 (chant #2288) from https://github.com/bridgecrewio/terragoat
|
|
2
|
+
# Path: terraform/aws/ec2.tf
|
|
3
|
+
# Commit: 729f8da62c6a85ce4af5ad3d123de97776d954c4
|
|
4
|
+
# Licence: Apache-2.0, https://github.com/bridgecrewio/terragoat/blob/729f8da62c6a85ce4af5ad3d123de97776d954c4/LICENSE
|
|
5
|
+
# Excerpt: lines 34-51, unmodified.
|
|
6
|
+
#
|
|
7
|
+
# TF036: one info, Not determined. The volume does not set encrypted, so whether it is encrypted depends on the
|
|
8
|
+
# Region's EBS encryption by default. The commented-out line in the source records why TerraGoat left
|
|
9
|
+
# encrypted = false out: "Setting this causes the volume to be recreated on apply".
|
|
10
|
+
|
|
11
|
+
resource "aws_ebs_volume" "web_host_storage" {
|
|
12
|
+
# unencrypted volume
|
|
13
|
+
availability_zone = "${var.region}a"
|
|
14
|
+
#encrypted = false # Setting this causes the volume to be recreated on apply
|
|
15
|
+
size = 1
|
|
16
|
+
tags = merge({
|
|
17
|
+
Name = "${local.resource_prefix.value}-ebs"
|
|
18
|
+
}, {
|
|
19
|
+
git_commit = "d3439f0f2af62f6fa3521e14d6c27819ef8f12e1"
|
|
20
|
+
git_file = "terraform/aws/ec2.tf"
|
|
21
|
+
git_last_modified_at = "2021-05-02 11:17:26"
|
|
22
|
+
git_last_modified_by = "nimrodkor@users.noreply.github.com"
|
|
23
|
+
git_modifiers = "nimrodkor"
|
|
24
|
+
git_org = "bridgecrewio"
|
|
25
|
+
git_repo = "terragoat"
|
|
26
|
+
yor_trace = "c5509daf-10f0-46af-9e03-41989212521d"
|
|
27
|
+
})
|
|
28
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Vendored for TF036 (chant #2288) from https://github.com/stelligent/config-lint
|
|
2
|
+
# Path: example-files/config/volumes.tf
|
|
3
|
+
# Commit: 8e87d18df9df2413a3bf3f57a3ceaf17a2140da9
|
|
4
|
+
# Licence: MIT, https://github.com/stelligent/config-lint/blob/8e87d18df9df2413a3bf3f57a3ceaf17a2140da9/LICENSE.md
|
|
5
|
+
# Excerpt: lines 9-16, unmodified.
|
|
6
|
+
#
|
|
7
|
+
# config-lint's own example files.
|
|
8
|
+
#
|
|
9
|
+
# TF036: one warning. encrypted = false.
|
|
10
|
+
#
|
|
11
|
+
# Copyright (c) 2018-2020 Stelligent
|
|
12
|
+
#
|
|
13
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
14
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
15
|
+
# in the Software without restriction, including without limitation the rights
|
|
16
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
17
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
18
|
+
# furnished to do so, subject to the following conditions:
|
|
19
|
+
#
|
|
20
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
21
|
+
# copies or substantial portions of the Software.
|
|
22
|
+
#
|
|
23
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
24
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
25
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
26
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
27
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
28
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
29
|
+
# SOFTWARE.
|
|
30
|
+
|
|
31
|
+
resource "aws_ebs_volume" "vol2" {
|
|
32
|
+
availability_zone = "us-west-2a"
|
|
33
|
+
size = 40
|
|
34
|
+
tags {
|
|
35
|
+
Name = "HelloWorld"
|
|
36
|
+
}
|
|
37
|
+
encrypted = false
|
|
38
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Vendored for TF037 (chant #2288) from https://github.com/lexicalunit/spellbot
|
|
2
|
+
# Path: infrastructure/app/ecr.tf
|
|
3
|
+
# Commit: 31ea539eff3df6da03195324f8bdd377210c54ec
|
|
4
|
+
# Licence: MIT, https://github.com/lexicalunit/spellbot/blob/31ea539eff3df6da03195324f8bdd377210c54ec/LICENSE.md
|
|
5
|
+
# Excerpt: lines 1-34, unmodified.
|
|
6
|
+
#
|
|
7
|
+
# TF037: silent. IMMUTABLE_WITH_EXCLUSION (provider v6) keeps SHA tags immutable and names the four moving
|
|
8
|
+
# tags that stay mutable.
|
|
9
|
+
#
|
|
10
|
+
# Copyright (c) 2026 spellbot@lexicalunit.com
|
|
11
|
+
#
|
|
12
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
13
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
14
|
+
# in the Software without restriction, including without limitation the rights
|
|
15
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
16
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
17
|
+
# furnished to do so, subject to the following conditions:
|
|
18
|
+
#
|
|
19
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
20
|
+
# copies or substantial portions of the Software.
|
|
21
|
+
#
|
|
22
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
23
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
24
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
25
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
26
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
27
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
28
|
+
# SOFTWARE.
|
|
29
|
+
|
|
30
|
+
# ECR repository for SpellBot application
|
|
31
|
+
resource "aws_ecr_repository" "spellbot" {
|
|
32
|
+
name = "spellbot-app"
|
|
33
|
+
|
|
34
|
+
# SHA-tagged images (the artifacts ECS actually pulls) are immutable. The
|
|
35
|
+
# moving aliases below are rewritten by the deploy workflow on every push
|
|
36
|
+
# and so must remain mutable.
|
|
37
|
+
image_tag_mutability = "IMMUTABLE_WITH_EXCLUSION"
|
|
38
|
+
|
|
39
|
+
image_tag_mutability_exclusion_filter {
|
|
40
|
+
filter = "stage"
|
|
41
|
+
filter_type = "WILDCARD"
|
|
42
|
+
}
|
|
43
|
+
image_tag_mutability_exclusion_filter {
|
|
44
|
+
filter = "prod"
|
|
45
|
+
filter_type = "WILDCARD"
|
|
46
|
+
}
|
|
47
|
+
image_tag_mutability_exclusion_filter {
|
|
48
|
+
filter = "latest"
|
|
49
|
+
filter_type = "WILDCARD"
|
|
50
|
+
}
|
|
51
|
+
image_tag_mutability_exclusion_filter {
|
|
52
|
+
filter = "pr-*"
|
|
53
|
+
filter_type = "WILDCARD"
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
image_scanning_configuration {
|
|
57
|
+
scan_on_push = true
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
tags = {
|
|
61
|
+
Name = "spellbot-ecr"
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Vendored for TF037 (chant #2288) from https://github.com/aws-samples/sample-scribe-ai
|
|
2
|
+
# Path: iac/ecr.tf
|
|
3
|
+
# Commit: 384cb260f7e57797bc7275b72db5b2b262eee858
|
|
4
|
+
# Licence: MIT-0, https://github.com/aws-samples/sample-scribe-ai/blob/384cb260f7e57797bc7275b72db5b2b262eee858/LICENSE
|
|
5
|
+
# The whole file, unmodified.
|
|
6
|
+
#
|
|
7
|
+
# TF037: silent. Both repositories set image_tag_mutability = "IMMUTABLE".
|
|
8
|
+
|
|
9
|
+
resource "aws_ecr_repository" "main" {
|
|
10
|
+
name = var.name
|
|
11
|
+
image_tag_mutability = "IMMUTABLE"
|
|
12
|
+
force_delete = true
|
|
13
|
+
|
|
14
|
+
image_scanning_configuration {
|
|
15
|
+
scan_on_push = true
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
resource "aws_ecr_repository" "lambda" {
|
|
20
|
+
name = "${var.name}-events"
|
|
21
|
+
image_tag_mutability = "IMMUTABLE"
|
|
22
|
+
force_delete = true
|
|
23
|
+
|
|
24
|
+
image_scanning_configuration {
|
|
25
|
+
scan_on_push = true
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Vendored for TF037 (chant #2288) from https://github.com/turnerlabs/terraform-ecs-fargate
|
|
2
|
+
# Path: base/ecr.tf
|
|
3
|
+
# Commit: e51d5f3bafdaa7cb29527da979a006d0b7bb1dfb
|
|
4
|
+
# Licence: Apache-2.0, https://github.com/turnerlabs/terraform-ecs-fargate/blob/e51d5f3bafdaa7cb29527da979a006d0b7bb1dfb/LICENSE
|
|
5
|
+
# Excerpt: lines 1-18, unmodified.
|
|
6
|
+
#
|
|
7
|
+
# TF037: one info, Not determined. image_tag_mutability = var.image_tag_mutability. The variable's default is
|
|
8
|
+
# "IMMUTABLE", but a caller can override it, and TF037 does not evaluate variables.
|
|
9
|
+
|
|
10
|
+
/*
|
|
11
|
+
* ecr.tf
|
|
12
|
+
* Creates a Amazon Elastic Container Registry (ECR) for the application
|
|
13
|
+
* https://aws.amazon.com/ecr/
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
# The tag mutability setting for the repository (defaults to IMMUTABLE)
|
|
17
|
+
variable "image_tag_mutability" {
|
|
18
|
+
type = string
|
|
19
|
+
default = "IMMUTABLE"
|
|
20
|
+
description = "The tag mutability setting for the repository (defaults to IMMUTABLE)"
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
# create an ECR repo at the app/image level
|
|
24
|
+
resource "aws_ecr_repository" "app" {
|
|
25
|
+
name = var.app
|
|
26
|
+
image_tag_mutability = var.image_tag_mutability
|
|
27
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Vendored for TF037 (chant #2288) from https://github.com/outerbounds/terraform-aws-metaflow
|
|
2
|
+
# Path: ecr.tf
|
|
3
|
+
# Commit: b56935a87aa623bf9c9d91efe22c54338dcef5a3
|
|
4
|
+
# Licence: Apache-2.0, https://github.com/outerbounds/terraform-aws-metaflow/blob/b56935a87aa623bf9c9d91efe22c54338dcef5a3/LICENSE
|
|
5
|
+
# The whole file, unmodified.
|
|
6
|
+
#
|
|
7
|
+
# TF037: one error. The repository does not set image_tag_mutability, and the provider default is MUTABLE.
|
|
8
|
+
|
|
9
|
+
resource "aws_ecr_repository" "metaflow_batch_image" {
|
|
10
|
+
count = var.enable_custom_batch_container_registry ? 1 : 0
|
|
11
|
+
|
|
12
|
+
name = local.metaflow_batch_image_name
|
|
13
|
+
|
|
14
|
+
tags = var.tags
|
|
15
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Vendored for TF037 (chant #2288) from https://github.com/bridgecrewio/terragoat
|
|
2
|
+
# Path: terraform/aws/ecr.tf
|
|
3
|
+
# Commit: 729f8da62c6a85ce4af5ad3d123de97776d954c4
|
|
4
|
+
# Licence: Apache-2.0, https://github.com/bridgecrewio/terragoat/blob/729f8da62c6a85ce4af5ad3d123de97776d954c4/LICENSE
|
|
5
|
+
# Excerpt: lines 1-18, unmodified.
|
|
6
|
+
#
|
|
7
|
+
# TF037: one error. image_tag_mutability = "MUTABLE".
|
|
8
|
+
|
|
9
|
+
resource aws_ecr_repository "repository" {
|
|
10
|
+
name = "${local.resource_prefix.value}-repository"
|
|
11
|
+
image_tag_mutability = "MUTABLE"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
tags = merge({
|
|
15
|
+
Name = "${local.resource_prefix.value}-repository"
|
|
16
|
+
}, {
|
|
17
|
+
git_commit = "e6d83b21346fe85d4fe28b16c0b2f1e0662eb1d7"
|
|
18
|
+
git_file = "terraform/aws/ecr.tf"
|
|
19
|
+
git_last_modified_at = "2023-04-27 12:47:51"
|
|
20
|
+
git_last_modified_by = "nadler@paloaltonetworks.com"
|
|
21
|
+
git_modifiers = "nadler/nimrodkor"
|
|
22
|
+
git_org = "bridgecrewio"
|
|
23
|
+
git_repo = "terragoat"
|
|
24
|
+
yor_trace = "7a3ec657-fa54-4aa2-8467-5d08d6c90bc2"
|
|
25
|
+
})
|
|
26
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
terragrunt_version_constraint = ">= 1.1.0"
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Epic #2284 acceptance estate, clean root. Written for chant, not vendored.
|
|
2
|
+
# The same estate as ../violating with every finding fixed, and with the
|
|
3
|
+
# provider-default cases left as real estates leave them: an SQS queue that
|
|
4
|
+
# sets no encryption attribute (encrypted by AWS's SSE-SQS default), an EBS
|
|
5
|
+
# volume that leaves `encrypted` unset but depends on an enabled
|
|
6
|
+
# `aws_ebs_encryption_by_default`, an SNS topic on the AWS managed key, and an
|
|
7
|
+
# ECR repository that keeps `latest` mutable through an exclusion filter.
|
|
8
|
+
# TF030 to TF037 report nothing here (src/lint/post-synth/estate-2284.test.ts).
|
|
9
|
+
|
|
10
|
+
terraform {
|
|
11
|
+
required_version = ">= 1.5.0"
|
|
12
|
+
|
|
13
|
+
backend "s3" {
|
|
14
|
+
bucket = "acme-terraform-state"
|
|
15
|
+
key = "payments/terraform.tfstate"
|
|
16
|
+
region = "eu-west-1"
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
required_providers {
|
|
20
|
+
aws = {
|
|
21
|
+
source = "hashicorp/aws"
|
|
22
|
+
version = "~> 6.0"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
provider "aws" {
|
|
28
|
+
region = "eu-west-1"
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
# TF030: HTTPS from anywhere, SSH from the VPC only.
|
|
32
|
+
resource "aws_security_group" "web" {
|
|
33
|
+
name = "web"
|
|
34
|
+
vpc_id = "vpc-0a1b2c3d4e5f60718"
|
|
35
|
+
|
|
36
|
+
ingress {
|
|
37
|
+
from_port = 443
|
|
38
|
+
to_port = 443
|
|
39
|
+
protocol = "tcp"
|
|
40
|
+
cidr_blocks = ["0.0.0.0/0"]
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
ingress {
|
|
44
|
+
from_port = 22
|
|
45
|
+
to_port = 22
|
|
46
|
+
protocol = "tcp"
|
|
47
|
+
cidr_blocks = ["10.0.0.0/8"]
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
# TF031: named actions on named resources.
|
|
52
|
+
data "aws_iam_policy_document" "deployer" {
|
|
53
|
+
statement {
|
|
54
|
+
actions = ["ecs:UpdateService", "ecs:DescribeServices"]
|
|
55
|
+
resources = [aws_ecs_task_definition.api.arn]
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
resource "aws_iam_policy" "deployer" {
|
|
60
|
+
name = "deployer"
|
|
61
|
+
policy = data.aws_iam_policy_document.deployer.json
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
# TF032: the password comes from Secrets Manager.
|
|
65
|
+
resource "aws_ecs_task_definition" "api" {
|
|
66
|
+
family = "payments-api"
|
|
67
|
+
requires_compatibilities = ["FARGATE"]
|
|
68
|
+
network_mode = "awsvpc"
|
|
69
|
+
cpu = "512"
|
|
70
|
+
memory = "1024"
|
|
71
|
+
|
|
72
|
+
container_definitions = jsonencode([{
|
|
73
|
+
name = "api"
|
|
74
|
+
image = "public.ecr.aws/acme/payments-api:1.4.2"
|
|
75
|
+
environment = [
|
|
76
|
+
{ name = "LOG_LEVEL", value = "info" }
|
|
77
|
+
]
|
|
78
|
+
secrets = [
|
|
79
|
+
{ name = "DB_PASSWORD", valueFrom = "arn:aws:secretsmanager:eu-west-1:111122223333:secret:ledger-db" }
|
|
80
|
+
]
|
|
81
|
+
}])
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
# TF033: encrypted storage.
|
|
85
|
+
resource "aws_db_instance" "ledger" {
|
|
86
|
+
identifier = "ledger"
|
|
87
|
+
engine = "postgres"
|
|
88
|
+
instance_class = "db.t4g.medium"
|
|
89
|
+
allocated_storage = 50
|
|
90
|
+
username = "ledger"
|
|
91
|
+
password = var.db_password
|
|
92
|
+
storage_encrypted = true
|
|
93
|
+
skip_final_snapshot = true
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
variable "db_password" {
|
|
97
|
+
type = string
|
|
98
|
+
sensitive = true
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
# TF034: the AWS managed key.
|
|
102
|
+
resource "aws_sns_topic" "alerts" {
|
|
103
|
+
name = "payments-alerts"
|
|
104
|
+
kms_master_key_id = "alias/aws/sns"
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
# TF035: provider default. No encryption attribute; SQS encrypts new queues
|
|
108
|
+
# with SSE-SQS.
|
|
109
|
+
resource "aws_sqs_queue" "settlements" {
|
|
110
|
+
name = "settlements"
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
# TF036: provider default. `encrypted` unset, the Region's encryption by
|
|
114
|
+
# default turned on first.
|
|
115
|
+
resource "aws_ebs_encryption_by_default" "on" {}
|
|
116
|
+
|
|
117
|
+
resource "aws_ebs_volume" "scratch" {
|
|
118
|
+
availability_zone = "eu-west-1a"
|
|
119
|
+
size = 100
|
|
120
|
+
depends_on = [aws_ebs_encryption_by_default.on]
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
# TF037: immutable tags, with `latest` as the one written-down exception.
|
|
124
|
+
resource "aws_ecr_repository" "api" {
|
|
125
|
+
name = "payments-api"
|
|
126
|
+
image_tag_mutability = "IMMUTABLE_WITH_EXCLUSION"
|
|
127
|
+
|
|
128
|
+
image_tag_mutability_exclusion_filter {
|
|
129
|
+
filter = "latest"
|
|
130
|
+
filter_type = "WILDCARD"
|
|
131
|
+
}
|
|
132
|
+
}
|