diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 000000000..74da96bbe --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,17 @@ +# [Choice] Ruby version (use -bullseye variants on local arm64/Apple Silicon): 3, 3.0, 2, 2.7, 2.6, 3-bullseye, 3.0-bullseye, 2-bullseye, 2.7-bullseye, 2.6-bullseye, 3-buster, 3.0-buster, 2-buster, 2.7-buster, 2.6-buster +ARG VARIANT=2-bullseye +FROM mcr.microsoft.com/vscode/devcontainers/ruby:0-${VARIANT} + +# [Choice] Node.js version: none, lts/*, 16, 14, 12, 10 +ARG NODE_VERSION="none" +RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi + +# [Optional] Uncomment this section to install additional OS packages. +# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ +# && apt-get -y install --no-install-recommends + +# [Optional] Uncomment this line to install additional gems. +# RUN gem install + +# [Optional] Uncomment this line to install global node packages. +# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g " 2>&1 \ No newline at end of file diff --git a/.devcontainer/base.Dockerfile b/.devcontainer/base.Dockerfile new file mode 100644 index 000000000..3254fe8e6 --- /dev/null +++ b/.devcontainer/base.Dockerfile @@ -0,0 +1,43 @@ +# [Choice] Ruby version (use -bullseye variants on local arm64/Apple Silicon): 3, 3.0, 2, 2.7, 2.6, 3-bullseye, 3.0-bullseye, 2-bullseye, 2.7-bullseye, 2.6-bullseye, 3-buster, 3.0-buster, 2-buster, 2.7-buster, 2.6-buster +ARG VARIANT=2-bullseye +FROM ruby:${VARIANT} + +# Copy library scripts to execute +COPY library-scripts/*.sh library-scripts/*.env /tmp/library-scripts/ + +# [Option] Install zsh +ARG INSTALL_ZSH="true" +# [Option] Upgrade OS packages to their latest versions +ARG UPGRADE_PACKAGES="true" +# Install needed packages and setup non-root user. Use a separate RUN statement to add your own dependencies. +ARG USERNAME=vscode +ARG USER_UID=1000 +ARG USER_GID=$USER_UID +RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ + # Remove imagemagick due to https://security-tracker.debian.org/tracker/CVE-2019-10131 + && apt-get purge -y imagemagick imagemagick-6-common \ + # Install common packages, non-root user, rvm, core build tools + && bash /tmp/library-scripts/common-debian.sh "${INSTALL_ZSH}" "${USERNAME}" "${USER_UID}" "${USER_GID}" "${UPGRADE_PACKAGES}" "true" "true" \ + && bash /tmp/library-scripts/ruby-debian.sh "none" "${USERNAME}" "true" "true" \ + && apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* + +# [Choice] Node.js version: none, lts/*, 16, 14, 12, 10 +ARG NODE_VERSION="none" +ENV NVM_DIR=/usr/local/share/nvm +ENV NVM_SYMLINK_CURRENT=true \ + PATH=${NVM_DIR}/current/bin:${PATH} +RUN bash /tmp/library-scripts/node-debian.sh "${NVM_DIR}" "${NODE_VERSION}" "${USERNAME}" \ + && apt-get clean -y && rm -rf /var/lib/apt/lists/* + + # Remove library scripts for final image +RUN rm -rf /tmp/library-scripts + +# [Optional] Uncomment this section to install additional OS packages. +# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ +# && apt-get -y install --no-install-recommends + +# [Optional] Uncomment this line to install additional gems. +# RUN gem install + +# [Optional] Uncomment this line to install global node packages. +# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g " 2>&1 \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..914e7f7cd --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,37 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: +// https://github.com/microsoft/vscode-dev-containers/tree/v0.209.6/containers/ruby +{ + "name": "Ruby", + "build": { + "dockerfile": "Dockerfile", + "args": { + // Update 'VARIANT' to pick a Ruby version: 3, 3.0, 2, 2.7, 2.6 + // Append -bullseye or -buster to pin to an OS version. + // Use -bullseye variants on local on arm64/Apple Silicon. + "VARIANT": "3-bullseye", + // Options + "NODE_VERSION": "17" + } + }, + + // Set *default* container specific settings.json values on container create. + "settings": {}, + + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "rebornix.Ruby" + ], + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "ruby --version", + + // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "vscode", + "features": { + "terraform": "latest" + } + +} diff --git a/.github/workflows/kitchen-tests.yml b/.github/workflows/kitchen-tests.yml index 822cb821c..3e2cf65da 100644 --- a/.github/workflows/kitchen-tests.yml +++ b/.github/workflows/kitchen-tests.yml @@ -20,8 +20,8 @@ jobs: matrix: include: - operating-system: macos - terraform-version: '1.0.1' - terragrunt-version: '0.31.0' + terraform-version: '1.1.4' + terragrunt-version: '0.36.0' - operating-system: ubuntu terraform-version: '0.15.5' - operating-system: ubuntu @@ -47,7 +47,7 @@ jobs: terraform_wrapper: false - name: Setup Terragrunt if: ${{ matrix.operating-system == 'macos' }} - uses: autero1/action-terragrunt@v1.1.0 + uses: autero1/action-terragrunt@v1.1.1 with: terragrunt_version: ${{ matrix.terragrunt-version }} - name: Mirror Terraform Providers @@ -64,4 +64,4 @@ jobs: if: ${{ matrix.operating-system == 'ubuntu' }} run: | chmod 400 ./test/terraform/$VERSION_MATCHER/backend-ssh/id_ed25519 - bundle exec rake test:kitchen:backend-ssh-ubuntu \ No newline at end of file + bundle exec rake test:kitchen:backend-ssh-ubuntu diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ff1f81f0..665376ed5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,12 +2,18 @@ All notable changes to this project will be documented in this file. -The format is based on -[Keep a Changelog](http://keepachangelog.com/en/1.0.0) and this project -adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0) +and this project adheres to +[Semantic Versioning](http://semver.org/spec/v2.0.0.html). ## [Unreleased][unreleased] +## [6.1.0] - 2022-01-22 + +### Added + +- Support for Terraform >= 1.1.0, < 2.0.0. + ## [6.0.0] - 2021-07-07 ### Added @@ -30,9 +36,9 @@ adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ### Fixed -- `TF_WARN_OUTPUT_ERRORS` is only set during when running - `terraform destroy` during `kitchen destroy`. It appears that this - change was erroneously declared as functional in 4.3.0. :grimacing: +- `TF_WARN_OUTPUT_ERRORS` is only set during when running `terraform destroy` + during `kitchen destroy`. It appears that this change was erroneously declared + as functional in 4.3.0. :grimacing: ## [5.7.1] - 2021-02-25 @@ -64,7 +70,7 @@ adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ### Security -- Updated all gem versions to remediate ActiveSupport vulnerability, a +- Updated all gem versions to remediate ActiveSupport vulnerability, a dependency of the train gem. ## [5.4.0] - 2020-05-31 @@ -75,22 +81,22 @@ adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ### Changed -- Gem deployment to RubyGems now takes place with GitHub Actions. Unit - and Integration tests remain in Travis CI and Appveyor. +- 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 ### Added -- 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 the `bastion_host` attribute. +- 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 the `bastion_host` attribute. ### Fixed - 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. +- 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 @@ -98,39 +104,39 @@ The "trapped in Atlanta" edition! ### Changed -- Log messages have been adjusted to provide better context and - actionable information where approriate. +- 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. +- The dependency on mixlib-shellout has been updated to support installation + using ChefDK versions 3.9 and newer. ## [5.1.1] - 2019-08-28 ### Fixed -- 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. +- 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 ### Changed -- InSpec 3 is supported again. It must be explicitly pinned in the - `Gemfile`, like `gem "inspec", "~> 3.0"`. +- InSpec 3 is supported again. It must be explicitly pinned in the `Gemfile`, + like `gem "inspec", "~> 3.0"`. ### Fixed -- Default values for unsupported configuration attributes inherited - from the base Kitchen plugins were removed. +- Default values for unsupported configuration attributes inherited from the + base Kitchen plugins were removed. ## [5.0.0] - 2019-06-06 ### Changed -- The supported version of InSpec is 4. This version changes the - priority of profile attributes configurations: +- The supported version of InSpec is 4. This version changes the priority of + profile attributes configurations: 1. `systems.x.attrs_outputs` 1. the default association of attributes to Terraform outputs 1. `systems.x.attrs` @@ -145,37 +151,33 @@ The "trapped in Atlanta" edition! ### Fixed -- Added a reference to the `client` attribute in the driver - documentation. +- 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 ### Added -- The verifier exposes input variables configured through the - `variables` attribute as InSpec profile attributes prefixed with - `input_`; refer to the updated - [Terraform Verifier documentation][terraform-verifier] for more +- The verifier exposes input variables configured through the `variables` + attribute as InSpec profile attributes prefixed with `input_`; refer to the + updated [Terraform Verifier documentation][terraform-verifier] for more details. ### Changed -- 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][terraform-verifier] 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][terraform-verifier] for more details. ## [4.7.0] - 2019-04-13 ### Added -- The verifier systems gained a `profile_locations` attribute which - enables overriding the default InSpec profile location of - `test/integration/`; refer to the updated - [Terraform Verifier documentation][terraform-verifier] for more - details. +- The verifier systems gained a `profile_locations` attribute which enables + overriding the default InSpec profile location of + `test/integration/`; refer to the updated [Terraform + Verifier documentation][terraform-verifier] for more details. ### Changed @@ -185,55 +187,54 @@ The "trapped in Atlanta" edition! ### Added -- The verifier gained a `fail_fast` attribute which toggles fail fast - behaviour when verifying systems; refer to the updated - [Terraform Verifier documentation][terraform-verifier] for more details. +- The verifier gained a `fail_fast` attribute which toggles fail fast behaviour + when verifying systems; refer to the updated [Terraform Verifier + documentation][terraform-verifier] for more details. ## [4.5.0] - 2019-04-10 ### Changed -- 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: +- 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 ### Added -- The driver gained a `client` configuration attribute which contains - the pathname to the Terraform client; refer to the - [Terraform Driver documentation][terraform-driver] for more details. +- The driver gained a `client` configuration attribute which contains the + pathname to the Terraform client; refer to the [Terraform Driver + documentation][terraform-driver] for more details. ### Fixed -- The verifier lost legacy code which was implicity coupled to the SSH - transport and integrated with InSpec in undocumented ways. +- 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 ### Changed - `TF_WARN_OUTPUT_ERRORS` is no longer automatically set when running - `terraform apply` during `kitchen converge`. This change should allow - output errors to be more quickly exposed to the user. + `terraform apply` during `kitchen converge`. This change should allow output + errors to be more quickly exposed to the user. ## [4.2.1] - 2019-01-19 ### Changed -- `terraform validate` is now called without `-check-variables=true`. - This flag already defaults to `true` and will be obsolete for - Terraform v0.12. +- `terraform validate` is now called without `-check-variables=true`. This flag + already defaults to `true` and will be obsolete for Terraform v0.12. ## [4.2.0] - 2018-12-29 ### Added -- 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 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. @@ -247,32 +248,30 @@ The "trapped in Atlanta" edition! ### Changed -- The bundled version of InSpec is now ~> 3.0. Despite the major - version change, it is intended to be backward compatible. +- 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 ### Fixed -- `terraform output` is moved from `kitchen converge` to - `kitchen verify` to ensure Terraform state outputs are up to date for - use as InSpec attributes regardless of the result of - `kitchen converge`. +- `terraform output` is moved from `kitchen converge` to `kitchen verify` to + ensure Terraform state outputs are up to date for use as InSpec attributes + regardless of the result of `kitchen converge`. ## [4.0.5] - 2018-12-01 ### Fixed -- 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 attributes `driver.backend_configurations` and - `driver.variables` must be properly escaped depending on the execution - environment. The [Kitchen configuration file](kitchen.yml) used for - integration testing of Kitchen-Terraform contains examples of escaped - HCL values. +- 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 attributes + `driver.backend_configurations` and `driver.variables` must be properly + escaped depending on the execution environment. The + [Kitchen configuration file](kitchen.yml) used for integration testing of + Kitchen-Terraform contains examples of escaped HCL values. ## [4.0.4] - 2018-11-21 @@ -284,39 +283,36 @@ The "trapped in Atlanta" edition! ### Changed -- The version of InSpec was relaxed to include all versions between 2.2 - and 3 +- The version of InSpec was relaxed to include all versions between 2.2 and 3 ## [4.0.2] - 2018-09-26 ### Changed -- The version of InSpec was relaxed to include 2.2.70 to enable - compatability with ChefDK 3.2.30 +- 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 ### Fixed -- The version of InSpec was pinned to 2.2.78 as 2.2.101 introduced a - breaking change to the InSpec profile attributes system +- 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 +"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 ### Added -- The verifier configuration gained a `:systems` attribute which - replaced the `:groups` attribute; refer to the updated - [Terraform Verifier documentation][terraform-verifier] for more - details +- The verifier configuration gained a `:systems` attribute which replaced the + `:groups` attribute; refer to the updated [Terraform Verifier + documentation][terraform-verifier] for more details -- The Terraform shell out environment now enables - `TF_WARN_OUTPUT_ERRORS` to work around - [Terraform issue #17655][terraform-issue-17655] +- The Terraform shell out environment now enables `TF_WARN_OUTPUT_ERRORS` to + work around [Terraform issue #17655][terraform-issue-17655] ### Changed @@ -332,18 +328,18 @@ Gandalf the Free-As-In-Beer - Support for Ruby 2.2 was broken -- Support for concurrency with the following commands was broken: - `create`, `converge`, `setup`, and `destroy` +- Support for concurrency with the following commands was broken: `create`, + `converge`, `setup`, and `destroy` -- The deprecated `terraform destroy -force` flag was replaced with the - supported `terraform destroy -auto-approve` flag +- The deprecated `terraform destroy -force` flag was replaced with the supported + `terraform 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 +- 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` +- 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 @@ -353,17 +349,17 @@ Gandalf the Free-As-In-Beer ### Changed -- Deprecating support for Ruby 2.2; this version reaches end of life on - March 31, 2018 +- 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`, and `destroy`; these commands invoke - Terraform in a manner which is not safe for concurrency +- Deprecating support for concurrency with the following commands: `create`, + `converge`, `setup`, and `destroy`; these commands invoke Terraform in a + manner which is not safe for concurrency ### Fixed -- Escaping the following configuration attributes for safe usage in the - shell out commands: +- Escaping the following configuration attributes for safe usage in the shell + out commands: - backend_configurations - plugin_directory @@ -377,8 +373,8 @@ Gandalf the Free-As-In-Beer ### Added -- The `lock` configuration attribute of the driver toggles locking of - the Terraform state file +- The `lock` configuration attribute of the driver toggles locking of the + Terraform state file ## [3.2.0] - 2018-03-21 @@ -402,19 +398,18 @@ Gandalf the Free-As-In-Beer - Internal success and failure to be modeled without monads -- All driver and provisioner actions to attempt to select or create a - Terraform workspace +- All driver and provisioner actions to attempt to select or create a Terraform + workspace - Format and wording of the verifier `groups` attribute documentation ### Fixed - Documented supported Terraform version for ClientVersionVerifier -- Failure during `kitchen converge` when no Terraform outputs are - defined +- 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` +- Failure on Windows due to use of single quoted arguments for `-backend-config` + and `-var` ## [3.0.0] - 2017-11-28 @@ -424,16 +419,16 @@ Gandalf the Free-As-In-Beer ### Changed -- Update `kitchen create` and `kitchen converge` to initialize and - apply, respectively +- Update `kitchen create` and `kitchen 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 +- 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 +- Change the lock_timeout configuration attribute of the driver to an integer + representing seconds - Remove the state configuration attribute from the driver @@ -457,8 +452,8 @@ Gandalf the Free-As-In-Beer ### Added -- Verifier `:groups` have an optional `:ssh_key` attribute that - overrides the Test Kitchen SSH Transport `:ssh_key` +- Verifier `:groups` have an optional `:ssh_key` attribute that overrides the + Test Kitchen SSH Transport `:ssh_key` ## [2.0.0] - 2017-09-13 @@ -484,8 +479,8 @@ Gandalf the Free-As-In-Beer - Dropped support for Terraform versions < 0.10.2 -- The driver's variables configuration attribute must be a hash of - symbols and strings +- The driver's variables configuration attribute must be a hash of symbols and + strings - Removed configuration attributes from the driver @@ -503,23 +498,21 @@ Gandalf the Free-As-In-Beer ### Added -- 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 +- 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 ### Changed -- The integration tests use Terraform version 0.9.11 instead of version - 0.9.10 +- The integration tests use Terraform version 0.9.11 instead of version 0.9.10 - The integration tests display the Terraform versions ### Fixed -- The Getting Started guide uses kitchen-terraform 1.0 configuration - attributes (thanks [@davidbegin]) +- The Getting Started guide uses kitchen-terraform 1.0 configuration attributes + (thanks [@davidbegin]) - The Developing guide uses the new GitHub organization @@ -557,19 +550,18 @@ Gandalf the Free-As-In-Beer - Moved all provisioner configuration attributes to the driver -- Dropped support for specifying the configuration attribute `variables` - in the literal `name=value` notation +- Dropped support for specifying the configuration attribute `variables` in the + literal `name=value` notation -- Dropped support for the value of the output variable specified by - the configuration attribute `hostnames` being in CSV format +- 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` to - `command_timeout` +- Renamed the configuration attribute `apply_timeout` to `command_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 +- 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 @@ -587,9 +579,8 @@ Gandalf the Free-As-In-Beer ### Fixed -- `terraform plan` during `kitchen converge` was not reading the state - file so subsequent converges would create duplicate state - (thanks [@johnrengelman]) +- `terraform plan` during `kitchen converge` was not reading the state file so + subsequent converges would create duplicate state (thanks [@johnrengelman]) ## [0.6.0] - 2017-02-22 @@ -598,15 +589,13 @@ Gandalf the Free-As-In-Beer - Driver configuration option to specify the pathname of the Terraform command-line interface -- "terraform_state" InSpec attribute containing the pathname of the - state file +- "terraform_state" InSpec attribute containing the pathname of the state file ### Changed - Restructured code for better distribution of responsibilities -- Intermediate workflow Terraform commands will be logged at the debug - level +- Intermediate workflow Terraform commands will be logged at the debug level ### Fixed @@ -614,18 +603,17 @@ Gandalf the Free-As-In-Beer - Output names for Terraform 0.6 are correctly parsed -- Incomplete InSpec control definition in the Getting Started guide ( - thanks [@burythehammer]) +- Incomplete InSpec control definition in the Getting Started guide ( thanks + [@burythehammer]) -- Missing descriptions of the plan and state provisioner configuration - options +- Missing descriptions of the plan and state provisioner configuration options ## [0.5.1] - 2017-02-17 ### Fixed -- Support for Terraform configurations that do not define any outputs - (thanks [@johnrengelman]) +- Support for Terraform configurations that do not define any outputs (thanks + [@johnrengelman]) ## [0.5.0] - 2017-01-09 @@ -652,26 +640,26 @@ Gandalf the Free-As-In-Beer - [Code Climate coverage][code climate coverage] -- Group attributes default to a mapping of all Terraform output - variables to equivalently named InSpec attributes (thanks [@shinka81]) +- 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 +- 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]) +- 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 +- Clay Thomas, Ewa Czechowska, Erik R. Rygg, Kyle Sexton, and Walter Dolce join + the gem specification authors ### Changed -- Removed the pin on the RubyGems version from the gem specification - (thanks [@jbussdieker]) +- Removed the pin on the RubyGems version from the gem specification (thanks + [@jbussdieker]) ### Fixed @@ -681,19 +669,17 @@ Gandalf the Free-As-In-Beer ### Added -- Support for Terraform v0.7 (thanks [@esword], [@maniacal], and - [@nictrix]) +- 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 +- Kevin Dickerson, Nell Shamrell-Harrington, and Michael Glenney join the gem + specification authors ### Changed -- Example project moved under `examples/detailed` (thanks - [@nellshamrell]) +- Example project moved under `examples/detailed` (thanks [@nellshamrell]) - Deprecate support for Terraform v0.6 @@ -701,8 +687,8 @@ Gandalf the Free-As-In-Beer - Release date of kitchen-terraform v0.2.0 -- Remove references to verifying the gem; it's problematic even with - low security (thanks [@kevindickerson]) +- Remove references to verifying the gem; it's problematic even with low + security (thanks [@kevindickerson]) ## [0.2.0] - 2016-09-12 @@ -714,8 +700,8 @@ Gandalf the Free-As-In-Beer - Configuration option for timeout of Terraform apply command -- Configuration option for colored output of Terraform plan and apply - commands (thanks [@nictrix]) +- Configuration option for colored output of Terraform plan and apply commands + (thanks [@nictrix]) - Configuration of variable assignments using a map @@ -747,21 +733,19 @@ Gandalf the Free-As-In-Beer - Contributing and developing guides (thanks [@nictrix]) -- Example instructions suggest IAM user creation for enhanced security ( - thanks [@nictrix]) +- Example instructions suggest IAM user creation for enhanced security ( thanks + [@nictrix]) ### Changed -- Example configuration is compatible with more AWS accounts (thanks - [@nictrix]) +- Example configuration is compatible with more AWS accounts (thanks [@nictrix]) ### Fixed - 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 + environment, this is the highest policy that can be successfully applied - Only enforce code coverage requirements when Guard runs all specs @@ -787,19 +771,20 @@ Gandalf the Free-As-In-Beer - Fix the line length of the gem specification signing key configuration - Correct the reference to `bundle install --trust-profile` with - `bundle install --trust-policy` in the README (thanks [@nellshamrell] - and [@nictrix]) - -- Clarify the gem installation instructions in the README (thanks + `bundle install --trust-policy` in the README (thanks [@nellshamrell] and [@nictrix]) +- Clarify the gem installation instructions in the README (thanks [@nictrix]) + ## 0.1.0 - 2016-07-22 ### Added - Initial release -[unreleased]: https://github.com/newcontext/kitchen-terraform/compare/v6.0.0...HEAD +[unreleased]: + https://github.com/newcontext/kitchen-terraform/compare/v6.1.0...HEAD +[6.1.0]: https://github.com/newcontext/kitchen-terraform/compare/v6.0.0...v6.1.0 [6.0.0]: https://github.com/newcontext/kitchen-terraform/compare/v5.8.0...v6.0.0 [5.8.0]: https://github.com/newcontext/kitchen-terraform/compare/v5.7.2...v5.8.0 [5.7.2]: https://github.com/newcontext/kitchen-terraform/compare/v5.7.1...v5.7.2 @@ -873,9 +858,12 @@ Gandalf the Free-As-In-Beer [@shinka81]: https://github.com/shinka81 [@walterdolce]: https://github.com/walterdolce [@xmik]: https://github.com/xmik -[code climate coverage]: https://codeclimate.com/github/newcontext-oss/kitchen-terraform +[code climate coverage]: + https://codeclimate.com/github/newcontext-oss/kitchen-terraform [travis ci build plan]: https://travis-ci.com/newcontext-oss/kitchen-terraform [terraform-issue-17655]: https://github.com/hashicorp/terraform/issues/17655 -[terraform-driver]: https://www.rubydoc.info/github/newcontext-oss/kitchen-terraform/Kitchen/Driver/Terraform -[terraform-verifier]: http://www.rubydoc.info/github/newcontext-oss/kitchen-terraform/Kitchen/Verifier/Terraform +[terraform-driver]: + https://www.rubydoc.info/github/newcontext-oss/kitchen-terraform/Kitchen/Driver/Terraform +[terraform-verifier]: + http://www.rubydoc.info/github/newcontext-oss/kitchen-terraform/Kitchen/Verifier/Terraform [#351]: https://github.com/newcontext-oss/kitchen-terraform/issues/351 diff --git a/README.md b/README.md index 1d1a8c436..f37fd4d5d 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Installation instructions can be found in the [Terraform: Install Terraform][terraform-install] article. Kitchen-Terraform supports versions of Terraform in the interval of -`>= 0.11.4, < 1.1.0`. +`>= 0.11.4, < 2.0.0`. [tfenv] can be used to manage versions of Terraform on the system. @@ -102,7 +102,7 @@ example. > Installing Kitchen-Terraform with RubyGems ```sh -gem install kitchen-terraform --version 6.0.0 +gem install kitchen-terraform --version 6.1.0 ``` This approach is not recommended as it requires more effort to install @@ -283,5 +283,3 @@ Kitchen-Terraform is distributed under the [Apache License][license]. [terraform]: https://www.terraform.io/ [test-directory]: https://github.com/newcontext-oss/kitchen-terraform/tree/master/test [tfenv]: https://github.com/kamatama41/tfenv -[travis-build-status-shield]: https://img.shields.io/travis/com/newcontext-oss/kitchen-terraform.svg -[travis-build-status]: https://travis-ci.com/newcontext-oss/kitchen-terraform diff --git a/bin/bundle b/bin/bundle index b4615e295..824f45d76 100755 --- a/bin/bundle +++ b/bin/bundle @@ -60,16 +60,16 @@ m = Module.new do Regexp.last_match(1) end - def bundler_version - @bundler_version ||= + def bundler_requirement + @bundler_requirement ||= env_var_version || cli_arg_version || - lockfile_version + bundler_requirement_for(lockfile_version) end - def bundler_requirement - return "#{Gem::Requirement.default}.a" unless bundler_version + def bundler_requirement_for(version) + return "#{Gem::Requirement.default}.a" unless version - bundler_gem_version = Gem::Version.new(bundler_version) + bundler_gem_version = Gem::Version.new(version) requirement = bundler_gem_version.approximate_recommendation diff --git a/bin/travis b/bin/travis deleted file mode 100755 index 49ef44ca6..000000000 --- a/bin/travis +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env ruby -# frozen_string_literal: true - -# -# This file was generated by Bundler. -# -# The application 'travis' is installed as part of a gem, and -# this file is here to facilitate running it. -# - -require "pathname" -ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../gems.rb", - Pathname.new(__FILE__).realpath) - -bundle_binstub = File.expand_path("../bundle", __FILE__) - -if File.file?(bundle_binstub) - if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ - load(bundle_binstub) - else - abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. -Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") - end -end - -require "rubygems" -require "bundler/setup" - -load Gem.bin_path("travis", "travis") diff --git a/bin/update-gems-locked.sh b/bin/update-gems-locked.sh index 020960cc1..91602991c 100755 --- a/bin/update-gems-locked.sh +++ b/bin/update-gems-locked.sh @@ -13,5 +13,5 @@ then else bundle install fi -bundle binstubs --force bundler guard middleman-cli pry rake reek rspec-core rufo test-kitchen travis yard +bundle binstubs --force bundler guard middleman-cli pry rake reek rspec-core rufo test-kitchen yard set +x diff --git a/docs/apple-touch-icon-114x114-precomposed.png b/docs/apple-touch-icon-114x114-precomposed.png index 78f426e42..58ae4e7d0 100644 Binary files a/docs/apple-touch-icon-114x114-precomposed.png and b/docs/apple-touch-icon-114x114-precomposed.png differ diff --git a/docs/apple-touch-icon-120x120-precomposed.png b/docs/apple-touch-icon-120x120-precomposed.png index acd54e9ba..58ae4e7d0 100644 Binary files a/docs/apple-touch-icon-120x120-precomposed.png and b/docs/apple-touch-icon-120x120-precomposed.png differ diff --git a/docs/apple-touch-icon-144x144-precomposed.png b/docs/apple-touch-icon-144x144-precomposed.png index d0838d782..58ae4e7d0 100644 Binary files a/docs/apple-touch-icon-144x144-precomposed.png and b/docs/apple-touch-icon-144x144-precomposed.png differ diff --git a/docs/apple-touch-icon-152x152-precomposed.png b/docs/apple-touch-icon-152x152-precomposed.png index e617583a8..58ae4e7d0 100644 Binary files a/docs/apple-touch-icon-152x152-precomposed.png and b/docs/apple-touch-icon-152x152-precomposed.png differ diff --git a/docs/apple-touch-icon-180x180-precomposed.png b/docs/apple-touch-icon-180x180-precomposed.png index 864fe177a..58ae4e7d0 100644 Binary files a/docs/apple-touch-icon-180x180-precomposed.png and b/docs/apple-touch-icon-180x180-precomposed.png differ diff --git a/docs/apple-touch-icon-57x57-precomposed.png b/docs/apple-touch-icon-57x57-precomposed.png index d8f307e97..58ae4e7d0 100644 Binary files a/docs/apple-touch-icon-57x57-precomposed.png and b/docs/apple-touch-icon-57x57-precomposed.png differ diff --git a/docs/apple-touch-icon-60x60-precomposed.png b/docs/apple-touch-icon-60x60-precomposed.png index 0f748ffc4..58ae4e7d0 100644 Binary files a/docs/apple-touch-icon-60x60-precomposed.png and b/docs/apple-touch-icon-60x60-precomposed.png differ diff --git a/docs/apple-touch-icon-72x72-precomposed.png b/docs/apple-touch-icon-72x72-precomposed.png index b71483b9a..58ae4e7d0 100644 Binary files a/docs/apple-touch-icon-72x72-precomposed.png and b/docs/apple-touch-icon-72x72-precomposed.png differ diff --git a/docs/apple-touch-icon-76x76-precomposed.png b/docs/apple-touch-icon-76x76-precomposed.png index 3594c4357..58ae4e7d0 100644 Binary files a/docs/apple-touch-icon-76x76-precomposed.png and b/docs/apple-touch-icon-76x76-precomposed.png differ diff --git a/docs/apple-touch-icon-precomposed.png b/docs/apple-touch-icon-precomposed.png index d8f307e97..58ae4e7d0 100644 Binary files a/docs/apple-touch-icon-precomposed.png and b/docs/apple-touch-icon-precomposed.png differ diff --git a/docs/apple-touch-icon.png b/docs/apple-touch-icon.png index d8f307e97..58ae4e7d0 100644 Binary files a/docs/apple-touch-icon.png and b/docs/apple-touch-icon.png differ diff --git a/docs/community/index.html b/docs/community/index.html index dbe5b9194..0e4c89b9e 100644 --- a/docs/community/index.html +++ b/docs/community/index.html @@ -70,7 +70,7 @@

