如何从 BASH 脚本中选择 vars.tf 中的变量

How to pick variables in vars.tf from BASH script

我正在使用 Terraform 配置 EC2 实例。它还有一个启动脚本。我在 vars.tf 中指定了所有变量。在我的 bash.sh 脚本中,它应该从 vars.tf

中获取一个变量

是否可以从 bash 脚本中引用 vars.tf 中的变量?以下是我的用例。

bash.sh

#!/bin/bash

docker login -u username -p token docker.io

vars.tf

variable "username" {
  default = "myuser"
}

variable "token" {
  default = "mytoken"
}

我的 bash 脚本应该从 vars.tf

中选择变量

如果这不可能,有什么解决方法吗?

为了向脚本提供 Terraform 变量,我们可以使用 templatefile 函数。此函数读取模板文件的内容,并在由模板语法 (${ ... }) 标记的位置注入 Terraform 变量。

首先我们要用 bash 脚本创建一个模板文件并将其保存为 init.tftpl:

#!/bin/bash

docker login -u ${username} -p ${token} docker.io

创建实例时,我们可以使用templatefile提供渲染脚本作为用户数据:

resource "aws_instance" "web" {
  ami           = "ami-xxxxxxxxxxxxxxxxx"
  instance_type = "t2.micro"
  user_data = templatefile("init.tftpl", {
    username = var.username
    token    = var.token
  })
}