Class: CemAcpt::Provision::Terraform
- Inherits:
-
Object
- Object
- CemAcpt::Provision::Terraform
- Includes:
- Logging
- Defined in:
- lib/cem_acpt/provision/terraform.rb
Constant Summary collapse
- DEFAULT_PLAN_NAME =
'testplan.tfplan'- DEFAULT_VARS_FILE =
'testvars.json'
Constants included from Logging
Instance Attribute Summary collapse
-
#environment ⇒ Object
readonly
Returns the value of attribute environment.
-
#module_package_path ⇒ Object
readonly
Returns the value of attribute module_package_path.
-
#private_key ⇒ Object
readonly
Returns the value of attribute private_key.
-
#public_key ⇒ Object
readonly
Returns the value of attribute public_key.
-
#working_dir ⇒ Object
readonly
Returns the value of attribute working_dir.
Instance Method Summary collapse
- #destroy ⇒ Object
-
#initialize(config, provision_data) ⇒ Terraform
constructor
A new instance of Terraform.
-
#provision(reuse_working_dir: false) ⇒ Hash
A hash of instance names and IPs.
- #show ⇒ Object
Methods included from Logging
current_log_config, #current_log_config, current_log_format, #current_log_format, current_log_level, #current_log_level, included, logger, #logger, new_log_config, #new_log_config, new_log_formatter, #new_log_formatter, new_log_level, #new_log_level, new_logger, #new_logger
Constructor Details
#initialize(config, provision_data) ⇒ Terraform
Returns a new instance of Terraform.
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/cem_acpt/provision/terraform.rb', line 19 def initialize(config, provision_data) @config = config @provision_data = provision_data @backend = new_backend(@provision_data[:test_data].first[:test_name]) @environment = new_environment(@config) @working_dir = nil @module_package_path = nil @private_key = nil @public_key = nil end |
Instance Attribute Details
#environment ⇒ Object (readonly)
Returns the value of attribute environment.
17 18 19 |
# File 'lib/cem_acpt/provision/terraform.rb', line 17 def environment @environment end |
#module_package_path ⇒ Object (readonly)
Returns the value of attribute module_package_path.
17 18 19 |
# File 'lib/cem_acpt/provision/terraform.rb', line 17 def module_package_path @module_package_path end |
#private_key ⇒ Object (readonly)
Returns the value of attribute private_key.
17 18 19 |
# File 'lib/cem_acpt/provision/terraform.rb', line 17 def private_key @private_key end |
#public_key ⇒ Object (readonly)
Returns the value of attribute public_key.
17 18 19 |
# File 'lib/cem_acpt/provision/terraform.rb', line 17 def public_key @public_key end |
#working_dir ⇒ Object (readonly)
Returns the value of attribute working_dir.
17 18 19 |
# File 'lib/cem_acpt/provision/terraform.rb', line 17 def working_dir @working_dir end |
Instance Method Details
#destroy ⇒ Object
48 49 50 51 52 53 54 55 56 |
# File 'lib/cem_acpt/provision/terraform.rb', line 48 def destroy terraform_destroy(formatted_vars) logger.verbose('CemAcpt::Provision::Terraform') { "Deleting old working directory #{working_dir}" } FileUtils.rm_rf(working_dir) @working_dir = nil @module_package_path = nil @private_key = nil @public_key = nil end |
#provision(reuse_working_dir: false) ⇒ Hash
Returns A hash of instance names and IPs.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/cem_acpt/provision/terraform.rb', line 31 def provision(reuse_working_dir: false) logger.info('CemAcpt::Provision::Terraform') { 'Provisioning nodes...' } @working_dir = new_working_dir unless reuse_working_dir validate_working_dir! save_vars_to_file!(formatted_vars) # Easier to reuse nodes this way terraform_init terraform_plan(formatted_vars, DEFAULT_PLAN_NAME) terraform_apply(DEFAULT_PLAN_NAME) begin output = terraform_output('instance_name_ip', json: true) JSON.parse(output) rescue JSON::ParserError => e logger.error('CemAcpt::Provision::Terraform') { "Error parsing Terraform output: #{output}" } raise e end end |
#show ⇒ Object
58 59 60 |
# File 'lib/cem_acpt/provision/terraform.rb', line 58 def show terraform_show end |