Как запустить среду Beanstalk с проверками работоспособности как «EC2 и ELB» и health_check_grace_time как 1500, используя terraform?

#amazon-web-services #terraform #amazon-elastic-beanstalk

Вопрос:

Я недавно начал изучать terraform и хотел создать среду, используя указанные выше настройки. Когда я запускаю приведенный ниже код, я получаю 2 развернутых ресурса, один из которых-beanstalk, а другой-группа автоматического масштабирования(ASG). ASG имеет нужные настройки, но не связан с beanstalk. Поэтому я пытаюсь соединить эти два понятия. (Я копирую идентификатор бобового стебля из раздела «Теги», затем направляюсь в ASG в разделе EC2, ищу его и просматриваю раздел «Проверка работоспособности»)

 resource "aws_autoscaling_group" "example" {
  launch_configuration = aws_launch_configuration.as_conf.id
  min_size = 2
  max_size = 10
  availability_zones = [ "us-east-1a" ]
  
  health_check_type = "ELB"
  health_check_grace_period = 1500
  tag {
    key = "Name"
    value = "terraform-asg-example"
    propagate_at_launch = true
  }
}

provider "aws" {
  region = "us-east-1"
}


resource "aws_elastic_beanstalk_application" "application" {
  name        = "Test-app"
}

resource "aws_elastic_beanstalk_environment" "environment" {
  name                = "Test-app"
  application         = aws_elastic_beanstalk_application.application.name
  solution_stack_name = "64bit Windows Server Core 2019 v2.5.6 running IIS 10.0"

  setting {
        namespace = "aws:autoscaling:launchconfiguration"
        name      = "IamInstanceProfile"
        value     = "aws-elasticbeanstalk-ec2-role"
      }

  setting {
    namespace = "aws:autscaling"
  }
}

resource "aws_launch_configuration" "as_conf" {
  name          = "web_config_shivanshu"
  image_id      = "ami-2757f631"
  instance_type = "t2.micro"

  lifecycle {
    create_before_destroy = true
  }
}
 

Ответ №1:

Вы не создаете ASG или не запускаете конфигурацию/шаблон вне среды Elastic Beanstalk и не объединяете их вместе. Так как есть параметры конфигурации, которые недоступны. Например, твердотельный накопитель GP3 доступен как часть шаблона запуска, но пока недоступен как часть elastic beanstalk

Что вы хотите сделать, так это удалить ресурсы

 resource "aws_launch_configuration" "as_conf"
resource "aws_autoscaling_group" "example"
 

Затем используйте setting {} блок намного больше внутри resource "aws_elastic_beanstalk_environment" "environment"

Вот список всех настроек, которые вы можете описать в блоке настроек (https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html)

Комментарии:

1. Спасибо за ваш ответ . Я наткнулся на ссылку, которой вы поделились, но не смог найти способ, которым я мог бы установить проверки работоспособности как ELB и EC2 при автоматическом масштабировании бобового стебля. в основном я хочу настроить часть автоматического масштабирования бобового стебля. Можете ли вы помочь мне понять, как это сделать, используя блок настроек

2. Взгляните на пространство имен: aws:elasticbeanstalk:среда:процесс:по умолчанию в разделе Путь проверки работоспособности

3. Какие настройки эластичного бобового стебля вы пробовали?

4. Вы видели изображение, которое я опубликовал? Поэтому в основном я попробовал первый путь проверки работоспособности, но он все еще развертывается только с EC2 в качестве проверки работоспособности

Ответ №2:

Итак, я понял, как мы можем изменить группу автоматического масштабирования(ASG) бобового стебля, которую мы создали с помощью terraform. Прежде всего,создайте бобовый стебель в соответствии с вашими настройками. мы используем блок настроек в ресурсе и пространстве имен beanstalk для его настройки в соответствии с нашими потребностями.

Шаг 1 Создайте бобовый стебель с помощью terraform

     resource "aws_elastic_beanstalk_environment" "test"
   { ...
     ...    
   }
 

Шаг-2
После того, как вы создали бобовый стебель.Создайте скелет ресурсов автоматического масштабирования. ASG, связанный с бобовым стеблем, будет обрабатываться terraform в этом блоке ресурсов.Импорт с использованием идентификатора ASG, который вы можете получить из любого плана/показа terraform

 terraform import aws_autoscaling_group.<Name that you give> asg-id
 

Шаг-3
После того как вы это сделаете, измените бобовый стебель в соответствии с вашими потребностями
затем убедитесь, что вы добавили их в теги.Потому что иногда я замечал, что отображение этого ASG на бобовый стебель теряется.

      tag {
           key                 = "elasticbeanstalk:environment-id" 
           propagate_at_launch = true 
           value               = aws_elastic_beanstalk_environment.<Name of your beanstalk>.id
        }
      tag {
           key                 = "elasticbeanstalk:environment-name" 
           propagate_at_launch = true 
           value               = aws_elastic_beanstalk_environment.<Name of your beanstalk>.name
        }