Class: Kitchen::Provisioner::Terraform

Inherits:
Base
  • Object
show all
Includes:
Terraform::Configurable
Defined in:
lib/kitchen/provisioner/terraform.rb

Overview

The Terraform provisioner applies changes to the Terraform state based on the configuration of the root module.

Commands

The following command-line actions are provided by the provisioner.

kitchen converge

A Test Kitchen instance is converged through the following steps.

Selecting the Test Terraform Workspace

The workspace is selected by running a command like the following example:

<span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_terraform identifier id'</span><span class='gt op'>></span><span class='rubyid_terraform identifier id'>terraform</span><span class='lt op'><</span><span class='regexp val'>/span> <span class='rubyid_workspace identifier id'>workspace</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span> <span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_select identifier id'</span><span class='gt op'>></span><span class='rubyid_select identifier id'>select</span><span class='lt op'><</span><span class='regexp val'>/span> <span class='lt op'><</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_name identifier id'</span><span class='gt op'>></span><span class='rubyid_name identifier id'>name</span><span class='lt op'><</span><span class='regexp val'>/span><span class='gt op'>></s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span>

Updating the Terraform Dependency Modules

The dependency modules are updated by running a command like the following example:

<span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_terraform identifier id'</span><span class='gt op'>></span><span class='rubyid_terraform identifier id'>terraform</span><span class='lt op'><</span><span class='regexp val'>/span> <span class='rubyid_get identifier id'>get</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span> <span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'minus op'</span><span class='gt op'>></span><span class='minus op'>-</span><span class='lt op'><</span><span class='regexp val'>/span><span class='rubyid_update identifier id'>update</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span> <span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'lt op'</span><span class='gt op'>></span><span class='lshft op'><<</span><span class='regexp val'>/span><span class='rubyid_directory identifier id'>directory</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'gt op'</span><span class='rshft op'>>></span><span class='lt op'><</span><span class='regexp val'>/span>
</span>

Validating the Terraform Root Module
Terraform >= 0.15.0

The root module is validated by running a command like the following example:

<span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_terraform identifier id'</span><span class='gt op'>></span><span class='rubyid_terraform identifier id'>terraform</span><span class='lt op'><</span><span class='regexp val'>/span> <span class='rubyid_validate identifier id'>validate</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span> \
  <span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'lbrack token'</span><span class='gt op'>></span><span class='lbrack token'>[</span><span class='lt op'><</span><span class='regexp val'>/span><span class='minus op'>-</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_no identifier id'</span><span class='gt op'>></span><span class='rubyid_no identifier id'>no</span><span class='lt op'><</span><span class='regexp val'>/span><span class='minus op'>-</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_color identifier id'</span><span class='gt op'>></span><span class='rubyid_color identifier id'>color</span><span class='lt op'><</span><span class='regexp val'>/span><span class='rbrack token'>]</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span> \
  <span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'lt op'</span><span class='gt op'>></span><span class='lshft op'><<</span><span class='regexp val'>/span><span class='rubyid_directory identifier id'>directory</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'gt op'</span><span class='rshft op'>>></span><span class='lt op'><</span><span class='regexp val'>/span>
</span>

Terraform < 0.15.0

The root module is validated by running a command like the following example:

