All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
7.0.2 - 2023-04-24
- Transport connections no longer override provided loggers.
7.0.1 - 2023-04-20
- The doctor check for the
clientattribute uses the PATH to validate the value. - The debug connection logger for
kitchen convergeis properly initialized.
7.0.0 - 2023-04-09
- Support for the
kitchen doctorcommand, which checks for deprecated or invalid configuration attributes. - Support for Inspec < 6.0
- The
terraformtransport plugin which assumes responsibility from theterraformdriver plugin for interacting with the Terraform CLI. Usekitchen doctorfor guidance on migrating the relevant driver configuration to the transport.
- Deprecated some driver configuration attributes which are assumed by
the transport:
clientcommand_timeoutroot_module_directory
- Dropped support for Inspec < 4.25.1
- Dropped support for Ruby 2.6 which reached end of life on 2022-04-12.
- Dropped support for Ruby 2.7 which reached end of life on 2023-03-31.
- Dropped support for InSpec 4.X which reached end of life on some indeterminate date.
- Support for concurrency with the following commands was reintroduced:
create;converge;setup;destroy. There is no protection against concurrently running multiple Kitchen instances which use the sameroot_module_directory. Be safe and test quickly!
6.1.0 - 2022-01-22
- Support for Terraform >= 1.1.0, < 2.0.0.
6.0.0 - 2021-07-07
- Support for Ruby 3.0.
- Support for Kitchen 3.0.
- Dropped support for Ruby 2.4, 2.5.
- Dropped Terraform 0.11 and 0.12 from the test matrix.
5.8.0 - 2021-05-18
- Support for Terraform 0.15.
5.7.2 - 2021-03-08
TF_WARN_OUTPUT_ERRORSis only set during when runningterraform destroyduringkitchen destroy. It appears that this change was erroneously declared as functional in 4.3.0. 😬
5.7.1 - 2021-02-25
- Order of operations for loading InSpec plugins
5.7.0 - 2021-02-23
- Automatic loading of InSpec plugins
- Excluded versions of InSpec which broke support for Kitchen
5.6.0 - 2020-12-08
- Support for Terraform v0.14
5.5.0 - 2020-08-25
- Support for Terraform v0.13.
- Updated all gem versions to remediate ActiveSupport vulnerability, a dependency of the train gem.
5.4.0 - 2020-05-31
- Support for Ruby 2.7.
- Gem deployment to RubyGems now takes place with GitHub Actions. Unit and Integration tests remain in Travis CI and Appveyor.
5.3.0 - 2020-03-08
- Verifier systems have a
bastion_host_outputattribute which allows a bastion host to be obtained from a Terraform output rather than statically defined with thebastion_hostattribute.
- All plugin log messages use consistent levels.
- The output of the
terraform outputcommand has been reverted to log at the debug level rather than the warn level.
5.2.0 - 2020-02-27
The "trapped in Atlanta" edition!
-
Log messages have been adjusted to provide better context and actionable information where approriate.
-
The dependency on mixlib-shellout has been updated to support installation using ChefDK versions 3.9 and newer.
5.1.1 - 2019-08-28
- RbNaCl was removed from the gem dependencies to solve for an unexpected compatibility issue with InSpec's GCP transport #351. Installation instructions were linked in the README for configurations which may require this gem.
5.1.0 - 2019-07-06
- InSpec 3 is supported again. It must be explicitly pinned in the
Gemfile, likegem "inspec", "~> 3.0".
- Default values for unsupported configuration attributes inherited from the base Kitchen plugins were removed.
5.0.0 - 2019-06-06
- The supported version of InSpec is 4. This version changes the priority of
profile attributes configurations:
systems.x.attrs_outputs- the default association of attributes to Terraform outputs
systems.x.attrs
4.9.0 - 2019-05-27
- Support for Terraform v0.12.
4.8.1 - 2019-05-11
- Added a reference to the
clientattribute in the driver documentation. - Corrected the attribute name in the
verify_versionexample.
4.8.0 - 2019-04-14
- The verifier exposes input variables configured through the
variablesattribute as InSpec profile attributes prefixed withinput_; refer to the updated Terraform Verifier documentation for more details.
- The verifier exposes output variables as InSpec profile attributes prefixed
with
output_, though the unprefixed variety of attributes are still available for backward compatibility; refer to the updated Terraform Verifier documentation for more details.
4.7.0 - 2019-04-13
- The verifier systems gained a
profile_locationsattribute which enables overriding the default InSpec profile location oftest/integration/<KITCHEN SUITE NAME>; refer to the updated Terraform Verifier documentation for more details.
- Errors are logged when they are queued while
fail_fastis disabled.
4.6.0 - 2019-04-11
- The verifier gained a
fail_fastattribute which toggles fail fast behaviour when verifying systems; refer to the updated Terraform Verifier documentation for more details.
4.5.0 - 2019-04-10
- The output of
terraform outputis logged at the debug level to prevent sensitive output values from being printed by default. This output can be viewed by enabling the debug log level. For example:kitchen converge INSTANCE --log-level=debug
4.4.0 - 2019-04-06
- The driver gained a
clientconfiguration attribute which contains the pathname to the Terraform client; refer to the Terraform Driver documentation for more details.
- The verifier lost legacy code which was implicity coupled to the SSH transport and integrated with InSpec in undocumented ways.
4.3.0 - 2019-01-20
TF_WARN_OUTPUT_ERRORSis no longer automatically set when runningterraform applyduringkitchen converge. This change should allow output errors to be more quickly exposed to the user.
4.2.1 - 2019-01-19
terraform validateis now called without-check-variables=true. This flag already defaults totrueand will be obsolete for Terraform v0.12.
4.2.0 - 2018-12-29
-
The driver gained a
:verify_versionconfiguration attribute which toggles verification of support for the available Terraform version. This feature allows unsupported versions of Terraform to be used. -
The gem supports Ruby v2.6.
4.1.1 - 2018-12-13
- The Terraform workspace is selected before outputs are retrieved.
4.1.0 - 2018-12-09
- The bundled version of InSpec is now ~> 3.0. Despite the major version change, it is intended to be backward compatible.
4.0.6 - 2018-12-02
terraform outputis moved fromkitchen convergetokitchen verifyto ensure Terraform state outputs are up to date for use as InSpec attributes regardless of the result ofkitchen converge.
4.0.5 - 2018-12-01
- The escaping of Terraform command-line arguments... Again! Arguments for
-backend-configand-varare surrounded by double quotes but are not escaped. This compromise is intended to ensure proper handling of arguments containing HashiCorp Language (HCL) on Linux, MacOS, and Windows. The corresponding values for the Kitchen configuration attributesdriver.backend_configurationsanddriver.variablesmust be properly escaped depending on the execution environment. The Kitchen configuration file used for integration testing of Kitchen-Terraform contains examples of escaped HCL values.
4.0.4 - 2018-11-21
- The escaping of Terraform command-line arguments
4.0.3 - 2018-10-03
- The version of InSpec was relaxed to include all versions between 2.2 and 3
4.0.2 - 2018-09-26
- The version of InSpec was relaxed to include 2.2.70 to enable compatability with ChefDK 3.2.30
4.0.1 - 2018-09-15
- The version of InSpec was pinned to 2.2.78 as 2.2.101 introduced a breaking change to the InSpec profile attributes system
4.0.0 - 2018-08-13
"An open-source software release is never late. Nor is it early. It arrives precisely when the maintainers get around to finishing it." - Gandalf the Free-As-In-Beer
-
The verifier configuration gained a
:systemsattribute which replaced the:groupsattribute; refer to the updated Terraform Verifier documentation for more details -
The Terraform shell out environment now enables
TF_WARN_OUTPUT_ERRORSto work around Terraform issue #17655
-
Support for Terraform < 0.11.4 was broken
-
Support for InSpec < 2.2.34 was broken
-
Support for InSpec >= 2.2.34, < 3 was introduced
-
Support for Kitchen < 1.20.0 was broken
-
Support for Kitchen ~> 1.23 was introduced
-
Support for Ruby 2.2 was broken
-
Support for concurrency with the following commands was broken:
create,converge,setup, anddestroy -
The deprecated
terraform destroy -forceflag was replaced with the supportedterraform destroy -auto-approveflag -
The working directory of the Terraform shell out environment was changed to the value of the
:root_module_directoryattribute of the driver configuration -
Support for the
:groupsattribute of the verifier configuration was broken;:systemsreplaces:groups -
InSpec was reconfigured to use the Kitchen logger for all logging
-
InSpec was reconfigured to exclusively return 0 and 1 as exit codes
3.3.1 - 2018-04-29
-
Deprecating support for Ruby 2.2; this version reaches end of life on March 31, 2018
-
Deprecating support for concurrency with the following commands:
create,converge,setup, anddestroy; these commands invoke Terraform in a manner which is not safe for concurrency
-
Escaping the following configuration attributes for safe usage in the shell out commands:
- backend_configurations
- plugin_directory
- root_module_directory
- variable_files
- variables
-
Loading of Kitchen constants to enable the use of Kitchen Rake tasks
3.3.0 - 2018-03-22
- The
lockconfiguration attribute of the driver toggles locking of the Terraform state file
3.2.0 - 2018-03-21
- Support for Ruby 2.5
3.1.0 - 2018-01-07
-
Caveat describing how to use a bastion host with the verifier groups
-
Support for InSpec to include > 1.44.8, < 2.0.0
-
Support for Test Kitchen to include > 1.16.0, < 2.0.0
-
Format of changelog to adhere to Keep a Changelog 1.0.0
-
Internal success and failure to be modeled without monads
-
All driver and provisioner actions to attempt to select or create a Terraform workspace
-
Format and wording of the verifier
groupsattribute documentation
-
Documented supported Terraform version for ClientVersionVerifier
-
Failure during
kitchen convergewhen no Terraform outputs are defined -
Failure on Windows due to use of single quoted arguments for
-backend-configand-var
3.0.0 - 2017-11-28
- Support for Terraform versions >= 0.10.2, < 0.12.0
-
Update
kitchen createandkitchen convergeto initialize and apply, respectively -
Driver and provisioner commands use Terraform workspaces
-
Execute Terraform commands in an environment including the TF_IN_AUTOMATION variable
-
Change the lock_timeout configuration attribute of the driver to an integer representing seconds
-
Remove the state configuration attribute from the driver
-
Remove the verify_plugins configuration attribute from the driver
-
Rename the directory configuration attribute of the driver to root_module_directory
-
Lock InSpec to 1.44.8 to maintain support for Ruby 2.2
-
Moved examples and tutorials to a GitHub site
-
Issues resolving relative paths in Terraform configuration files
-
Links to broken documentation on RubyDoc
2.1.0 - 2017-10-11
- Verifier
:groupshave an optional:ssh_keyattribute that overrides the Test Kitchen SSH Transport:ssh_key
2.0.0 - 2017-09-13
-
Added a description to the gem specification
-
Added support for Terraform version ~> 0.10.2 and the init command
-
Added configuration attributes to the driver
-
backend_configurations
-
lock_timeout
-
plugin_directory
-
verify_plugins
-
-
Added the color configuration attribute to the verifier
-
Dropped support for Terraform versions < 0.10.2
-
The driver's variables configuration attribute must be a hash of symbols and strings
-
Removed configuration attributes from the driver
-
cli
-
plan
-
-
Moved the project version constant to the gem namespace
-
Corrected obsolete information in the aws_provider example
1.0.2 - 2017-07-16
-
The Bundler Gemfile.lock is committed to enable Code Climate's bundler-audit engine and to simplify testing and releasing this gem with Travis CI
-
RSpec produces backtraces for failures in Travis CI
-
The integration tests use Terraform version 0.9.11 instead of version 0.9.10
-
The integration tests display the Terraform versions
-
The Getting Started guide uses kitchen-terraform 1.0 configuration attributes (thanks @davidbegin)
-
The Developing guide uses the new GitHub organization
-
The Developing guide drops reference to gem trust policies
1.0.1 - 2017-07-05
- David Begin joined the gem specification authors
-
Corrected release date for 1.0.0 in the Change Log
-
Added missing diff link for 1.0.0 in the Change Log
-
Corrected broken GitHub links in the Read Me (thanks @davidbegin)
-
Add missing thanks in 1.0.0
1.0.0 - 2017-07-01
- Support for output variables with spaces (thanks @jbussdieker)
-
Dropped support for Terraform version 0.6
-
Dropped support for Ruby 2.1
-
Improved project documentation
-
Moved all provisioner configuration attributes to the driver
-
Dropped support for specifying the configuration attribute
variablesin the literalname=valuenotation -
Dropped support for the value of the output variable specified by the configuration attribute
hostnamesbeing in CSV format -
Renamed the configuration attribute
apply_timeouttocommand_timeout -
Default the configuration attribute
clito"terraform" -
Default the configuration attribute
colorto be based on the association of the Test Kitchen process with a terminal emulator -
Improved the engine for validating configuration attribute values
- Added missing URL to 0.7.0 changes
0.7.0 - 2017-04-23
- Support for Terraform v0.9
0.6.1 - 2017-02-23
terraform planduringkitchen convergewas not reading the state file so subsequent converges would create duplicate state (thanks @johnrengelman)
0.6.0 - 2017-02-22
-
Driver configuration option to specify the pathname of the Terraform command-line interface
-
"terraform_state" InSpec attribute containing the pathname of the state file
-
Restructured code for better distribution of responsibilities
-
Intermediate workflow Terraform commands will be logged at the debug level
-
Broken reference to the Getting Started guide (thanks @nellshamrell)
-
Output names for Terraform 0.6 are correctly parsed
-
Incomplete InSpec control definition in the Getting Started guide ( thanks @burythehammer)
-
Missing descriptions of the plan and state provisioner configuration options
0.5.1 - 2017-02-17
- Support for Terraform configurations that do not define any outputs (thanks @johnrengelman)
0.5.0 - 2017-01-09
-
Support for Terraform v0.8
-
Support for Ruby 2.4
- Docker provider example's group controls configuration
0.4.0 - 2016-12-24
-
A shiny, new logo (thanks @ksexton)
-
A shiny, new Travis CI build plan (thanks @justindossey)
-
Support for Ruby 2.1 and 2.2 (thanks [@mrmarbury] and @m00gs)
-
Group attributes default to a mapping of all Terraform output variables to equivalently named InSpec attributes (thanks @shinka81)
-
A Docker provider example (thanks @errygg)
-
An OpenStack provider example (thanks @xmik)
-
Groups with no hostnames will have their controls executed locally; in theory, this enables testing of any provider API
-
Provisioner configuration for the
terraform apply -parallelismoption (thanks @s3lehtin) -
Clay Thomas, Ewa Czechowska, Erik R. Rygg, Kyle Sexton, and Walter Dolce join the gem specification authors
- Removed the pin on the RubyGems version from the gem specification (thanks @jbussdieker)
- Use the current version in the Gemfile example (thanks @walterdolce)
0.3.0 - 2016-10-04
-
Support for Terraform v0.7 (thanks @esword, @maniacal, and @nictrix)
-
Getting started guide under
examples/getting_started(thanks @nellshamrell) -
Kevin Dickerson, Nell Shamrell-Harrington, and Michael Glenney join the gem specification authors
-
Example project moved under
examples/detailed(thanks @nellshamrell) -
Deprecate support for Terraform v0.6
-
Release date of kitchen-terraform v0.2.0
-
Remove references to verifying the gem; it's problematic even with low security (thanks @kevindickerson)
0.2.0 - 2016-09-12
-
Live log stream of output from Terraform commands
-
Coercion and validation of configuration values
-
Configuration option for timeout of Terraform apply command
-
Configuration option for colored output of Terraform plan and apply commands (thanks @nictrix)
-
Configuration of variable assignments using a map
-
Getting started guide (thanks @nellshamrell)
-
CHANGELOG format is based on [Keep a CHANGELOG] (thanks @amaltson)
-
Gem specification email address (thanks @mrheath)
-
Example project automatically waits for remote SSH to be available
-
Improve error handling and messages (thanks @cullenmcdermott)
-
Deprecate configuration of variable assignments using a list or string
- Inspec is pinned at the minor feature level to reduce bug risk
0.1.2 - 2016-08-04
-
Link to referenced users' profiles in the Change Log
-
Display RuboCop Cop names in Guard output
-
Contributing and developing guides (thanks @nictrix)
-
Example instructions suggest IAM user creation for enhanced security ( thanks @nictrix)
- Example configuration is compatible with more AWS accounts (thanks @nictrix)
-
Remove enforcement of RubyGems trust policy (thanks @fivetwentysix)
-
Only suggest the LowSecurity RubyGems trust policy; in a clean Bundler environment, this is the highest policy that can be successfully applied
-
Only enforce code coverage requirements when Guard runs all specs
0.1.1 - 2016-07-26
-
Replace
0 == fixnum_objectwithfixnum_object.zero? -
Include LICENSE and README in the gem
-
Remove specs from the gem
-
Add Nick Willever to the gem specification authors
-
Lower the development bundle trust policy to MediumSecurity due to rubocop-0.42.0 not being signed 😿
-
Fix the line length of the gem specification signing key configuration
-
Correct the reference to
bundle install --trust-profilewithbundle install --trust-policyin the README (thanks @nellshamrell and @nictrix) -
Clarify the gem installation instructions in the README (thanks @nictrix)
- Initial release