Amazon web services 在Terraform中使用外部数据源调用Bash脚本时出现问题
我有一个外部数据源,即调用bash脚本Amazon web services 在Terraform中使用外部数据源调用Bash脚本时出现问题,amazon-web-services,terraform,terraform-provider-aws,Amazon Web Services,Terraform,Terraform Provider Aws,我有一个外部数据源,即调用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-am
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\u instance\u status.sh:没有这样的文件或目录
在main.tf第38行的数据“外部”“实例_状态”中:
38:数据“外部”“实例_状态”{
我的bash脚本出现在/check_instance_status.sh中,但仍有错误
请帮助我。这可能只是一个路径问题,我假设这是在子模块中?然后像这样尝试
path.root
:program=[“bash”,“${path.root}/check\u instance\u status.sh”
还要确保
check_instance_status.sh
可与chmod+x check_instance_status.sh一起执行,并且它在命令行上正确运行。直接在
program = ["bash", "/path/to/check_instance_status.sh"]
已尝试使用path.root,并且脚本具有可执行权限,但仍出现错误。