Terraform:如何將變量傳遞給 user_data init 腳本

我已經在這個問題上徘徊了一段時間,但我無法解決它。

我正在啟動一個運行 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何將變量傳遞給驅動程序執行腳本?

Powershell - 如何將變量傳遞給腳本塊

如何將參數傳遞給 js 腳本?

如何從腳本在 xpath 中傳遞變量?

如何將 .env 變量從 docker-compose 傳遞到入口點的腳本?

將非文字腳本變量傳遞給 PowerShell 中的 Invoke-Sqlcmd 時出錯

無法將 Env 變量傳遞給 azure 管道 yaml 中的 powershell 腳本(非內聯)

循環變量不會傳遞給 Jenkins 中的 shell 腳本

user_data 未在 EC2 中执行,在 cloud-init thru terraform 中出错

將包含多個 ID 號的 Python 變量傳遞到外部 BigQuery 腳本

Terraform 复制但(cloud-init)不在 Bitnami EC2 实例上运行 user_data 脚本

將字符串列表/數組從我的 bash 腳本傳遞給 ansible 腳本

通過 Python 腳本將多個輸入傳遞給 .bat 文件

無法在 shell 腳本的 gremlin 查詢中傳遞變量

將值從 bash 腳本傳遞到 python 腳本

如何在spark中將雙大括號從shell腳本傳遞到python腳本?

將 PowerShell 命令結果分配給批處理腳本中的變量

如何通過 Ansible Tower API 將變量數據傳遞到劇本模板

如何將帶引號的文件名列表作為參數傳遞給 Bash 中的另一個腳本?

在Terraform中使用多个user_data文件

terraform应用程序后user_data不运行

在使用特殊變量 $1, $# 的 bash 腳本中創建一個 bash 腳本

如何將變量從 js 傳遞給 pug

chrome 擴展命令傳遞給內容腳本

如何从AWS SDK Java中检索实例user_data

使用LowLevelCallable与scipy quad集成:如何传递user_data?

遞歸打印變量值的Shell腳本

如何從另一個 Python 腳本訪問 Python 腳本的動態變量?

將參數從 c# 傳遞到 powershell 腳本