【问题标题】:Access output of terraform state file using shell script使用 shell 脚本访问 terraform 状态文件的输出
【发布时间】:2021-09-18 14:10:22
【问题描述】:

我正在尝试使用 shell 脚本从状态文件输出中捕获 cluster_arn 和 cluster_name,并将它们作为参数传递到我的 shell 脚本中。有人可以建议我一些方法吗?

"aws_instance" "foo" { 
    subnet_id = "${data.terraform_remote_state.vpc.subnet_id}" 
}

但我想将此子网 ID 值传递给我的 shell 脚本,该脚本在另一个 tf 文件中被调用。

【问题讨论】:

    标签: amazon-web-services shell terraform amazon-eks


    【解决方案1】:

    要从 Terraform 中获取信息,您可以结合使用“输出”和 terraform output 命令。

    考虑以下 Terraform:

    resource "aws_lambda_function" "my_function" {
        [...]
    }
    
    output "lambda_arn" {
      value = aws_lambda_function.my_function.arn
    }
    

    如果您现在运行以下命令,您将获得 Lambda 函数的 ARN:

    terraform output lambda_arn
    

    输出将是一个字符串,如:

    "arn:aws:lambda:us-east-2:123456789012:function:my-function"
    

    如果您想要“原始”值,可以使用-raw 标志:

    terraform output -raw lambda_arn
    

    给你:

    arn:aws:lambda:us-east-2:123456789012:function:my-function
    

    在您的 shell 脚本中,您现在可以使用它来将 Lambda 函数的 ARN 存储在一个变量中:

    ARN=$(terraform output lambda_arn)
    echo ${ARN}
    

    【讨论】:

    • 我正在我的 main.tf 文件中捕获变量值。 "aws_instance" "foo" { # ... subnet_id = "${data.terraform_remote_state.vpc.subnet_id}" }。但我想将此子网 ID 值传递给我的 shell 脚本,该脚本在另一个 tf 文件中被调用。 » @Jens 你能帮帮我吗?
    • @knowledge20 那么请更新您的问题并添加更多详细信息。这应该从一开始就在您的问题中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 2018-05-14
    • 2020-05-27
    • 2013-03-01
    • 2010-09-24
    • 1970-01-01
    • 2014-09-27
    相关资源
    最近更新 更多