【问题标题】:Issue while calling Bash script using External data source in Terraform在 Terraform 中使用外部数据源调用 Bash 脚本时出现问题
【发布时间】:2021-07-10 06:18:18
【问题描述】:

我有外部数据源,即调用 bash 脚本。

Main.tf : 

 resource "aws_ami_from_instance" "QA-ami" {
 name               = "QA-ami"
 source_instance_id = "i-00f4*****75**a"
 }

 resource "aws_instance" "QA-server-via-ami" {
 ami = aws_ami_from_instance.QA-ami.id
 instance_type = var.qa_instance_type
 subnet_id = var.qa_subnet_id
 key_name = var.qa_key_name
 }

 data "external" "instance_status" { //line  38

 program = ["bash", "${path.module}/check_instance_status.sh"]

 query = {
 id = aws_instance.QA-server-via-ami.id
 }
 }

  output "test" {
  value = data.external.instance_status.result
  } 

Bash 脚本:

#!/bin/bash

set -e

eval "$(jq -r '@sh "INSTANCE_ID=\(.id)"')"

sleep 600

status=$(aws ec2 describe-instance-status --instance-ids ${INSTANCE_ID} --output json --query 
'InstanceStatuses[0]')

instance_status=$(echo ${status} | jq -r '.InstanceStatus.Details[0].Status')
system_status=$(echo ${status} | jq -r '.SystemStatus.Details[0].Status')

jq -n --arg inst_status "$instance_status" \
  --arg sys_status "$system_status" \
  '{"instance_status":$inst_status,"system_status":$sys_status}'

但是当我运行 terraform apply 时,我遇到了以下错误:

错误:执行“bash”失败:bash: ./check_instance_status.sh: 没有这样的文件或目录

在 main.tf 第 38 行,在数据“external”“instance_status”中: 38:数据“外部”“instance_status”{

我的 bash 脚本存在于 /check_instance_status.sh 中,但仍然出现错误。

请帮助我。

【问题讨论】:

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


    【解决方案1】:

    这可能只是一个路径问题,我假设这是在一个子模块中?然后像这样尝试path.root:program = ["bash", "${path.root}/check_instance_status.sh"]

    还要确保check_instance_status.sh 可以与chmod +x check_instance_status.sh 一起执行,并且可以在命令行上正确运行。

    【讨论】:

    • 用 path.root 试过了,脚本有可执行权限,还是报错。
    【解决方案2】:

    直接在里面添加完整路径

    program = ["bash", "/path/to/check_instance_status.sh"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 2018-08-18
      相关资源
      最近更新 更多