如何在 terraform 外部数据源中正确地使 bash 脚本失败

问题描述 投票:0回答:1

我有一个 Terraform 数据源:

data "external" src {
  program = ["bash", "my_script.sh"]
}

my_script.sh
中,我断言环境变量
SOME_ENV
已设置,如果是这样,脚本会执行一些逻辑:

#!/bin/bash

if [ -z $SOME_ENV ]; then
  echo "Env SOME_ENV is missed"
  exit 1
fi

# do some work...

否则,我想在

terraform apply
期间强调 env 被错过了。

当前行为: 以下消息将打印到控制台:

...

│ The data source received an unexpected error while attempting to execute the program.
│ 
│ The program was executed, however it returned no additional error messaging.
│ 
│ Program: /bin/bash
│ State: exit status 1

申请时是否有任何选项可以传递错误消息?

谢谢

bash azure terraform
1个回答
0
投票

您可以通过将错误消息写入标准错误 (stderr) 流,将错误消息从脚本传递到

Terraform
。在脚本中,您可以使用 ">&2" 重定向运算符将错误消息写入 stderr。例如:
>&2 echo "Error: Environment variable SOME_ENV is missing

    #!/bin/bash
    
    if [ -z $SOME_ENV ]; then
      >&2 echo "Error: Environment variable SOME_ENV is missing"
      exit 1
    fi
    provider "azurerm" {
      features {}
    }
    data "external" src {
      program = ["bash", "my_script.sh"]
    }

Terraform 应用

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.