module TerraformWrapper
Constants
- VERSION
Public Class Methods
create_directory(directory:, exists: true, purpose: nil)
click to toggle source
# File lib/terraform-wrapper/common.rb, line 7 def self.create_directory(directory:, exists: true, purpose: nil) return exists if File.directory?(directory) result = false if not purpose.nil? and purpose.kind_of?(String) and not purpose.strip.empty? then @logger.info("Creating directory for: #{purpose}, path: #{directory}") else @logger.info("Creating directory: #{directory}") end FileUtils.mkdir_p(directory) result = File.directory?(directory) end
deployment_tasks(component:, options: Hash.new, service:)
click to toggle source
# File lib/terraform-wrapper.rb, line 25 def self.deployment_tasks(component:, options: Hash.new, service:) @logger.info("Building tasks for service: #{service}, component: #{component}...") @logger.fatal("Options must be specified as a hash!") unless options.kind_of?(Hash) binary_options = Hash.new binary_options["base"] = options.key?("binary-base") ? options["binary-base"] : File.join(Dir.pwd, "vendor", "terraform") binary_options["version"] = options.key?("binary-version") ? options["binary-version"] : Shared::Latest.instance.version code_options = Hash.new code_options["base"] = options.key?("code-base") ? options["code-base"] : File.join(Dir.pwd, "terraform") code_options["name"] = component config_options = Hash.new config_options["auth-azure"] = options.key?("config-auth-azure") ? options["config-auth-azure"] : false config_options["auth-azure-options"] = options.key?("config-auth-azure-options") ? options["config-auth-azure-options"] : Hash.new config_options["base"] = options.key?("config-base") ? options["config-base"] : File.join(Dir.pwd, "config") config_options["backend"] = options.key?("config-backend") ? options["config-backend"] : "local" config_options["backend-options"] = options.key?("config-backend-options") ? options["config-backend-options"] : Hash.new config_options["service"] = service provider_options = Hash.new provider_options["platforms"] = options.key?("provider-platforms") ? options["provider-platforms"] : Array.new provider = TerraformWrapper::Shared::Provider.new(options: provider_options) binary = TerraformWrapper::Shared::Binary.new(options: binary_options, provider: provider) code = TerraformWrapper::Shared::Code.new(options: code_options) tasks = Array.new tasks << TerraformWrapper::Tasks::Apply.new(binary: binary, code: code, options: config_options) tasks << TerraformWrapper::Tasks::Binary.new(binary: binary) tasks << TerraformWrapper::Tasks::Clean.new(code: code) tasks << TerraformWrapper::Tasks::Destroy.new(binary: binary, code: code, options: config_options) tasks << TerraformWrapper::Tasks::Import.new(binary: binary, code: code, options: config_options) tasks << TerraformWrapper::Tasks::Init.new(binary: binary, code: code, options: config_options) tasks << TerraformWrapper::Tasks::Plan.new(binary: binary, code: code, options: config_options) tasks << TerraformWrapper::Tasks::PlanDestroy.new(binary: binary, code: code, options: config_options) tasks << TerraformWrapper::Tasks::Upgrade.new(binary: binary, code: code) tasks << TerraformWrapper::Tasks::Validate.new(binary: binary, code: code) return tasks end
find(base:, name:, exts:, description: "File")
click to toggle source
# File lib/terraform-wrapper/common.rb, line 25 def self.find(base:, name:, exts:, description: "File") exts.each do |ext| path = File.join(base, name + ext) return path if File.file?(path) end @logger.fatal("#{description} name: #{name} not found in location: #{base}!") end