如何正确在RubyTerraform::Commands::Init命令中使用backend_config参数
如何在
RubyTerraform::Commands::Init命令中正确使用backend_config映射参数 最开始按照文档定义使用backend_config作为参数名时,遇到运行时报错:uninitialized constant RubyTerraform::Options::Values::Complex::JSON (NameError)。
由于观察到RubyTerraform库会将Terraform原生命令行参数var转换为复数形式vars,因此尝试改用backend_configs作为参数传入。
测试后发现使用backend_configs的代码运行无报错,但检查S3存储桶时没有生成对应的Terraform状态文件。添加require 'json'代码行后报错问题彻底解决,两种参数形式都不再触发错误,但仍未生成状态文件。推测空项目下Terraform不会生成状态文件,需要添加实际基础设施定义代码才会生成状态。
backend_configs参数使用示例代码
require 'ruby-terraform' require 'json' # 解决'backend_config'参数触发的报错 puts "Testing creating parameters" RubyTerraform.init( chdir: 'terraform', backend_configs: { bucket: '<myAWSAccountNumber>-terraform-state-files', dynamodb_table: 'terraform_locks', key: "deleteME/terraform.tfstate", encrypt: true, region: "us-east-1" } )
backend_configs运行输出日志
Testing creating parameters Initializing the backend... Initializing provider plugins... Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary. Process exited with code: 0
注意:S3存储桶中未生成Terraform状态文件。
使用backend_config参数的报错信息
注意:下方报错信息包含使用的Ruby版本和Ruby_Terraform库版本信息。
/home/ec2-user/.rvm/gems/ruby-2.6.3/gems/ruby-terraform-1.3.1/lib/ruby_terraform/options/values/complex.rb:14:in `render': uninitialized constant RubyTerraform::Options::Values::Complex::JSON (NameError)
内容的提问来源于stack exchange,提问作者A. Rick
相关产品推荐
相关产品推荐

