Это очень хороший вариант использования terraform, и было бы хорошо, если бы вы сделали это через terraform.
Вы можете следовать приведенному ниже коду, который вы можете использовать для ускорения запуска экземпляра столько раз, сколько вам нужно, вы должны подать заявку снова после изменения значения count .это не повлияет на запущенные экземпляры и не будет соответствовать вашему значению.
resource "aws_instance" "web" {
ami = "${data.aws_ami.ubuntu.id}"
instance_type = "t2.micro"
count = 3
availability_zone = "${element(var.az, count.index)}"
tags {
Name = "${count.index}"
}
}
Также, если вы хотите выполнить какую-либо команду во время загрузки экземпляра.Для этого вы можете использовать скрипт пользовательских данных.
resource "aws_instance" "..." {
user_data = "${file("../../tmp/aws/userdata.sh")}"
...
}
Для повторяемости вы можете использовать модуль terraform.Например: если вы хотите использовать код для нескольких инфраструктур, например, dev, staging, production.В случае модулей вам не нужно снова и снова писать один и тот же код, чтобы ускорить работу экземпляра ec2.Вы можете передать разные переменные для другой инфраструктуры.
Пример:
module "dev" {
source = "./modules/dev"
count = 2
region = "us-east-1"
}
module "production" {
source = "./modules/production"
count = 5
region = "us-east-1"
}
Ссылка: https://www.terraform.io/docs/modules/usage.html
Если вам не нужно удалять старые экземпляры и уменьшать размер числа запущенных экземпляров.Это не то, что терраформ будет заботиться.Вы должны упомянуть эту стратегию при создании политики автоматического масштабирования.
Ниже перечислены многие политики завершения.
Amazon EC2 Auto Scaling поддерживает следующие настраиваемые политики завершения:
OldestInstance. Terminate the oldest instance in the group. This option is useful when you're upgrading the instances in the Auto Scaling group to a new EC2 instance type. You can gradually replace instances of the old type with instances of the new type.
NewestInstance. Terminate the newest instance in the group. This policy is useful when you're testing a new launch configuration but don't want to keep it in production.
OldestLaunchConfiguration. Terminate instances that have the oldest launch configuration. This policy is useful when you're updating a group and phasing out the instances from a previous configuration.
ClosestToNextInstanceHour. Terminate instances that are closest to the next billing hour. This policy helps you maximize the use of your instances and manage your Amazon EC2 usage costs.
Default. Terminate instances according to the default termination policy. This policy is useful when you have more than one scaling policy for the group.
Для получения дополнительной информации см. Ссылку ниже.
Ссылка: https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html