<span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_terraform identifier id'</span><span class='gt op'>></span><span class='rubyid_terraform identifier id'>terraform</span><span class='lt op'><</span><span class='regexp val'>/span> <span class='rubyid_validate identifier id'>validate</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span> \
  <span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'lbrack token'</span><span class='gt op'>></span><span class='lbrack token'>[</span><span class='lt op'><</span><span class='regexp val'>/span><span class='minus op'>-</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_no identifier id'</span><span class='gt op'>></span><span class='rubyid_no identifier id'>no</span><span class='lt op'><</span><span class='regexp val'>/span><span class='minus op'>-</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_color identifier id'</span><span class='gt op'>></span><span class='rubyid_color identifier id'>color</span><span class='lt op'><</span><span class='regexp val'>/span><span class='rbrack token'>]</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span> \
  <span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'lbrack token'</span><span class='gt op'>></span><span class='lbrack token'>[</span><span class='lt op'><</span><span class='regexp val'>/span><span class='minus op'>-</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_var identifier id'</span><span class='gt op'>></span><span class='rubyid_var identifier id'>var</span><span class='lt op'><</span><span class='regexp val'>/span><span class='assign token'>=</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'lt op'</span><span class='gt op'>></span><span class='lshft op'><<</span><span class='regexp val'>/span><span class='rubyid_variables identifier id'>variables</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'dot token'</span><span class='gt op'>></span><span class='dot token'>.</span><span class='lt op'><</span><span class='regexp val'>/span><span class='rubyid_first identifier id'>first</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'gt op'</span><span class='rshft op'>>></span><span class='lt op'><</span><span class='regexp val'>/span><span class='dot3 op'>...</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rbrack token'</span><span class='gt op'>></span><span class='rbrack token'>]</span><span class='lt op'><</span><span class='regexp val'>/span> \
  <span class='lbrack token'>[</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'minus op'</span><span class='gt op'>></span><span class='minus op'>-</span><span class='lt op'><</span><span class='regexp val'>/span><span class='rubyid_var identifier id'>var</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'minus op'</span><span class='gt op'>></span><span class='minus op'>-</span><span class='lt op'><</span><span class='regexp val'>/span><span class='rubyid_file identifier id'>file</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'assign token'</span><span class='geq op'>>=</span><span class='lt op'><</span><span class='regexp val'>/span><span class='lt op'><</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_variable_files identifier id'</span><span class='gt op'>></span><span class='rubyid_variable_files identifier id'>variable_files</span><span class='lt op'><</span><span class='regexp val'>/span><span class='dot token'>.</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_first identifier id'</span><span class='gt op'>></span><span class='rubyid_first identifier id'>first</span><span class='lt op'><</span><span class='regexp val'>/span><span class='gt op'>></s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'dot3 op'</span><span class='gt op'>></span><span class='dot3 op'>...</span><span class='lt op'><</span><span class='regexp val'>/span><span class='rbrack token'>]</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span> \
  <span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'lt op'</span><span class='gt op'>></span><span class='lshft op'><<</span><span class='regexp val'>/span><span class='rubyid_directory identifier id'>directory</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'gt op'</span><span class='rshft op'>>></span><span class='lt op'><</span><span class='regexp val'>/span>
</span>

Applying the Terraform State Changes

The state changes are applied by running a command like the following example:

