【问题标题】:How to run local-exec statement in Terraform with stty requirements如何在具有 stty 要求的 Terraform 中运行 local-exec 语句
【发布时间】:2020-01-20 11:55:49
【问题描述】:

我正在使用 terraform 设置 AWS VPN。为了实现它,我正在使用运行以下代码的 TF 构建 CA 授权:

resource "null_resource" "vpn_certificates_creation" {
  provisioner "local-exec" {
  command = "./1-create_certificates_for_vpn_setup.sh"
  interpreter = ["/bin/bash"]
  }
}

我在输出中看到一个错误:

null_resource.vpn_certificates_creation (local-exec): Data Base Updated
null_resource.vpn_certificates_creation (local-exec): ./easyrsa: 333: set: Illegal option -o echo
null_resource.vpn_certificates_creation (local-exec): Using SSL: openssl OpenSSL 1.1.1  11 Sep 2018

出了什么问题?

【问题讨论】:

    标签: amazon-web-services terraform vpn terraform-provider-aws ca


    【解决方案1】:

    查看easyrsa代码我发现了这一行:

    (stty echo 2>/dev/null) || { (set -o echo 2>/dev/null) && set -o echo; }
    

    因此,我需要一个在 local-exec TF 提供程序中默认不会发生的 tty 分配。

    四处搜索,我找到了一个很好的解决方案 Trick an application into thinking its stdout is a terminal, not a pipe,我将其应用于我的特定用例。

    resource "null_resource" "vpn_certificates_creation" {
      provisioner "local-exec" {
      command = "./1-create_certificates_for_vpn_setup.sh /dev/null"
      interpreter = ["script", "-eq", "-c"]
      }
    }
    

    使用 script 我可以让 TF 相信我们已经分配了一个 tty。

    【讨论】:

      猜你喜欢
      • 2019-08-20
      • 1970-01-01
      • 2020-01-02
      • 1970-01-01
      • 2020-03-22
      • 2020-07-07
      • 2020-10-04
      • 2021-05-03
      • 2020-10-26
      相关资源
      最近更新 更多