Class: Terraspace::Terraform::Args::Default
- Inherits:
-
Object
- Object
- Terraspace::Terraform::Args::Default
- Extended by:
- Memoist
- Defined in:
- lib/terraspace/terraform/args/default.rb
Class Method Summary collapse
-
.terraform_init_log(mod_name) ⇒ Object
Use different tmp log file in case uses run terraspace up in 2 terminals at the same time.
Instance Method Summary collapse
- #apply_args ⇒ Object
- #args ⇒ Object
- #auto_approve_arg ⇒ Object
- #destroy_args ⇒ Object
- #expanded_out ⇒ Object
- #force_unlock_args ⇒ Object
- #init_args ⇒ Object
-
#initialize(mod, name, options = {}) ⇒ Default
constructor
A new instance of Default.
- #input_option ⇒ Object
- #output_args ⇒ Object
- #plan_args ⇒ Object
- #show_args ⇒ Object
-
#straight_delegate_args? ⇒ Boolean
delegate args straight through for special commands, currently state seems to be the only case.
Constructor Details
#initialize(mod, name, options = {}) ⇒ Default
Returns a new instance of Default.
5 6 7 8 |
# File 'lib/terraspace/terraform/args/default.rb', line 5 def initialize(mod, name, ={}) @mod, @name, @options = mod, name.underscore, @quiet = @options[:quiet].nil? ? true : @options[:quiet] end |
Class Method Details
.terraform_init_log(mod_name) ⇒ Object
Use different tmp log file in case uses run terraspace up in 2 terminals at the same time
Log for init is in /tmp because using shell >> redirection It requires full path since we’re running terraform within the .terraspace-cache folder This keeps the printed command shorter:
=> terraform init -get >> /tmp/terraspace/log/init/demo.log
133 134 135 |
# File 'lib/terraspace/terraform/args/default.rb', line 133 def terraform_init_log(mod_name) "#{Terraspace.tmp_root}/log/init/#{mod_name}.log" end |
Instance Method Details
#apply_args ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/terraspace/terraform/args/default.rb', line 38 def apply_args args = auto_approve_arg var_files = @options[:var_files] if var_files var_files.each do |file| copy_to_cache(file) end args << var_files.map { |f| "-var-file #{f}" }.join(' ') end args << input_option # must be at the end plan = @options[:plan] if plan copy_to_cache(plan) args << " #{plan}" end args end |
#args ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/terraspace/terraform/args/default.rb', line 10 def args # https://terraspace.cloud/docs/ci-automation/ ENV['TF_IN_AUTOMATION'] = '1' if @options[:auto] args = [] if straight_delegate_args? args += @options[:rest] args.flatten! end args_meth = "#{@name}_args".gsub(' ', '_') # IE: apply_args, init_args if respond_to?(args_meth) args += send(args_meth) end args end |
#auto_approve_arg ⇒ Object
118 119 120 |
# File 'lib/terraspace/terraform/args/default.rb', line 118 def auto_approve_arg @options[:yes] || @options[:auto] ? ["-auto-approve"] : [] end |
#destroy_args ⇒ Object
114 115 116 |
# File 'lib/terraspace/terraform/args/default.rb', line 114 def destroy_args auto_approve_arg end |
#expanded_out ⇒ Object
110 111 112 |
# File 'lib/terraspace/terraform/args/default.rb', line 110 def @options[:out] end |
#force_unlock_args ⇒ Object
34 35 36 |
# File 'lib/terraspace/terraform/args/default.rb', line 34 def force_unlock_args [" -force #{@options[:lock_id]}"] end |
#init_args ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/terraspace/terraform/args/default.rb', line 68 def init_args args = "-get" args << input_option args << " -reconfigure" if @options[:reconfigure] # must be at the end if @quiet log_path = self.class.terraform_init_log(@mod.name) FileUtils.mkdir_p(File.dirname(log_path)) args << " >> #{log_path}" end [args] end |
#input_option ⇒ Object
59 60 61 62 63 64 65 66 |
# File 'lib/terraspace/terraform/args/default.rb', line 59 def input_option option = if @options[:auto] "false" else @options[:input] ? @options[:input] : "false" end " -input=#{option}" end |
#output_args ⇒ Object
82 83 84 85 86 87 |
# File 'lib/terraspace/terraform/args/default.rb', line 82 def output_args args = [] args << "-json" if @options[:format] == "json" args << "> #{}" if @options[:out] args end |
#plan_args ⇒ Object
89 90 91 92 93 94 95 96 97 |
# File 'lib/terraspace/terraform/args/default.rb', line 89 def plan_args args = [] args << input_option args << "-destroy" if @options[:destroy] args << "-out #{}" if @options[:out] # Note: based on the @options[:out] will run an internal hook to copy plan # file back up to the root project folder for use. Think this is convenient and expected behavior. args end |
#show_args ⇒ Object
99 100 101 102 103 104 105 106 107 108 |
# File 'lib/terraspace/terraform/args/default.rb', line 99 def show_args args = [] args << " -json" if @options[:json] plan = @options[:plan] if plan copy_to_cache(@options[:plan]) args << " #{@options[:plan]}" # terraform show /path/to/plan end args end |
#straight_delegate_args? ⇒ Boolean
delegate args straight through for special commands, currently state seems to be the only case
30 31 32 |
# File 'lib/terraspace/terraform/args/default.rb', line 30 def straight_delegate_args? @name.include?("state") # IE: "state list", "state pull", "state show" end |