class Kitchen::Terraform::Provisioner::Converge
A Test Kitchen
instance is converged through the following steps.
Selecting the Test Terraform
Workspace¶ ↑
{include:Kitchen::Terraform::Command::WorkspaceSelect}
Updating the Terraform
Dependency Modules¶ ↑
{include:Kitchen::Terraform::Command::Get}
Validating the Terraform
Root Module¶ ↑
Terraform
>= 0.15.0¶ ↑
{include:Kitchen::Terraform::Command::Validate::PostZeroFifteenZero}
Terraform
< 0.15.0¶ ↑
{include:Kitchen::Terraform::Command::Validate::PreZeroFifteenZero}
Applying the Terraform
State Changes¶ ↑
{include:Kitchen::Terraform::Command::Apply}
Retrieving the Terraform
Output¶ ↑
{include:Kitchen::Terraform::Command::Output}
Attributes
Public Class Methods
initialize prepares a new instance of the class.
@param config [Hash] the configuration of the driver. @param logger [Kitchen::Logger] a logger for logging messages. @param version_requirement [Gem::VersionRequirement] the required version of the Terraform
client. @param workspace_name
[String] the name of the Terraform
workspace to select or to create. @return [Kitchen::Terraform::Driver::Converge]
# File lib/kitchen/terraform/provisioner/converge.rb, line 85 def initialize(config:, logger:, version_requirement:, workspace_name:) self.complete_config = config.to_hash.merge workspace_name: workspace_name client = complete_config.fetch :client self.client_version = ::Gem::Version.new "0.0.0" self.command_executor = ::Kitchen::Terraform::CommandExecutor.new( client: client, logger: logger, ) self.logger = logger self.options = { cwd: complete_config.fetch(:root_module_directory), timeout: complete_config.fetch(:command_timeout), } self.workspace_name = workspace_name initialize_commands initialize_outputs_handlers client: client, logger: logger self.variables = complete_config.fetch :variables self.variables_manager = ::Kitchen::Terraform::VariablesManager.new self.verify_version = ::Kitchen::Terraform::VerifyVersion.new( config: complete_config, logger: logger, version_requirement: version_requirement, ) end
Public Instance Methods
call
executes the action.
@param state [Hash] the Kitchen
instance state. @raise [Kitchen::TransientFailure] if a command fails. @return [self]
# File lib/kitchen/terraform/provisioner/converge.rb, line 69 def call(state:) read_client_version verify_version.call version: client_version execute_workflow save_variables_and_outputs state: state self end