All notable changes to this project will be documented in this file. This project loosely tries to adhere to Semantic Versioning, even before v1.0.
- #347 fixing typo in untaint help file
- #348 Allow up to terraform
1.5.7
- #349 Add checks around plugin_gem_name in project Gemfile template
- #339 Use Terraspace.tmp_root value instead of hard-coded '/tmp/terraspace'
- #345 Update to use terraform_bin for state pull and help
- #331 adding tainting/untainting as a terraspace command
- #332 terraspace fmt: generalize and pass through fmt option
- #333 remove unused noop and verbose options
- #334 fix taint and untaint and support pass through args
- #335 use tofu fork when available
- #336 improve tfvars lookup location to include config/stacks/demo/tfvars
- #337 update cli help examples to config/stacks/demo/tfvars folder
- #329 fix terraspace check
- #327 terraspace check improvements: only show check when fails
- #326 terraspace check improvements
- hide deprecated check commands
- #325 terraspace check improvements
- #324 terraspace check
- #323 Restrict terraform version due to terraform BSL license change
- send terraform version to all terraspace cloud requests
- Fix exit status for fmt
- #308 feat: add support for exit code in terraspace fmt command
- #310 improve terraspace seed for map(string) variables
- #311 erb processing for rb files in modules folder for dsl
- #312 refactor terraspace new project Gemfile.tt
- #313 cleanup terraspace fmt exit status return
- #302 update new project generator config/app.rb config.build.copy_modules
- #301 Speed boast copy modules
- #268 custom config.build.dependency_words ability
- #265 import command
- #261 extra layer also process env-extra
- #262 improve graph dependency processing: replace tfvars so only output and depends_on are evaluated
- #263 layering small improvements
- layering small improvements: dont use layers that end with - only
- rename env var to TS_SHOW_ALL_LAYERS to TS_LAYERING_SHOW
- #259 fix TS_PROJECT for ts cloud
- builder: skip examples
- improve generated config app.rb
- #258 Fix terraform apply/destroy missing some passthrough options
- #255 dont compute git info when not cloud not enabled and warn message improvement
- pin terraspace to major version in initially generated Gemfile
- #252 puts friendlier user message with terraspace force_unlock suggestion
- #253 azure repo local git support
- #251 deprecation warning for
:CACHE_ROOT
inconfig.build.cache_dir
- #249 fix cost.enabled setting when nil
- #248 fix destroy success return
- #247 cost estimates and real-time stream logging
- Cloud Cost Estimation support
- Live Stream Logging support
- CI/CD plugin updates. Decoupled CI from PR plugins
- Improve git info. Get git info with or without CI
- Fix utf8 encoding edge cases
- #237 remove duplicate paths in layering
- #244 rename _cache2 to .cache2
- #245 set utf8 in case system is not configured with LANG=en_US.UTF-8
- #242 :PROJECT variable: TS_PROJECT as well as config.cloud.project
- #240 add project expander variable
- Terraspace Cloud Support
Highlights:
- Record updates to Terraspace Cloud API
- CI plugin support
- CI plugin generator
- VCS manual support in core for github, gitlab, bitbucket
- Layering: simplified by removing provider layering by default.
- Layering: new default
config.layering.mode = "simple"
. Useconfig.layering.mode = "provider"
for v1 behavior. - Layering: easier to debug with config.layering.show
- Layering: App, Role, Extra level layering
More:
- Backend expander variables handle env vars in general
- Remove config.build.cache_root option
- cloud.record = "changes". dont create cloud record when no changes
- cloud warning message when TS_TOKEN is confiugred but cloud is not yet
- Cloud API expodential retry logic
- TS_EXTRA in favor of instance option, deprecate instance option
- handle ctrl-c
- improve acceptance codebuild scripts
- #215 fix all down by building child nodes
- #216 add codebuild project with acceptance test for terraspace all
- #213 ability to show layers for debugging
- #212 ability to show layers for debugging
- show layers for debugging with logger level debug and TS_SHOW_ALL_LAYERS=1
- stringify_keys layer friendly names map
- #210 write files without magic conversion, fixes #209
- cleanup argv and root
- write files without magic conversion, fixes #209
- #207 dont fork when all.concurrency = 1
- #200 fix terraspace typos
- #202 Windows support: fix include_dir for windows
- #203 Fix ERB for windows
- #204 improve file check
- setup check terraform_bin windows support
- slight layering improvement strip trailing slash, helps with custom layering
- #199 build required dependent stacks as part of terraspace up
- #196 terraspace all: build modules in batches and only each specific stack
- #197 all plan --output and all up --plan options
- simplify starter config/app.rb
- #195 improve autodetection for plugin expander for backend like remote
- #194 ability to allow and deny envs, regions, and stacks
- #193 improve all include_stacks and exclude_stacks option
- #192 run super-early boot hooks before dotenv load
- #190 update terraspace-bundler gem depedency to 0.5.0
- #189 dotenv support
Highlights:
- Non-cloud provider support
- Better passthrough terraspace options to terraform. Pretty much all terraform options are now supported.
- Remove
terraspace_plugin_*
gem dependencies out of core - Improve top CLI help: group main commands at top
Details:
- #168 terraspace new example command
- #169 fix new plugin generator, use right include Helper
- #170 remove project --test-structure option in favor of terraspace new test --type project
- #171 improve cli help: group main commands at top
- #172 better wrap and pass through terraform args
- #173 remove
terraspace_plugin_*
gem dependencies out of core - #174 support non-cloud providers and backends
- #175 Pass args cleanup
- #176 fix new example command
- #177 Shim message
- #178 fix no backend.tf src file case
- #179 terraspace check setup command
- #180 hide check_setup command
- #181 generator improvements: core examples for plugin=none. creates simple random_pet
- #182 move backend auto creation to runner stage
- #183 fix example generator lang option
- allow --version command to run outside terraspace project
- allow terraspace -help to work also
- friendly shim message for gem dependency resolution errors
- Pretty much release 0.7.x
- #187 put thor cli options at the end
- #185 pass value through untouch when expand method not defined
Highlights:
- Non-cloud provider support
- Better passthrough terraspace options to terraform. Pretty much all terraform options are now supported.
- Remove
terraspace_plugin_*
gem dependencies out of core - Improve top CLI help: group main commands at top
Details:
- #168 terraspace new example command
- #169 fix new plugin generator, use right include Helper
- #170 remove project --test-structure option in favor of terraspace new test --type project
- #171 improve cli help: group main commands at top
- #172 better wrap and pass through terraform args
- #173 remove
terraspace_plugin_*
gem dependencies out of core - #174 support non-cloud providers and backends
- #175 Pass args cleanup
- #176 fix new example command
- #177 Shim message
- #178 fix no backend.tf src file case
- #179 terraspace check setup command
- #180 hide check_setup command
- #181 generator improvements: core examples for plugin=none. creates simple random_pet
- #182 move backend auto creation to runner stage
- #183 fix example generator lang option
- allow --version command to run outside terraspace project
- allow terraspace -help to work also
- friendly shim message for gem dependency resolution errors
- #167 require active_support properly
- #164 Use Activesupport All
- #162 expand_string? interface method so plugins can decide whether or not to expand the string
- improve seed generator column spacing
- #149 change default fallback mod strategy to Mod::Tf instead of Mod::Pass for ERB support
- #152 fix naming typo in cli help
- #153 only remove and create log dir if it exists
- #155 add terraspace bundle example cli help
- #157 handle edge case: Enter a value chopped off
- #158 use pass strategy for binary files
- #159 process terraform.tfvars file with erb, change default processing strategy back to pass
- #142 improve builder skip check: check if its a dir
- #141 terraspace output: remove extra newline at the end
- #140 fix terraspace output and Enter a value handling
- #134 Use file not plan for the var-files argument
- #139 Fix terraspace output to not add extra newlines
- terraspace list: change default to show both stacks and modules
- use terraspace-bundler 0.4.0
- #128 Improve terraspace state comands and Terraspace.argv for internal usage
- #129 use Dir.glob(expr, File::FNM_DOTMATCH) so dotfiles are copied, allowing .terraform-version for tfenv
- allow -h to help outside terraspace project generally
- require rspec-terraspace 0.3.0
- state subcommands: straight delegate args
- Terraspace.argv for consistency with terraspace test
- #120 version check handles a major change
- #117 fix terraspace fmt -t all
- clean up IO select call
- #112 fix smart auto retry
- #110 fix popen deadlock with large amounts of output #97 Terraspace hangs when TF_LOG=TRACE environment variable exists #97
- #108 provide runner context to terraspace hook
- #101 terraspace force-unlock command
- #102 fix terraspace all summarized logging
- #103 config.build.pass_files with default files use pass strategy
- #96 terraspace fmt: ability to specific module or stack
- #94 terraspace fmt command
- #90 Boot hooks: new and improved boot hooks interface
- remove old config.hooks.on_boot
- #89 rename option to enable_names.expansion
- #87 rename cloud to tfc command and improvements
- #88 custom layering support
- Improve stdout handling, so this works:
terraspace show demo --json | jq
terraspace plan --output plan.save
writes to relative cache path.terraspace up --plan plan.save
copies plan.save to cache path.- Add state command. Initial simple version.
- #79 Fix syntax issue
- #85 Add all.include_stacks option and fix all.ignore_stacks option when building dependency graph
- #76 dont use auto generated plan when both yes and plan options used
- fix plan path when 2 stacks of same name run at the same time
- #69 require singleton earlier
- #68 require singleton
- fix graphviz check for format text, improve graphviz install help message
- #67 fix find placeholder stack so config/terraform only builds for stacks
- #64 fix completion_script
- #61 allow envs and regions check feature
- fix terraspace build before hook
- fix link
- fix check setup when terraform not found
- #60 fix terraspace check_setup, use type and allow to run outside project
- improve terraform is not installed message
- #59 only run bundler/setup within terraspace project and check standalone install
- fix terraspace help
- fix terraspace setup check when terraform is not installed
- #56 fix arg and hook generators
- fix ci build
- #55 custom helpers support
- plugin helpers support: aws_secret, aws_ssm, google_secret, etc
- introduce stack-level test concept and change project-level test concept
- generators: standardize and unifiy new test
- new generators: arg, hook, helper
- clean up Terraspace check project
- setup up autoloader and bundler/setup earlier. removes need for shim
- test generator plugin autodetection
- remove internal run_generator_hook_script
- stack-level args customization support
- improve test output noise-level
- new setting: config.terraform.plugin_cache.purge_on_error
- quiet option for project generator
- #50 retry logic for shared cache error
- #51 fix cloud sync: call build first
- #49 add info --path option
- #48 add logs pid option
- default to input false, encourage set tfvars
- #47
terraspace list
fix andterraspace all init
help updates
- #46 improve hooks, bundle, auto init and bug fixes
- improve hooks: allow multiple hooks of same type, change path hooks/terraform.rb
- improve hooks: introduce terraspace-level as well as terraform-level hooks
- improve hooks: can take Ruby block or shell script
- improve auto init: reinit when module source changed, improve auto init: generalize retry check
- fix already_init? detection for case when stack does use module
- terraspace bundler options: can set any option now
- add
terraspace all init
command - improve terraspace clean, prompt user and add
-y
option - bundle: check if in terraspace project
- Rename NullObject to Unresolved
- improve error message when stacks not found. give
terraspace list
hint - terraspace list. change default to
--type stack
- change summary option to --details
- include terraspace version in generated Gemfile
- logs command to handle viewing, and clean logs to clean
- #44 improve logs management commands:
terraspace logs remove
andterraspace logs truncate
- #43 rename
terraform_output
helper tooutput
. Keepterraform_output
for backwards compatibility - to_ruby natural interface to access output with full power of Ruby
- output formatters removed in favor for
.to_ruby
method.
- #42 update cli docs and bug fixes
- fix console by using system instead of popen3
- fix build for edge case when app/modules exist but app/stacks do not
- terraspace new project: do not generate spec folder by default
- improve all output summary
- remove redundant
terraspace tfc setup
, instead use:terraspace tfc sync
- improve terraspace info output
- fix integration test pipeline
- #41 fix
terraspace build
andterraspace seed
when bucket doesnt exist yet and there are dependenices defined.
- #40 fix backend auto creation
- #39 fix backend auto creation
- All commands: Dependency graph calculated and deployed in proper order
- All commands:
terraspace all up
,terraspace all build
,terraspace all down
, etc.terraspace all -h
- Terraspace log: view and tail log files
- Terraspace logs management commands:
terraspace logs truncate
andterraspace logs remove
- TFC/TFE: Improve support.
config.cloud.vars
,config.cloud.workspace.attrs
- TFC commands: terraspace tfc runs list, terraspace tfc runs prune
- TFC VCS also sync as part of deploy. Also separate
terraspace tfc sync
command - Logger improvements: configurable formatter, log to stderr by default
- Rename:
cloud.relative_root
tocloud.working_dir_prefix
- Run a plan to capture the diff as part of
-y
option. IE:terraspace up demo -y
- Run plan -destroy as part of down -y
- Rename update cli to up. Only support the shorthand.
- Config options: config.all.concurrency, config.all.exit_on_fail, etc
- TFC: cloud.auto_sync option
- Improve terraform version check
- Terraform init: auto mode will retry initializing up to 3 times
- Terraspace seed: fix instance option
- fix version check for some versions of terraform
- #37 config.clean_cache option
- #36 cloud.relative_root setting
- #35 fix summary bug when ran multiple times with different envs
- #34 Terraform Cloud and Terraform Enterprise support added.
- TFC Vars support: JSON and DSL. config.overwrite and config.overwrite_sensitive configs
- Build all stacks with config/terraform files. Designed to support the TFC VCS-driven workflow.
- Layer Interface module added. All latest provider plugins like terraspace_plugin_aws make use of this module.
- Backend pattern expansion auto-detects the provider bakcend. The
expansion
method replaces thebackend_expand
method.backend_expand
is deprecated. - New expander variables: TYPE_INSTANCE, INSTANCE, CACHE_ROOT. Also added strip trailing - and / behavior.
- Timeout for terraform init. The default timeout is 10m and will then print out the terraform init log.
- Terraspace 0.2.x is compatible with terraspace_plugin_aws 0.2.x, terraspace_plugin_google 0.2.x, and terraspace_plugin_azurerm 0.2.x
- New commands: terraspace list, terraspace tfc list, terraspace tfc setup, terraspace tfc destroy, terraspace new shim, terraspace new git_hook
- terraspace list: list of modules and stacks
- terraspace tfc list: shows list of TFC workspaces
- terraspace tfc setup: setups up TFC workspace for VCS-driven workflow. This automatically happens for the TFC CLI-driven workflow.
- terraspace tfc destroy: destroys the TFC workspace associated with the stack. Can also use the
terraspace down demo --destroy-workspace
option. - terraspace new shim: An quick way to generate a terraspace shim.
- terraspace new git_hook: An quick way to set up a git pre-push hook for the TFC VCS-driven workflow.
- terraspace down: works even if there's no app/stacks folder. A fake stack is built.
- terraspace build: terraspace build placeholder concept.
- terraspace build: only builds now. auto bucket backend creation and terraform init is is still automatically called by terraform up, etc.
- terraspace up: --reconfigure option. This is useful if upgrading Terraform version.
- #33 rspec-terraspace dependency added
- #32 terraspace summary --short option
- Initial release