<span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_terraform identifier id'</span><span class='gt op'>></span><span class='rubyid_terraform identifier id'>terraform</span><span class='lt op'><</span><span class='regexp val'>/span> <span class='rubyid_apply identifier id'>apply</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span>\
  <span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'minus op'</span><span class='gt op'>></span><span class='minus op'>-</span><span class='lt op'><</span><span class='regexp val'>/span><span class='rubyid_lock identifier id'>lock</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'assign token'</span><span class='geq op'>>=</span><span class='lt op'><</span><span class='regexp val'>/span><span class='lt op'><</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_lock identifier id'</span><span class='gt op'>></span><span class='rubyid_lock identifier id'>lock</span><span class='lt op'><</span><span class='regexp val'>/span><span class='gt op'>></s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span> \
  <span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'minus op'</span><span class='gt op'>></span><span class='minus op'>-</span><span class='lt op'><</span><span class='regexp val'>/span><span class='rubyid_lock identifier id'>lock</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'minus op'</span><span class='gt op'>></span><span class='minus op'>-</span><span class='lt op'><</span><span class='regexp val'>/span><span class='rubyid_timeout identifier id'>timeout</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'assign token'</span><span class='geq op'>>=</span><span class='lt op'><</span><span class='regexp val'>/span><span class='lt op'><</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_lock_timeout identifier id'</span><span class='gt op'>></span><span class='rubyid_lock_timeout identifier id'>lock_timeout</span><span class='lt op'><</span><span class='regexp val'>/span><span class='gt op'>></s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_s identifier id'</span><span class='gt op'>></span><span class='rubyid_s identifier id'>s</span><span class='lt op'><</span><span class='regexp val'>/span> \
  <span class='minus op'>-</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_input identifier id'</span><span class='gt op'>></span><span class='rubyid_input identifier id'>input</span><span class='lt op'><</span><span class='regexp val'>/span><span class='assign token'>=</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_false false kw'</span><span class='gt op'>></span><span class='rubyid_false false kw'>false</span><span class='lt op'><</span><span class='regexp val'>/span> \
  <span class='minus op'>-</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_auto identifier id'</span><span class='gt op'>></span><span class='rubyid_auto identifier id'>auto</span><span class='lt op'><</span><span class='regexp val'>/span><span class='minus op'>-</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_approve identifier id'</span><span class='gt op'>></span><span class='rubyid_approve identifier id'>approve</span><span class='lt op'><</span><span class='regexp val'>/span><span class='assign token'>=</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_true true kw'</span><span class='gt op'>></span><span class='rubyid_true true kw'>true</span><span class='lt op'><</span><span class='regexp val'>/span> \
  <span class='lbrack token'>[</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'minus op'</span><span class='gt op'>></span><span class='minus op'>-</span><span class='lt op'><</span><span class='regexp val'>/span><span class='rubyid_no identifier id'>no</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'minus op'</span><span class='gt op'>></span><span class='minus op'>-</span><span class='lt op'><</span><span class='regexp val'>/span><span class='rubyid_color identifier id'>color</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rbrack token'</span><span class='gt op'>></span><span class='rbrack token'>]</span><span class='lt op'><</span><span class='regexp val'>/span> \
  <span class='minus op'>-</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_parallelism identifier id'</span><span class='gt op'>></span><span class='rubyid_parallelism identifier id'>parallelism</span><span class='lt op'><</span><span class='regexp val'>/span><span class='assign token'>=</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'lt op'</span><span class='gt op'>></span><span class='lshft op'><<</span><span class='regexp val'>/span><span class='rubyid_parallelism identifier id'>parallelism</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'gt op'</span><span class='rshft op'>>></span><span class='lt op'><</span><span class='regexp val'>/span> \
  <span class='minus op'>-</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_refresh identifier id'</span><span class='gt op'>></span><span class='rubyid_refresh identifier id'>refresh</span><span class='lt op'><</span><span class='regexp val'>/span><span class='assign token'>=</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_true true kw'</span><span class='gt op'>></span><span class='rubyid_true true kw'>true</span><span class='lt op'><</span><span class='regexp val'>/span> \
  <span class='lbrack token'>[</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'minus op'</span><span class='gt op'>></span><span class='minus op'>-</span><span class='lt op'><</span><span class='regexp val'>/span><span class='rubyid_var identifier id'>var</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'assign token'</span><span class='geq op'>>=</span><span class='lt op'><</span><span class='regexp val'>/span><span class='lt op'><</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_variables identifier id'</span><span class='gt op'>></span><span class='rubyid_variables identifier id'>variables</span><span class='lt op'><</span><span class='regexp val'>/span><span class='dot token'>.</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_first identifier id'</span><span class='gt op'>></span><span class='rubyid_first identifier id'>first</span><span class='lt op'><</span><span class='regexp val'>/span><span class='gt op'>></s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'dot3 op'</span><span class='gt op'>></span><span class='dot3 op'>...</span><span class='lt op'><</span><span class='regexp val'>/span><span class='rbrack token'>]</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span> \
  <span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'lbrack token'</span><span class='gt op'>></span><span class='lbrack token'>[</span><span class='lt op'><</span><span class='regexp val'>/span><span class='minus op'>-</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_var identifier id'</span><span class='gt op'>></span><span class='rubyid_var identifier id'>var</span><span class='lt op'><</span><span class='regexp val'>/span><span class='minus op'>-</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_file identifier id'</span><span class='gt op'>></span><span class='rubyid_file identifier id'>file</span><span class='lt op'><</span><span class='regexp val'>/span><span class='assign token'>=</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'lt op'</span><span class='gt op'>></span><span class='lshft op'><<</span><span class='regexp val'>/span><span class='rubyid_variable_files identifier id'>variable_files</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'dot token'</span><span class='gt op'>></span><span class='dot token'>.</span><span class='lt op'><</span><span class='regexp val'>/span><span class='rubyid_first identifier id'>first</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'gt op'</span><span class='rshft op'>>></span><span class='lt op'><</span><span class='regexp val'>/span><span class='dot3 op'>...</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rbrack token'</span><span class='gt op'>></span><span class='rbrack token'>]</span><span class='lt op'><</span><span class='regexp val'>/span> \
  <span class='lt op'><</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span><span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_directory identifier id'</span><span class='gt op'>></span><span class='rubyid_directory identifier id'>directory</span><span class='lt op'><</span><span class='regexp val'>/span><span class='gt op'>></s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span>