Contribute, report bugs and submit new features at our Github Page

- Check out Kitchen-Terraform on Travis CI + Check out Kitchen-Terraform on GitHub Actions

Find Kitchen-Terraform on rubygems.org diff --git a/docs/favicon-160x160.png b/docs/favicon-160x160.png index e89119ae8..58ae4e7d0 100644 Binary files a/docs/favicon-160x160.png and b/docs/favicon-160x160.png differ diff --git a/docs/favicon-16x16.png b/docs/favicon-16x16.png index 86f25d5a7..58ae4e7d0 100644 Binary files a/docs/favicon-16x16.png and b/docs/favicon-16x16.png differ diff --git a/docs/favicon-196x196.png b/docs/favicon-196x196.png index f41e03217..58ae4e7d0 100644 Binary files a/docs/favicon-196x196.png and b/docs/favicon-196x196.png differ diff --git a/docs/favicon-32x32.png b/docs/favicon-32x32.png index 1ab7c41e1..58ae4e7d0 100644 Binary files a/docs/favicon-32x32.png and b/docs/favicon-32x32.png differ diff --git a/docs/favicon-96x96.png b/docs/favicon-96x96.png index a2a5b8fcc..58ae4e7d0 100644 Binary files a/docs/favicon-96x96.png and b/docs/favicon-96x96.png differ diff --git a/docs/favicon.ico b/docs/favicon.ico index 7d5a47c6b..58ae4e7d0 100644 Binary files a/docs/favicon.ico and b/docs/favicon.ico differ diff --git a/docs/favicon.png b/docs/favicon.png index 86f25d5a7..58ae4e7d0 100644 Binary files a/docs/favicon.png and b/docs/favicon.png differ diff --git a/docs/index.html b/docs/index.html index 9fdb042c4..461717360 100644 --- a/docs/index.html +++ b/docs/index.html @@ -92,11 +92,11 @@

