我已經在這個問題上徘徊了一段時間,但我無法解決它。
我正在啟動一個運行 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 端點的值。
該變量不是 shell 變量而是模板變量——因此 terraform 將解析文件,無論其類型如何,並替換所述文件中的 terraform 變量。
認識到這一點,$rds
是不是terraform變量插值,而${rds}
為。
所以,你的 bash 腳本應該是:
#!/bin/bash
echo "rds = ${rds}" > /var/tmp/rds
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句