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
client
attribute uses the PATH to validate the value. - The debug connection logger for
kitchen converge
is properly initialized.
7.0.0 - 2023-04-09
- Support for the
kitchen doctor
command, which checks for deprecated or invalid configuration attributes. - Support for Inspec < 6.0
- The
terraform
transport plugin which assumes responsibility from theterraform
driver plugin for interacting with the Terraform CLI. Usekitchen doctor
for guidance on migrating the relevant driver configuration to the transport.
- Deprecated some driver configuration attributes which are assumed by
the transport:
client
command_timeout
root_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_ERRORS
is only set during when runningterraform destroy
duringkitchen 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_output
attribute which allows a bastion host to be obtained from a Terraform output rather than statically defined with thebastion_host
attribute.
- All plugin log messages use consistent levels.
- The output of the
terraform output
command 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
client
attribute in the driver documentation. - Corrected the attribute name in the
verify_version
example.
4.8.0 - 2019-04-14
- The verifier exposes input variables configured through the
variables
attribute 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_locations
attribute 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_fast
is disabled.
4.6.0 - 2019-04-11
- The verifier gained a
fail_fast
attribute 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 output
is 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
client
configuration 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_ERRORS
is no longer automatically set when runningterraform apply
duringkitchen converge
. This change should allow output errors to be more quickly exposed to the user.
4.2.1 - 2019-01-19
terraform validate
is now called without-check-variables=true
. This flag already defaults totrue
and will be obsolete for Terraform v0.12.
4.2.0 - 2018-12-29
-
The driver gained a
:verify_version
configuration 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 output
is moved fromkitchen converge
tokitchen verify
to 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-config
and-var
are 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_configurations
anddriver.variables
must 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
:systems
attribute which replaced the:groups
attribute; refer to the updated Terraform Verifier documentation for more details -
The Terraform shell out environment now enables
TF_WARN_OUTPUT_ERRORS
to 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 -force
flag was replaced with the supportedterraform destroy -auto-approve
flag -
The working directory of the Terraform shell out environment was changed to the value of the
:root_module_directory
attribute of the driver configuration -
Support for the
:groups
attribute of the verifier configuration was broken;:systems
replaces: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
lock
configuration 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
groups
attribute documentation
-
Documented supported Terraform version for ClientVersionVerifier
-
Failure during
kitchen converge
when no Terraform outputs are defined -
Failure on Windows due to use of single quoted arguments for
-backend-config
and-var
3.0.0 - 2017-11-28
- Support for Terraform versions >= 0.10.2, < 0.12.0
-
Update
kitchen create
andkitchen converge
to 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
:groups
have an optional:ssh_key
attribute 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
variables
in the literalname=value
notation -
Dropped support for the value of the output variable specified by the configuration attribute
hostnames
being in CSV format -
Renamed the configuration attribute
apply_timeout
tocommand_timeout
-
Default the configuration attribute
cli
to"terraform"
-
Default the configuration attribute
color
to 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 plan
duringkitchen converge
was 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 -parallelism
option (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_object
withfixnum_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-profile
withbundle install --trust-policy
in the README (thanks @nellshamrell and @nictrix) -
Clarify the gem installation instructions in the README (thanks @nictrix)
- Initial release