Class: Kitchen::Terraform::Driver::Destroy
- Inherits:
-
Object
- Object
- Kitchen::Terraform::Driver::Destroy
- Defined in:
- lib/kitchen/terraform/driver/destroy.rb
Overview
A Test Kitchen instance is destroyed through the following steps.
Initializing the Terraform Working Directory
Terraform >= 0.15.0
The working directory is initialized by running a command like the following example:
<span class='rubyid_terraform identifier id'>terraform</span> <span class='rubyid_init identifier id'>init</span> \
<span class='minus op'>-</span><span class='rubyid_backend identifier id'>backend</span><span class='assign token'>=</span><span class='rubyid_true true kw'>true</span> \
<span class='lbrack token'>[</span><span class='minus op'>-</span><span class='rubyid_backend identifier id'>backend</span><span class='minus op'>-</span><span class='rubyid_config identifier id'>config</span><span class='assign token'>=</span><span class='lt op'><</span><span class='rubyid_backend_configurations identifier id'>backend_configurations</span><span class='lbrack token'>[</span><span class='integer val'>0</span><span class='rbrack token'>]</span><span class='gt op'>></span> <span class='dot3 op'>...</span><span class='rbrack token'>]</span> \
<span class='minus op'>-</span><span class='rubyid_force identifier id'>force</span><span class='minus op'>-</span><span class='rubyid_copy identifier id'>copy</span> \
<span class='minus op'>-</span><span class='rubyid_get identifier id'>get</span><span class='assign token'>=</span><span class='rubyid_true true kw'>true</span> \
<span class='minus op'>-</span><span class='rubyid_input identifier id'>input</span><span class='assign token'>=</span><span class='rubyid_false false kw'>false</span> \
<span class='lbrack token'>[</span><span class='minus op'>-</span><span class='rubyid_no identifier id'>no</span><span class='minus op'>-</span><span class='rubyid_color identifier id'>color</span><span class='rbrack token'>]</span> \
<span class='lbrack token'>[</span><span class='minus op'>-</span><span class='rubyid_plugin identifier id'>plugin</span><span class='minus op'>-</span><span class='rubyid_dir identifier id'>dir</span><span class='assign token'>=</span><span class='lt op'><</span><span class='rubyid_plugin_directory identifier id'>plugin_directory</span><span class='gt op'>></span><span class='rbrack token'>]</span> \
<span class='lbrack token'>[</span><span class='minus op'>-</span><span class='rubyid_upgrade identifier id'>upgrade</span><span class='assign token'>=</span><span class='rubyid_true true kw'>true</span><span class='rbrack token'>]</span> \
<span class='lt op'><</span><span class='rubyid_root_module_directory identifier id'>root_module_directory</span><span class='gt op'>></span>
Terraform < 0.15.0
The working directory is initialized by running a command like the following example:
<span class='rubyid_terraform identifier id'>terraform</span> <span class='rubyid_init identifier id'>init</span> \
<span class='minus op'>-</span><span class='rubyid_backend identifier id'>backend</span><span class='assign token'>=</span><span class='rubyid_true true kw'>true</span> \
<span class='lbrack token'>[</span><span class='minus op'>-</span><span class='rubyid_backend identifier id'>backend</span><span class='minus op'>-</span><span class='rubyid_config identifier id'>config</span><span class='assign token'>=</span><span class='lt op'><</span><span class='rubyid_backend_configurations identifier id'>backend_configurations</span><span class='lbrack token'>[</span><span class='integer val'>0</span><span class='rbrack token'>]</span><span class='gt op'>></span> <span class='dot3 op'>...</span><span class='rbrack token'>]</span> \
<span class='minus op'>-</span><span class='rubyid_force identifier id'>force</span><span class='minus op'>-</span><span class='rubyid_copy identifier id'>copy</span> \
<span class='minus op'>-</span><span class='rubyid_get identifier id'>get</span><span class='assign token'>=</span><span class='rubyid_true true kw'>true</span> \
<span class='minus op'>-</span><span class='rubyid_get identifier id'>get</span><span class='minus op'>-</span><span class='rubyid_plugins identifier id'>plugins</span><span class='assign token'>=</span><span class='rubyid_true true kw'>true</span> \
<span class='minus op'>-</span><span class='rubyid_input identifier id'>input</span><span class='assign token'>=</span><span class='rubyid_false false kw'>false</span> \
<span class='minus op'>-</span><span class='rubyid_lock identifier id'>lock</span><span class='assign token'>=</span><span class='lt op'><</span><span class='rubyid_lock identifier id'>lock</span><span class='gt op'>></span> \
<span class='minus op'>-</span><span class='rubyid_lock identifier id'>lock</span><span class='minus op'>-</span><span class='rubyid_timeout identifier id'>timeout</span><span class='assign token'>=</span><span class='lt op'><</span><span class='rubyid_lock_timeout identifier id'>lock_timeout</span><span class='gt op'>></span><span class='rubyid_s identifier id'>s</span> \
<span class='lbrack token'>[</span><span class='minus op'>-</span><span class='rubyid_no identifier id'>no</span><span class='minus op'>-</span><span class='rubyid_color identifier id'>color</span><span class='rbrack token'>]</span> \
<span class='lbrack token'>[</span><span class='minus op'>-</span><span class='rubyid_plugin identifier id'>plugin</span><span class='minus op'>-</span><span class='rubyid_dir identifier id'>dir</span><span class='assign token'>=</span><span class='lt op'><</span><span class='rubyid_plugin_directory identifier id'>plugin_directory</span><span class='gt op'>></span><span class='rbrack token'>]</span> \
<span class='lbrack token'>[</span><span class='minus op'>-</span><span class='rubyid_upgrade identifier id'>upgrade</span><span class='assign token'>=</span><span class='rubyid_true true kw'>true</span><span class='rbrack token'>]</span> \
<span class='minus op'>-</span><span class='rubyid_verify identifier id'>verify</span><span class='minus op'>-</span><span class='rubyid_plugins identifier id'>plugins</span><span class='assign token'>=</span><span class='rubyid_true true kw'>true</span> \
<span class='lt op'><</span><span class='rubyid_root_module_directory identifier id'>root_module_directory</span><span class='gt op'>></span>
Selecting or Creating the Test Terraform Workspace
The workspace is selected by running a command like the following example:
<span class='rubyid_terraform identifier id'>terraform</span> <span class='rubyid_workspace identifier id'>workspace</span> <span class='rubyid_select identifier id'>select</span> <span class='lt op'><</span><span class='rubyid_name identifier id'>name</span><span class='gt op'>></span>
The workspace is created by running a command like the following example:
<span class='rubyid_terraform identifier id'>terraform</span> <span class='rubyid_workspace identifier id'>workspace</span> <span class='rubyid_new identifier id'>new</span> <span class='lt op'><</span><span class='rubyid_name identifier id'>name</span><span class='gt op'>></span>
Destroying the Terraform State
The state is destroyed by running a command like the following example:
<span class='rubyid_terraform identifier id'>terraform</span> <span class='rubyid_destroy identifier id'>destroy</span> \
<span class='minus op'>-</span><span class='rubyid_auto identifier id'>auto</span><span class='minus op'>-</span><span class='rubyid_approve identifier id'>approve</span> \
<span class='minus op'>-</span><span class='rubyid_lock identifier id'>lock</span><span class='assign token'>=</span><span class='lt op'><</span><span class='rubyid_lock identifier id'>lock</span><span class='gt op'>></span> \
<span class='minus op'>-</span><span class='rubyid_lock identifier id'>lock</span><span class='minus op'>-</span><span class='rubyid_timeout identifier id'>timeout</span><span class='assign token'>=</span><span class='lt op'><</span><span class='rubyid_lock_timeout identifier id'>lock_timeout</span><span class='gt op'>></span><span class='rubyid_s identifier id'>s</span> \
<span class='minus op'>-</span><span class='rubyid_input identifier id'>input</span><span class='assign token'>=</span><span class='rubyid_false false kw'>false</span> \
<span class='lbrack token'>[</span><span class='minus op'>-</span><span class='rubyid_no identifier id'>no</span><span class='minus op'>-</span><span class='rubyid_color identifier id'>color</span><span class='rbrack token'>]</span> \
<span class='minus op'>-</span><span class='rubyid_parallelism identifier id'>parallelism</span><span class='assign token'>=</span><span class='lt op'><</span><span class='rubyid_parallelism identifier id'>parallelism</span><span class='gt op'>></span> \
<span class='minus op'>-</span><span class='rubyid_refresh identifier id'>refresh</span><span class='assign token'>=</span><span class='rubyid_true true kw'>true</span> \
<span class='lbrack token'>[</span><span class='minus op'>-</span><span class='rubyid_var identifier id'>var</span><span class='assign token'>=</span><span class='lt op'><</span><span class='rubyid_variables identifier id'>variables</span><span class='dot token'>.</span><span class='rubyid_first identifier id'>first</span><span class='gt op'>></span><span class='dot3 op'>...</span><span class='rbrack token'>]</span> \
<span class='lbrack token'>[</span><span class='minus op'>-</span><span class='rubyid_var identifier id'>var</span><span class='minus op'>-</span><span class='rubyid_file identifier id'>file</span><span class='assign token'>=</span><span class='lt op'><</span><span class='rubyid_variable_files identifier id'>variable_files</span><span class='dot token'>.</span><span class='rubyid_first identifier id'>first</span><span class='gt op'>></span><span class='dot3 op'>...</span><span class='rbrack token'>]</span> \
<span class='lt op'><</span><span class='rubyid_root_module_directory identifier id'>root_module_directory</span><span class='gt op'>></span>
Selecting the Default Terraform Workspace
The workspace is selected by running a command like the following example:
<span class='rubyid_terraform identifier id'>terraform</span> <span class='rubyid_workspace identifier id'>workspace</span> <span class='rubyid_select identifier id'>select</span> <span class='lt op'><</span><span class='rubyid_name identifier id'>name</span><span class='gt op'>></span>
Deleting the Test Terraform Workspace
The workspace is deleted by running a command like the following example:
<span class='rubyid_terraform identifier id'>terraform</span> <span class='rubyid_workspace identifier id'>workspace</span> <span class='rubyid_delete identifier id'>delete</span> <span class='lt op'><</span><span class='rubyid_name identifier id'>name</span><span class='gt op'>></span>
Instance Method Summary collapse
-
#call ⇒ self
#call executes the action.
-
#initialize(config:, connection:, logger:, version_requirement:, workspace_name:) ⇒ Kitchen::Terraform::Driver::Destroy
constructor
#initialize prepares a new instance of the class.
Constructor Details
#initialize(config:, connection:, logger:, version_requirement:, workspace_name:) ⇒ Kitchen::Terraform::Driver::Destroy
#initialize prepares a new instance of the class.
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/kitchen/terraform/driver/destroy.rb', line 81 def initialize(config:, connection:, logger:, version_requirement:, workspace_name:) self.complete_config = config.to_hash.merge upgrade_during_init: false, workspace_name: workspace_name self.connection = connection self.client_version = ::Gem::Version.new "0.0.0" self.logger = logger self.workspace_name = workspace_name self.destroy = ::Kitchen::Terraform::Command::Destroy.new config: complete_config self.workspace_delete_test = ::Kitchen::Terraform::Command::WorkspaceDelete.new config: complete_config self.workspace_new_test = ::Kitchen::Terraform::Command::WorkspaceNew.new config: complete_config self.workspace_select_test = ::Kitchen::Terraform::Command::WorkspaceSelect.new config: complete_config self.workspace_select_default = ::Kitchen::Terraform::Command::WorkspaceSelect.new( config: complete_config.merge(workspace_name: "default"), ) self.verify_version = ::Kitchen::Terraform::VerifyVersion.new( config: complete_config, logger: logger, version_requirement: version_requirement, ) self.version = ::Kitchen::Terraform::Command::Version.new end |
Instance Method Details
#call ⇒ self
#call executes the action.
65 66 67 68 69 70 71 |
# File 'lib/kitchen/terraform/driver/destroy.rb', line 65 def call read_client_version verify_version.call version: client_version execute_workflow self end |