我已經在這個問題上徘徊了一段時間,但我無法解決它。
我正在啟動一個運行 bash 腳本并安裝一些東西的 EC2 實體。同時,我也在啟動一個 RDS 實體,但我需要能夠將值從 RDS 端點傳遞到 EC2 實體以配置連接。
我正在嘗試使用模板檔案來做到這一點,就像這樣
resource "aws_rds_cluster_instance" "cluster_instances" {
count = 1
identifier = "rds-prod-ddbb-${count.index}"
cluster_identifier = aws_rds_cluster.default.id
instance_class = "db.r5.large"
engine = "aurora"
engine_version = "5.6.mysql_aurora.1.22.5"
publicly_accessible = "true"
}
resource "aws_rds_cluster" "default" {
cluster_identifier = "aws-rds-ddbb-cluster"
availability_zones = ["us-west-2b"]
db_subnet_group_name = "default-vpc-003d3ab296c"
skip_final_snapshot = "true"
backup_retention_period = 30
vpc_security_group_ids = [aws_security_group.ddbb.id]
}
data "template_file" "RDSs" {
template = file("init.sh")
vars = {
rds = aws_rds_cluster.default.endpoint
}
depends_on = [
aws_rds_cluster.default,
aws_rds_cluster_instance.cluster_instances,
]
}
resource "aws_instance" "web_01" {
ami = "ami-0477c9562acb09"
instance_type = "t2.micro"
subnet_id = "subnet-0d0558d99ec3cd3"
key_name = "web-01"
user_data_base64 = base64encode(data.template_file.RDSs.rendered)
vpc_security_group_ids = [aws_security_group.ddbb.id]
ebs_block_device {
device_name = "/dev/sda1"
volume_type = "gp2"
volume_size = 20
}
tags = {
Name = "Web01"
}
depends_on = [
aws_rds_cluster.default,
aws_rds_cluster_instance.cluster_instances,
]
}
然后,我init.sh是這樣的:
#!/bin/bash
echo "rds = $rds" > /var/tmp/rds
但是我什么也沒得到/var/tmp/rds,所以看起來變數$rds是空的。
對你的幫助表示感謝。
Ps:我的輸出配置如下:
outputs.tf
output "rds_endpoint" {
value = aws_rds_cluster.default.endpoint
}
這作業正常,當應用完成時,它會向我顯示 rds 端點的值。
uj5u.com熱心網友回復:
該變數不是 shell 變數而是模板變數——因此 terraform 將決議檔案,無論其型別如何,并替換所述檔案中的 terraform 變數。
認識到這一點,$rds是不是terraform變數插值,而${rds}為。
所以,你的 bash 腳本應該是:
#!/bin/bash
echo "rds = ${rds}" > /var/tmp/rds
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/375516.html
上一篇:System.Diagnostics.TraceSource不向ApplicationInsights發送資料
下一篇:如何使用AWS按計劃卷曲端點
