class RubyTerraform::Commands::Apply
Wraps the +terraform apply+ command which creates or updates infrastructure according to terraform configuration files in the provided directory.
By default, terraform will generate a new plan and present it for approval before taking any action. Alternatively, the command accepts a plan file created by a previous invocation, in which case terraform will take the actions described in that plan without any confirmation prompt.
For options accepted on construction, see {#initialize}.
When executing an instance of {Apply} via {#execute}, the following options are supported:
-
:directory
: the path to a directory containing terraform configuration (deprecated in terraform 0.14, removed in terraform 0.15, use:chdir
instead). -
:plan
: the path to a pre-computed plan to be applied. -
:chdir
: the path of a working directory to switch to before executing the given subcommand. -
:auto_approve
: iftrue
, skips interactive approval of the generated plan before applying; defaults tofalse
. -
:backup
: the path to backup the existing state file before modifying; defaults to the:state_out
path with +“.backup”+ extension; set:no_backup
totrue
to skip backups entirely. -
:compact_warnings
: whentrue
, if terraform produces any warnings that are not accompanied by errors, they are shown in a more compact form that includes only the summary messages; defaults tofalse
. -
:input
: whenfalse
, will not ask for input for variables not directly set; defaults totrue
. -
:lock
: whentrue
, locks the state file when locking is supported; whenfalse
, does not lock the state file; defaults totrue
. -
:lock_timeout
: the duration to retry a state lock; defaults to +“0s”+. -
:no_backup
: whentrue
, no backup file will be written; defaults tofalse
. -
:no_color
: whether or not the output from the command should be in color; defaults tofalse
. -
:parallelism
: the number of parallel resource operations; defaults to10
. -
:refresh
: whentrue
, updates state prior to checking for differences; whenfalse
uses locally available state; defaults totrue
; this has no effect when:plan
is provided. -
:state
: the path to the state file from which to read state and in which to store state (unless:state_out
is specified); defaults to +“terraform.tfstate”+. -
:state_out
: the path to write state to that is different than:state
; this can be used to preserve the old state. -
:target
: the address of a resource to target; if both:target
and:targets
are provided, all targets will be passed to terraform. -
:targets
: an array of resource addresses to target; if both:target
and:targets
are provided, all targets will be passed to terraform. -
:vars
: a map of variables to be passed to the terraform configuration. -
:var_file
: the path to a terraform var file; if both:var_file
and:var_files
are provided, all var files will be passed to terraform. -
:var_files
: an array of paths to terraform var files; if both:var_file
and:var_files
are provided, all var files will be passed to terraform.
@example Basic Invocation
RubyTerraform::Commands::Apply.new.execute( directory: 'infra/networking', vars: { region: 'eu-central' })
Public Instance Methods
@!visibility private
# File lib/ruby_terraform/commands/apply.rb, line 106 def arguments(parameters) [parameters[:plan] || parameters[:directory]] end
@!visibility private
RubyTerraform::Options::Global#options
# File lib/ruby_terraform/commands/apply.rb, line 84 def options %w[ -auto-approve -backup -compact-warnings -lock -lock-timeout -input -no-color -parallelism -refresh -state -state-out -target -var -var-file ] + super end
@!visibility private
# File lib/ruby_terraform/commands/apply.rb, line 111 def parameter_defaults(_parameters) { vars: {}, var_files: [], targets: [] } end
@!visibility private
# File lib/ruby_terraform/commands/apply.rb, line 116 def parameter_overrides(parameters) { backup: parameters[:no_backup] ? '-' : parameters[:backup] } end
@!visibility private
# File lib/ruby_terraform/commands/apply.rb, line 77 def subcommands %w[apply] end