我愿意通过 Terraform 启动两个实例。第一个将生成一些证书文件,推送到 S3 存储桶。第二个实例将从特定的 S3 存储桶中提取这些证书。这两个操作都将由用户数据处理。这里的问题是第二个实例的用户数据中的拉取命令(aws cli)不起作用。(当我从 shell 尝试时它正在工作)我认为问题是关于 terraform 同步启动两个实例,以便在第一个实例将证书推送到 S3 之前启动第二个实例。
我还尝试通过在我的代码中添加“depends_on”来解决这个问题,但它不起作用。我正在寻找一种异步启动实例的方法。就像第二个实例将在 30 秒后启动,然后启动第一个实例。这里我粘贴代码的相关部分。
data "template_file" "first_executor" {
template = file("some_path/first_executor.sh")
}
resource "aws_instance" "first_instance" {
ami = data.aws_ami.amazon-linux-2.id
instance_type = "t2.micro"
user_data = data.template_file.first_executor.rendered
network_interface {
device_index = 0
network_interface_id = aws_network_interface.first_instance-network-interface.id
}
}
###
data "template_file" "second_executor" {
template = file("some_path/second_executor.sh")
}
resource "aws_instance" "second_instance" {
depends_on = [aws_instance.first_instance]
ami = data.aws_ami.amazon-linux-2.id
instance_type = "t2.micro"
user_data = data.template_file.second_executor.rendered
network_interface {
device_index = 0
network_interface_id = aws_network_interface.second-network-interface.id
}
}