amazon-web-services - 使用外部数据源在 terraform 中获取实例状态 1/2 或 2/2 的 Boto3 脚本
问题描述
你能帮我让 Boto3 脚本使用外部数据源在 terraform 中获取实例状态 1/2 或 2/2 吗?我是 python 和 Terraform 的新手。
解决方案
使用文档中显示的 bash可能更容易
get_instance_status.sh
#!/bin/bash
set -e
eval "$(jq -r '@sh "INSTANCE_ID=\(.id)"')"
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}'
然后在你的 TF 中:
data "external" "instance_status" {
program = ["bash", "${path.module}/get_instance_status.sh"]
query = {
id = "i-08efdfdffb3"
}
}
output "test" {
value = data.external.instance_status.result
}
示例输出:
test = tomap({
"instance_status" = "passed"
"system_status" = "passed"
})
推荐阅读
- c++ - 如何从共享内存就地创建 STL 向量/数组?
- git - 是否可以为分支机构设置本地别名?
- hadoop - Hive 未与 localhost:10000 连接
- python - Python CSV解析输出不一致的计数
- android - Firebase 应用内消息在生产中不起作用
- python - 我们如何使用 decision_function(X) One-Class-SVM 计算异常分数
- ggplot2 - 增加x轴ggplot主题的线条粗细
- html - 为什么 Material Design Top App Bar 与顶部的差距很小?
- c# - 如何在单元测试中使用环境变量(.net core)
- actions-on-google - 为什么智能家居测试套件会失败?