【问题标题】:How to override remote state in Terratest Terraform setup如何在 Terratest Terraform 设置中覆盖远程状态
【发布时间】:2019-10-07 20:48:49
【问题描述】:

我正在尝试了解如何覆盖 Terraform 后端(在我的情况下为远程状态)并在设置 Terratest Terraform 测试时使用本地状态。

我正在使用 Terratest 测试一些 Terraform 代码,我们在 s3 中远程管理状态。在 Terratest 期间我想使用本地状态,但在“terraform init”状态期间它找不到覆盖它的方法。

任何帮助将不胜感激

【问题讨论】:

    标签: go terraform terraform-provider-aws


    【解决方案1】:

    Terraform 允许command line options to control backend configuration。由于您使用的是 Terratest,因此您必须将这些 backend options 传递给 Init

    package terraform
    
    import (
        "fmt"
        "testing"
    )
    
    // InitE calls terraform init and return stdout/stderr.
    func InitE(t *testing.T, options *Options) (string, error) {
        args := []string{"init", fmt.Sprintf("-upgrade=%t", options.Upgrade)}
        args = append(args, FormatTerraformBackendConfigAsArgs(options.BackendConfig)...)
        return RunTerraformCommandE(t, options, args...)
    }
    

    【讨论】:

    • 谢谢,完全错过了init方法!
    • @kbry 你最终能做到这一点吗?据我所知,它不支持后端配置文件(仅 KV 对)。您是否能够使用FormatTerraformBackendConfigAsArgs 将后端从“远程”覆盖到“本地”?
    猜你喜欢
    • 2018-12-14
    • 2021-12-11
    • 2020-09-07
    • 2016-11-24
    • 2018-03-17
    • 2020-05-03
    • 2016-12-22
    • 2020-03-03
    • 1970-01-01
    相关资源
    最近更新 更多