Retrieving the Terraform Output

The outputs are retrieved by running a command like the following example:

<span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'rubyid_terraform identifier id'</span><span class='gt op'>></span><span class='rubyid_terraform identifier id'>terraform</span><span class='lt op'><</span><span class='regexp val'>/span> <span class='rubyid_output identifier id'>output</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span> <span class='lt op'><</span><span class='rubyid_span identifier id'>span</span> <span class='rubyid_class class kw'>class</span><span class='assign token'>=</span><span class='string val'>'minus op'</span><span class='gt op'>></span><span class='minus op'>-</span><span class='lt op'><</span><span class='regexp val'>/span><span class='rubyid_json identifier id'>json</s</span><span class='rubyid_pan identifier id'>pan</span><span class='gt op'>></span>

Configuration Attributes

The provisioner has no configuration attributes, but the provisioner mapping must be declared with the plugin name within the Test Kitchen configuration file.

provisioner:
  name: terraform

Ruby Interface

This class implements the interface of Kitchen::Configurable which requires the following Reek suppressions: :reek:MissingSafeMethod { exclude: [ finalize_config! ] }

Examples:

Describe the converge command

kitchen help converge

Converge a Test Kitchen instance

kitchen converge default-ubuntu

Version:

  • 2

Constant Summary collapse

UNSUPPORTED_BASE_ATTRIBUTES =

UNSUPPORTED_BASE_ATTRIBUTES is the list of attributes inherited from Kitchen::Provisioner::Base which are not supported by Kitchen::Provisioner::Terraform.

[
  :command_prefix,
  :downloads,
  :http_proxy,
  :https_proxy,
  :ftp_proxy,
  :max_retries,
  :root_path,
  :retry_on_exit_code,
  :sudo,
  :sudo_command,
  :wait_for_retry,
]

Instance Method Summary collapse

Methods included from Terraform::Configurable

#finalize_config!, included

Instance Method Details

#call(state) ⇒ Object

Converges a Test Kitchen instance.

Parameters:

  • state (Hash)

    the mutable instance and provisioner state.

Raises:

  • (Kitchen::ActionFailed)

    if the result of the action is a failure.



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/kitchen/provisioner/terraform.rb', line 82

def call(state)
  driver = instance.driver
  transport = driver.transport

  ::Kitchen::Terraform::Provisioner::Converge.new(
    config: driver.send(:config),
    connection: transport.connection({}),
    debug_connection: transport.connection(logger: ::Kitchen::Terraform::DebugLogger.new(logger)),
    logger: logger,
    version_requirement: version_requirement,
    workspace_name: workspace_name,
  ).call state: state
rescue => error
  ::Kitchen::Terraform::Raise::ActionFailed.new(logger: logger).call message: error.message
end