boltops-tools / terraspace

Terraspace: The Terraform Framework
https://terraspace.cloud
Apache License 2.0
674 stars 46 forks source link

AWS SSM helper not usable with assume_role #282

Open ORuessel opened 1 year ago

ORuessel commented 1 year ago

Checklist

My Environment

Software Version
Operating System Ubuntu 20.04
Terraform 1.3.3
Terraspace 2.2.2
Ruby ruby 3.0.3p157

description

We test AWS SSM with terraspace 2.2.2 we for deployment assume_role to access separate AWS_Accounts based on that it is only possible to use the parameter or secret store in the AWS Account DEVOPS which are the default iam user is deployed. the terraspace helper dont use the provider.tf profile with assume role.

AWS Account DEVOPS -> Assume_Role AWS Account DEV -> Assume_Role AWS Account PROD

Error message

used in stack/stackname/tfvars/environment.tf master_user_name = "<%= aws_ssm("/:ENV/username") %>"

Building .terraspace-cache/region/dev/stacks/stackname
WARN: name /dev/username not found
NoMethodError: undefined method `force_encoding' for Aws::SSM::Errors::ParameterNotFound:Class
Error evaluating ERB template around line 5 of: 
.......tfvars/dev.tfvars:

Code Sample

master_user_name = "<%= aws_ssm("/:ENV/username") %>"

Tace

Original backtrace (last 8 lines):
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/logger.rb:17:in `format_message'
/opt/terraspace/embedded/lib/ruby/3.0.0/logger.rb:476:in `add'
/opt/terraspace/embedded/lib/ruby/3.0.0/logger.rb:529:in `info'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace_plugin_aws-0.3.6/lib/terraspace_plugin_aws/interfaces/helper/ssm.rb:18:in `rescue in fetch_value'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace_plugin_aws-0.3.6/lib/terraspace_plugin_aws/interfaces/helper/ssm.rb:13:in `fetch_value'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace_plugin_aws-0.3.6/lib/terraspace_plugin_aws/interfaces/helper/ssm.rb:8:in `fetch'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace_plugin_aws-0.3.6/lib/terraspace_plugin_aws/interfaces/helper.rb:11:in `aws_ssm'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/plugin/helper/interface.rb:25:in `block in cache_helper'

Re-run with FULL_BACKTRACE=1 to see all lines
Exception SystemExit: exit
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/render_me_pretty-0.8.4/lib/render_me_pretty/erb.rb:128:in `exit'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/render_me_pretty-0.8.4/lib/render_me_pretty/erb.rb:128:in `print_result'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/render_me_pretty-0.8.4/lib/render_me_pretty/erb.rb:120:in `handle_exception'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/render_me_pretty-0.8.4/lib/render_me_pretty/erb.rb:97:in `rescue in render'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/render_me_pretty-0.8.4/lib/render_me_pretty/erb.rb:85:in `render'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/render_me_pretty-0.8.4/lib/render_me_pretty.rb:11:in `result'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/compiler/erb/render.rb:10:in `build'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/compiler/strategy/tfvar/tfvars.rb:4:in `run'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/compiler/strategy/tfvar.rb:17:in `block in run'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/compiler/strategy/tfvar.rb:11:in `each'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/compiler/strategy/tfvar.rb:11:in `run'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/compiler/perform.rb:34:in `compile_tfvars'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/compiler/perform.rb:13:in `compile'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/builder.rb:58:in `build_stacks'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/builder.rb:46:in `block in build'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/hooks/builder.rb:25:in `run_hooks'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/hooks/concern.rb:6:in `run_hooks'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/builder.rb:44:in `build'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/builder.rb:31:in `run'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/cli/commander.rb:9:in `run'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/cli/plan.rb:43:in `plan_only'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/cli/plan.rb:17:in `perform'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/cli/plan.rb:11:in `run'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/cli.rb:161:in `plan'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/command.rb:76:in `dispatch'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/lib/terraspace/cli/concern.rb:65:in `start'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/terraspace-2.2.2/exe/terraspace:7:in `<top (required)>'
/opt/terraspace/embedded/bin/terraspace:25:in `load'
/opt/terraspace/embedded/bin/terraspace:25:in `<top (required)>'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/bundler-2.3.22/lib/bundler/cli/exec.rb:58:in `load'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/bundler-2.3.22/lib/bundler/cli/exec.rb:58:in `kernel_load'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/bundler-2.3.22/lib/bundler/cli/exec.rb:23:in `run'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/bundler-2.3.22/lib/bundler/cli.rb:486:in `exec'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/bundler-2.3.22/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/bundler-2.3.22/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/bundler-2.3.22/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/bundler-2.3.22/lib/bundler/cli.rb:31:in `dispatch'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/bundler-2.3.22/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/bundler-2.3.22/lib/bundler/cli.rb:25:in `start'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/bundler-2.3.22/exe/bundle:48:in `block in <top (required)>'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/bundler-2.3.22/lib/bundler/friendly_errors.rb:120:in `with_friendly_errors'
/opt/terraspace/embedded/lib/ruby/gems/3.0.0/gems/bundler-2.3.22/exe/bundle:36:in `<top (required)>'
/opt/terraspace/embedded/bin/bundle:23:in `load'
/opt/terraspace/embedded/bin/bundle:23:in `<main>'`
ORuessel commented 1 year ago

Hello @tongueroo does someone need more information ? Best regards