在 Terraform 中使用外部数据源调用 Bash 脚本时出现问题 [英] Issue while calling Bash script using External data source in Terraform
本文介绍了在 Terraform 中使用外部数据源调用 Bash 脚本时出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有外部数据源,即调用 bash 脚本.
I have External data source , that is calling the bash script .
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 时,出现以下错误:
But when i am running terraform apply , i am getting below error :
错误:无法执行bash":bash:./check_instance_status.sh:没有那个文件或目录
Error: failed to execute "bash": bash: ./check_instance_status.sh: No such file or directory
在 main.tf 第 38 行,在数据external"中实例状态":38:数据外部"实例状态"{
on main.tf line 38, in data "external" "instance_status": 38: data "external" "instance_status" {
我的 bash 脚本存在于/check_instance_status.sh 中,但仍然出现错误.
My bash script is present in /check_instance_status.sh , still i am getting error .
请帮助我.
推荐答案
直接在
program = ["bash", "/path/to/check_instance_status.sh"]
这篇关于在 Terraform 中使用外部数据源调用 Bash 脚本时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文