>

- + Build status diff --git a/docs/mstile-144x144.png b/docs/mstile-144x144.png index d0838d782..58ae4e7d0 100644 Binary files a/docs/mstile-144x144.png and b/docs/mstile-144x144.png differ diff --git a/docs/mstile-150x150.png b/docs/mstile-150x150.png index 20e81ab22..58ae4e7d0 100644 Binary files a/docs/mstile-150x150.png and b/docs/mstile-150x150.png differ diff --git a/docs/mstile-310x150.png b/docs/mstile-310x150.png index 961f547ff..58ae4e7d0 100644 Binary files a/docs/mstile-310x150.png and b/docs/mstile-310x150.png differ diff --git a/docs/mstile-310x310.png b/docs/mstile-310x310.png index 123df2acd..58ae4e7d0 100644 Binary files a/docs/mstile-310x310.png and b/docs/mstile-310x310.png differ diff --git a/docs/mstile-70x70.png b/docs/mstile-70x70.png index 1024ce09f..58ae4e7d0 100644 Binary files a/docs/mstile-70x70.png and b/docs/mstile-70x70.png differ diff --git a/kitchen-terraform.gemspec b/kitchen-terraform.gemspec index 592ec0978..6912ad072 100644 --- a/kitchen-terraform.gemspec +++ b/kitchen-terraform.gemspec @@ -32,7 +32,6 @@ require "rubygems" specification.add_development_dependency "rspec", "~> 3.10" specification.add_development_dependency "rufo", "~> 0.7" specification.add_development_dependency "simplecov", "~> 0.16.1" - specification.add_development_dependency "travis", "~> 1.8" specification.add_development_dependency "yard", "~> 0.9" specification.add_development_dependency "reek", "~> 6.0.2" # webrick is implicitly required by yard @@ -43,9 +42,9 @@ require "rubygems" specification.add_runtime_dependency "inspec", ">= 3", "< 5", "!= 4.24.26", "!= 4.24.28", "!= 4.24.32" specification.add_runtime_dependency "json", "~> 2.3" specification.add_runtime_dependency "test-kitchen", ">= 2.1", "< 4.0" - specification.add_runtime_dependency "tty-which", "~> 0.4.0" + specification.add_runtime_dependency "tty-which", "~> 0.5.0" specification.cert_chain = ["certs/gem-public_cert.pem"] specification.required_ruby_version = [">= 2.6", "< 4.0"] - specification.requirements = ["Terraform >= v0.11.4, < v1.1.0"] + specification.requirements = ["Terraform >= v0.11.4, < v2.0.0"] specification.signing_key = "certs/gem-private_key.pem" if $PROGRAM_NAME =~ /gem\z/ end diff --git a/lib/kitchen/terraform/configurable.rb b/lib/kitchen/terraform/configurable.rb index 49f24cea0..e35fd86db 100644 --- a/lib/kitchen/terraform/configurable.rb +++ b/lib/kitchen/terraform/configurable.rb @@ -42,7 +42,7 @@ def self.included(configurable_class) # @see Kitchen::Configurable#finalize_config! def finalize_config!(instance) super instance - self.version_requirement = ::Gem::Requirement.new ">= 0.11.4", "< 1.1.0" + self.version_requirement = ::Gem::Requirement.new ">= 0.11.4", "< 2.0.0" self.workspace_name = "kitchen-terraform-#{::Shellwords.escape instance.name}" end diff --git a/lib/kitchen/terraform/version.rb b/lib/kitchen/terraform/version.rb index e2890cccb..2dda4db0e 100644 --- a/lib/kitchen/terraform/version.rb +++ b/lib/kitchen/terraform/version.rb @@ -71,7 +71,7 @@ def temporarily_override(version:) # @api private def value - self.value = ::Gem::Version.new "6.0.0" if not @value + self.value = ::Gem::Version.new "6.1.0" if not @value @value end diff --git a/source/community/index.html.erb b/source/community/index.html.erb index 232eecfd2..7363e2c1c 100644 --- a/source/community/index.html.erb +++ b/source/community/index.html.erb @@ -13,7 +13,7 @@ title: Community Resources for Kitchen-Terraform Contribute, report bugs and submit new features at our Github Page

