Я готов запустить два экземпляра через Terraform. Сначала будет сгенерировано несколько файлов сертификатов, pu sh to S3 bucket. Второй экземпляр извлечет эти сертификаты из определенной корзины S3. Обе операции будут обрабатываться пользовательскими данными. Проблема здесь в том, что команды pull (aws cli) в пользовательских данных второго экземпляра не работают. (Он работает, когда я пытаюсь использовать оболочку). Я думаю, что проблема в том, что 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
}
}