Releases: hashicorp/terraform-cdk
v0.12.2
Breaking Changes
A very minor change in the interface names for provisioners occured to support them in JSII languages, renaming the following interfaces:
ISSHProvisionerConnection
toSSHProvisionerConnection
IWinrmProvisionerConnection
toWinrmProvisionerConnection
IFileProvisioner
toFileProvisioner
ILocalExecProvisioner
toLocalExecProvisioner
IRemoteExecProvisioner
toRemoteExecProvisioner
Another very minor change is that we now use the CloudBackend
by default when running cdktf init. This requires Terraform >=1.1, therefore an error is thrown on cdktf init
if you want to use Terraform Cloud and are on an older version. Already existing projects are not affected and you can use cdktf init --local
and configure the RemoteBackend
if you need to use an older version.
feat
- feat(cli): throw an error if a user tries to create a new project with TFC on an old TF version #2062
- feat: install time tool in Docker container to be able to use it for memory consumption tracking in tests #2059
- feat: add Go port of TypeScript Google CloudRun example #2035
- feat(lib): add support for cloud backend #1924
fix
- fix(provider-generator): use terraform get instead of init to download modules #2057
- fix(lib): Add missing config options for S3Backend: skipRegionValidation, assumeRolePolicyArns, assumeRoleTags, and assumeRoleTransitiveTagKeys #2050
- fix: support provisioners in JSII languages #2042
- fix(hcl2json): add fs-extra to dependencies #2040
- fix(lib): Improve error message when provider constructs are missing #2039
- fix(cli): Make provider add command case insensitive for provider names #2038
- fix(cli): run a speculative plan on diff #2033
chore
- chore(cli): remove red and magenta from colors for stack names #2064
- chore: add link to hybrid module talk #2054
- chore: make Terraform 1.2.8 available in Docker image #2051
- chore: document updating the API documentation #2046
- chore(docs): Remove positional language + fix style nits #2045
- chore(lib): deprecate Resource in favor of Construct #2044
- chore: update links in our youtube playlist examples #2043
- chore: npm-check-updates && yarn upgrade #2025
- chore: translate parts of the documentation #2011
refactor
- refactor: port example script to JS #2047
v0.12.1
fix
- fix(cli): add major versions greater 1 to package name when installing pre-built providers for go #2002
- fix(cli): Wait for other stacks to complete if one of them failed #1987
- fix(cli): fix version detection for Java being a bit too optimistic about the package name #1995
- fix(cli): Improve wording around starting from an existing Terraform project #1985
- fix(tests): force local as Go now has pre-built providers #2005
- fix(tests): as predicted, the test needs to be skipped for a bit of time #2004
- fix(docs): fix aspects example not being valid TypeScript #1986
- fix(docs): fix links by removing all links to the providers-and-resources page that does not exist anymore #2010
- fix: don't lock state in tests #1990
- fix: don't overwrite all
NODE_OPTIONS
#2009
chore
v0.12.0
Breaking Changes
cdktf get
exits with 0 exit code when no provider / module specifications are found in the cdktf.json
Previously we would throw an error and exit with 1 if there were no provider or module specifications in the cdktf.json
file. This can be inconvenient if cdktf get
is part of a workflow.
Fn.merge
is split into Fn.mergeLists
and Fn.mergeMaps
The Terraform merge
function can merge both lists and maps, but this can cause issues when using the result in a typed language. Therefore we split it into Fn.mergeLists
and Fn.mergeMaps
, this means you need to change your cdktf programs code.
Simplified interfaces of recursive attributes
The generated provider bindings are based on the Terraform schema which does not support recursion and hence uses a large, explicit structure instead. Previously this resulted in long names such as e.g. Wafv2WebAclRuleStatementAndStatementStatementOrStatementStatementLabelMatchStatement
. In 0.12 we implemented a first rough detection for this underlying recursion which drastically reduced the amount of generated interfaces as they now are converted to recursive data structures themselves.
If you are currently using those types e.g. in a language like Java, you will need to change them to the new shorter names.
feat
- feat(lib): Introduce Iterator and
for_each
to implement apply time iteration #1830 - feat(lib): Introduce TerraformDynamicBlock to enable iterator usage on blocks #1882
- feat(cli): support refresh only option for diff and deploy #1851
- feat(docs): Add iterator docs page #1840
- feat(docs): document FORCE_COLOR env var that allows disabling colored output #1917
- feat(cli): plug provider add command in help printed after initializing a new cdktf project #1833
- feat(lib): exposed testing matchers for other languages properly #1935
fix
- fix: Allow "all" as ignoreChanges lifecycle value #1848
- fix: Fixed naming collision between resources of different providers #1870
- fix: Small fix to the CONTRIBUTING.md #1887
- fix(cli): increase default max memory for node process when running app command for synth #1915
- fix(provider-generator): Meta arguments available for generated modules #1880
- fix(provider-generator): replace dashes with underscores in module names for Go when generating bindings for Terraform modules #1928
- fix(hcl2json): bundle wasm_exec used for building Go instead of looking for it at runtime #1954
- fix(hcl2cdk): use the same attribute renaming function as in the provider generation #1842
- fix(hcl2cdk): maps should not be wrapped in arrays #1838
chore
- chore: document CI flag #1888
- chore: modernize example output #1914
- chore: pin provider version #1896
- chore: update prerequisites #1894
- chore(tests): Re-enable Windows Provider Add C# Test #1879
- chore: add tfe test as pre-step to releasing #1872
- chore: split provider tests into one test per provider #1862
- chore: reuse integration test definition for releases #1859
- chore: fix broken link in readme #1845
- chore: npm-check-updates && yarn upgrade #1706
v0.11.2
v0.11.1
v0.11.0
Breaking Changes
Abbreviated version below, for a guide see Upgrade Guide for 0.11
TF_VAR_
prefixed environment variables can no longer be accessed at synth time
These environment variables will now be filtered out in the synth phase since they are only intended to be used during diff (plan) and deploy (apply) phases to supply values for TerraformVariable
s. This inhibits accidentally inlining those values into the generated cdk.tf.json
config.
Environment variable and CLI option changes
DEBUG
is replaced by settingCDKTF_LOG_LEVEL=debug
, setting theCDKTF_LOG_LEVEL
to debug will now also behave likeDEBUG=1
and include logs from the provider generationCDKTF_DISABLE_LOGGING=false
is replaced by settingCDKTF_LOG_FILE_DIRECTORY=/path/to/logs/directory
. If left empty no logs will be written.--disable-logging
was removed, instead use the environment variableCDKTF_LOG_LEVEL=off
DISABLE_VERSION_CHECK
,CDKTF_DISABLE_PLUGIN_CACHE_ENV
need to be set totrue
or1
, before anything worked.
Stack ids can no longer contain whitespaces
A TerraformStack
may no longer contain whitespace characters, since we rely on paths being whitespace free. If you have a stack with an id containing a whitespace, please replace it with a hyphen. If the stack was already deployed with the default LocalBackend
you might need to rename your statefile to match the new stack id.
Computed Map References are referenced through getter
For computed maps, the reference is now through a getter.
To access { property = "value" }
, instead of resource.mapAttribute("property")
you can now use resource.mapAttribute.lookup("property")
.
Use ComplexLists and ComplexMaps for complex assignable properties #1725
Assignable properties of the form Object[]
or { [key: string]: Object }
no longer have setters; they instead have putX
methods. The getter return type is also changed to be a derivative of either ComplexList
or ComplexMap
.
fix
- fix(docs): Make sure code example works #1807
- fix(lib): Delay complex object fqn so that override id can still be used #1793
- fix(provider-generator): strictly adhere to the provider schema #1792
- fix: Avoid unstable fqn for TerraformElements #1779
- fix(cli): Respect CDKTF_HOME environment variable for checkpoint telemetry #1778
- fix(docs): remove outdated docs from the previous watch implementation #1768
- fix(cli): throw an error if a stack contains a whitespace #1750
feat
- feat(lib): add docstrings to gcs/http/local backend resources #1803
- feat(lib): add a warning about id fields #1802
- feat(docs): add guidance around secrets and warn that those values might be inlined in the generated Terraform config #1801
- feat(lib): add docstrings to cos/etcd/etcdv3 backend resources #1783
- feat(lib): add docstrings to artifactory/azurerm/consul backend resources #1781
- feat(lib): add docstrings to S3 backend resource #1780
- feat(release): support running releases on backport-release branches besides only on main #1770
- feat(cli): add cdktf provider add command #1761
- feat(provider-generator): Use
ComplexList
for any complex list #1725
test
- test(lib): ensure list mapper does not fail when passed IResolvables #1791
chore
- chore: group needs to be prefixed per type #1813
- chore: limit CI concurrency to the latest pushed commits #1810
- chore(cli): add sentry error reporting #1809
- chore: document computed map reference documentation #1775
- chore(release): Update changelog to contain backported release for 0.10.4 #1773
- chore(docs): document how to debug cdktf programs #1758
v0.10.4
v0.10.3
feat
- feat(provider-generator): emit a versions.json file to the output directory, containing the used provider versions #1749
- feat(cli): debug command #1731
chore
- chore(cli): add environment variable to disable version checks #1757
- chore: drop Terraform v0.15.7 from Docker image and replace with v1.1.9 for running tests #1747
- chore: add Terraform v1.1.9 to Docker image #1743
- chore(docs): update env var usage #1693
fix
- fix(lib): Add new optional AWS route attributes #1755
- fix(cli): handle version check more defensively #1753
- fix(cli): we should not send wait for approval if a stop has been issued #1740
- fix(cli): Fix indentation of RemoteBackend in CSharp and Java template #1733
- fix(cli): fix templates to properly indent cdktf.json and add RemoteBackend in TS template #1732
v0.10.2
fix
- fix(tests): pin awscc version #1727
- fix(cli): return non-zero exit code in case of error when using cdktf diff #1726
- fix(cli): allow init command to run in a directory containing a README.md #1722
- fix(provider-generator): Include "arn" when assignable #1716
- fix(hcl2cdk): detect list extensions in strings and wrap them in an array #1707
- fix(lib): override values containing intrinsic tokens caused an infinite loop #1702
- fix(lib): contextualize error messages in terraform functions #1699
- fix(cli): fix path for
.terraform
directory #1694 - fix(cli): improve cli error handling #1687
chore
- chore: align versions to an unpublished version #1718
- chore(docs): update convert docs #1701
- chore(docs): update aspect docs #1690
- chore: npm-check-updates && yarn upgrade #1683
test
- test(hcl2cdk): add test case for property renaming #1709
feat
v0.10.1
fix
- fix(cli): fix convert single blocks as array bug #1680
- fix(cli): Only print error that's thrown #1678
refactor
- refactor(tests): move from table driven tests to functional way #1679
- refactor(cli): remove xstate as state machine #1670
chore
- chore(docs): update project maturity statement #1676
- chore(docs): add sidebar link #1674
- chore: add extra column for PRs outside our main repo #1673
feat
- feat(cli): support HTTP_PROXY for Terraform Cloud #1507