Определить: Terraform - AWS - aws_instance - user_data - PullRequest
0 голосов
/ 05 февраля 2019

Я работаю с Terraform, запускаю кластер ECS.

Я использую скрипт, написанный кем-то другим.Я понимаю большую часть сценария конфигурации запуска, за исключением этого:

Я пытаюсь найти связь между группой автоматического масштабирования и кластером ECS.

У меня есть aws_autoscaling_groupкоторый использует aws_launch_configuration (см. ниже).aws_launch_configuration имеет параметр user_data.Это единственная связь между группой автомасштабирования и кластером, которую я могу найти.

Глядя на ссылки (внизу) на документацию, это не дает очень хорошего объяснения того, что такое user_data.Может кто-нибудь, пожалуйста, помогите мне понять, "как" user_data связывает группу автоматического масштабирования с кластером, и, если это вообще возможно, приведите какой-нибудь пример или ссылку на то, для чего она обычно используется и как она обычно используется.

...
resource "aws_launch_configuration" "ecs_host" {
  ...

  user_data = <<EOF
#!/bin/bash
echo ECS_CLUSTER=${var.cluster_name} >> /etc/ecs/ecs.config
EOF
}
...

терраформ применяет выходы:

  ...
  + aws_launch_configuration.ecs_host
      ...
      user_data: "4e27e8feea0896af43ada0c647877da3766f5dcb"
  ...

https://www.terraform.io/docs/providers/aws/r/instance.html#user_data https://www.terraform.io/docs/providers/aws/r/launch_configuration.html#user_data

Ответы [ 3 ]

0 голосов
/ 05 февраля 2019
Атрибут

user_data позволяет указать полезную нагрузку скрипта или инструкции демона облака.Данные могут быть встроенным шаблоном, как в вашем случае со сценарием, или шаблоном файла, где вам нужно будет работать с поставщиком шаблонов .Поэтому, когда вы хотите создать новую конфигурацию запуска, используемую для автоматического масштабирования групп, это один из вариантов выполнения здесь сценария, который получает выходные данные, например, в виде хэша кластера.

Ограничения: вы не можете передавать сжатые gzip данные через этот аргумент;вместо этого смотрите user_data_base64, и вы не должны хранить конфиденциальные данные, такие как пароли, в качестве пользовательских данных.

0 голосов
/ 05 февраля 2019

Проще говоря, пользовательские данные - это скрипт, который запускается при начальной загрузке экземпляра ec2.Вы можете автоматизировать действия, которые необходимо выполнить, чтобы убедиться, что ваш ec2 настроен правильно, и указать их как user_data, инструктируя aws запустить скрипт при загрузке машины.

0 голосов
/ 05 февраля 2019

официальное объяснение от terraform

user_data - (Optional) The user data to provide when launching the instance. Do not pass gzip-compressed data via this argument; see user_data_base64 instead.

Официальный документ aws для объяснения того, что user_data

https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-metadata.html

Итакв общем, после того, как вы определите конфигурацию запуска и группу автоматического масштабирования, группа автоматического масштабирования определит, сколько экземпляров ec2 необходимо запустить (требуемая емкость).

Когда запускается новый экземпляр, он ссылается на конфигурацию запуска, которая определяет, какой AWS AMI для экземпляра и какая команда init будет запущена.Команды init сохраняются в сценарии user_data.

В вашем случае сценарий пользовательских данных регистрируется в назначенном кластере ECS.Таким образом, кластер ecs может легко обнаружить эти экземпляры ec2

echo ECS_CLUSTER=${var.cluster_name} >> /etc/ecs/ecs.config

В фоновом режиме работает докер-контейнер с именем amazon/amazon-ecs-agent, который помогает этим регистрациям и управляет другими контейнерами (службами ecs)

ЕслиВы хотите узнать подробности, вы можете просмотреть этот документ: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-install.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...