class TerraformWrapper::Shared::Backends::AWS
Attributes
bucket[R]
encrypt[R]
key[R]
region[R]
Public Class Methods
new(options:, variables:)
click to toggle source
# File lib/terraform-wrapper/shared/backends/aws.rb, line 38 def initialize(options:, variables:) construct(options: options, variables: variables) end
Public Instance Methods
hash()
click to toggle source
# File lib/terraform-wrapper/shared/backends/aws.rb, line 44 def hash() result = Hash.new result["bucket"] = @bucket result["region"] = @region result["key"] = @key result["encrypt"] = @encrypt.to_s result["kms_key_id"] = @kms unless @kms.nil? result["role_arn"] = @role unless @role.nil? return result end
Private Instance Methods
specific()
click to toggle source
# File lib/terraform-wrapper/shared/backends/aws.rb, line 64 def specific() kms = nil role = nil logger.fatal("AWS backend mandatory option 'bucket' has not been set!") unless @options.key?("bucket") logger.fatal("AWS backend mandatory option 'region' has not been set!") unless @options.key?("region") bucket = @options["bucket"] logger.fatal("AWS backend S3 bucket name must be a string!") unless bucket.kind_of?(String) logger.fatal("AWS backend S3 bucket name must not be blank!") if bucket.strip.empty? region = @options["region"] logger.fatal("AWS backend S3 bucket region must be a string!") unless region.kind_of?(String) logger.fatal("AWS backend S3 bucket region must not be blank!") if region.strip.empty? key = @options.key?("key") ? @options["key"] : File.join("%{service}", "%{config}", "%{component}" + @@ext) logger.fatal("AWS backend S3 bucket key must be a string!") unless key.kind_of?(String) logger.fatal("AWS backend S3 bucket key must not be blank!") if key.strip.empty? encrypt = @options.key?("encrypt") ? @options["encrypt"] : true logger.fatal("AWS backend S3 bucket encryption enabled must be a Boolean!") unless [ true, false ].include?(encrypt) if @options.key?("kms") then kms = @options["kms"] logger.fatal("AWS backend S3 bucket encryption KMS key ARN must be a string if specified!") unless kms.kind_of?(String) logger.fatal("AWS backend S3 bucket encryption KMS key ARN must not be blank if specified!") if kms.strip.empty? end if @options.key?("role") then role = @options["role"] logger.fatal("AWS backend role to assume ARN must be a string if specified!") unless role.kind_of?(String) logger.fatal("AWS backend role to assume ARN must not be blank if specified!") if role.strip.empty? end @variables.core.keys.map{ |sym| sym.to_s }.each do |core| logger.fatal("AWS backend S3 bucket name or key must include %{#{core}}.") unless (bucket.include?("%{#{core}}") or key.include?("%{#{core}}")) end begin bucket = bucket % @variables.identifiers region = region % @variables.identifiers key = key % @variables.identifiers kms = kms % @variables.identifiers unless kms.nil? role = role % @variables.identifiers unless role.nil? rescue logger.fatal("AWS backend options contain identifiers that are not included in the configuration file!") end logger.fatal("Key: #{key} is too long for backend of type: #{@@type}") if key.length > 1024 @bucket = bucket @region = region @key = key @encrypt = encrypt @kms = kms @role = role end