- Check out Kitchen-Terraform on Travis CI + Check out Kitchen-Terraform on GitHub Actions

Find Kitchen-Terraform on rubygems.org diff --git a/source/index.html.erb b/source/index.html.erb index 3df316626..b51629a7c 100644 --- a/source/index.html.erb +++ b/source/index.html.erb @@ -35,11 +35,11 @@ title: Kitchen-Terraform >

- + Build status diff --git a/spec/lib/kitchen/driver/terraform_spec.rb b/spec/lib/kitchen/driver/terraform_spec.rb index b362f189e..80eaa65a5 100644 --- a/spec/lib/kitchen/driver/terraform_spec.rb +++ b/spec/lib/kitchen/driver/terraform_spec.rb @@ -65,7 +65,7 @@ end let :version_requirement do - ::Gem::Requirement.new ">= 0.11.4", "< 1.1.0" + ::Gem::Requirement.new ">= 0.11.4", "< 2.0.0" end let :workspace_name do diff --git a/spec/lib/kitchen/terraform/version_spec.rb b/spec/lib/kitchen/terraform/version_spec.rb index b7045496c..6d44befcc 100644 --- a/spec/lib/kitchen/terraform/version_spec.rb +++ b/spec/lib/kitchen/terraform/version_spec.rb @@ -24,7 +24,7 @@ end let :version do - ::Gem::Version.new "6.0.0" + ::Gem::Version.new "6.1.0" end describe ".assign_plugin_version" do diff --git a/spec/support/kitchen/terraform/configurable_examples.rb b/spec/support/kitchen/terraform/configurable_examples.rb index f595dbbfd..874f5c35e 100644 --- a/spec/support/kitchen/terraform/configurable_examples.rb +++ b/spec/support/kitchen/terraform/configurable_examples.rb @@ -26,7 +26,7 @@ describe "@plugin_version" do it "equals the gem version" do - expect(described_class.instance_variable_get(:@plugin_version)).to eq "6.0.0" + expect(described_class.instance_variable_get(:@plugin_version)).to eq "6.1.0" end end diff --git a/test/terraform/PlugIns/versions.tf b/test/terraform/PlugIns/versions.tf index 44a661a20..e3a233c7e 100644 --- a/test/terraform/PlugIns/versions.tf +++ b/test/terraform/PlugIns/versions.tf @@ -13,7 +13,7 @@ # limitations under the License. terraform { - required_version = ">= 0.13.0, < 1.1.0" + required_version = ">= 0.13.0, < 2.0.0" required_providers { local = { diff --git a/test/terraform/attributes/versions.tf b/test/terraform/attributes/versions.tf index 4fd83f252..9f8e387c8 100644 --- a/test/terraform/attributes/versions.tf +++ b/test/terraform/attributes/versions.tf @@ -13,5 +13,5 @@ # limitations under the License. terraform { - required_version = ">= 0.13.0, < 1.1.0" + required_version = ">= 0.13.0, < 2.0.0" } diff --git a/test/terraform/backend-ssh/versions.tf b/test/terraform/backend-ssh/versions.tf index 30a731702..37df2ea02 100644 --- a/test/terraform/backend-ssh/versions.tf +++ b/test/terraform/backend-ssh/versions.tf @@ -13,7 +13,7 @@ # limitations under the License. terraform { - required_version = ">= 0.13.0, < 1.1.0" + required_version = ">= 0.13.0, < 2.0.0" required_providers { docker = { diff --git a/test/terraform/variables/versions.tf b/test/terraform/variables/versions.tf index 44a661a20..e3a233c7e 100644 --- a/test/terraform/variables/versions.tf +++ b/test/terraform/variables/versions.tf @@ -13,7 +13,7 @@ # limitations under the License. terraform { - required_version = ">= 0.13.0, < 1.1.0" + required_version = ">= 0.13.0, < 2.0.0" required_providers { local = { diff --git a/test/terraform/workspace/versions.tf b/test/terraform/workspace/versions.tf index 4fd83f252..9f8e387c8 100644 --- a/test/terraform/workspace/versions.tf +++ b/test/terraform/workspace/versions.tf @@ -13,5 +13,5 @@ # limitations under the License. terraform { - required_version = ">= 0.13.0, < 1.1.0" + required_version = ">= 0.13.0, < 2.0.0" }