Как добавить экземпляр EC2, созданный с помощью группы автоматического масштабирования и IAM ECS, в стек OpsWorks?
У меня есть AWS ECS
кластер и для облегчения доступа пользователя я использую OpsWorks
чтобы получить его ssh
особенность. Чтобы поддерживать стек всегда, даже если экземпляр по какой-либо причине завершен, я полагаюсь на EC2 Auto Scaling Group
который использует конкретный Launch Configuration
и там я установил следующее на User Data
поле:
#!/bin/bash
# This works just fine!
echo ECS_CLUSTER=my-cluster-name >> /etc/ecs/ecs.config
# Given AWS CLI is not installed by default
yum install -y awscli
# This is copied and pasted from the OpsWorks' Register Instance Wizard
aws opsworks register --infrastructure-class ec2 --region us-east-1 --stack-id aaa-bbb-ccc-ddd --local
Для отладки я set -x
на месте и с учетом всех команд перед регистрацией работают вот соответствующий журнал о выводе конкретной команды:
+ aws opsworks register --use-instance-profile --infrastructure-class ec2 --region us-east-1 --stack-id aaa-bbb-ccc-ddd --override-hostname abcdefgh --local
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 7800k 100 7800k 0 0 12.3M 0 --:--:-- --:--:-- --:--:-- 12.3M
opsworks-init: Initializing AWS OpsWorks environment
opsworks-init: Checking if OS is supported
opsworks-init: Running on supported OS
opsworks-init: Setup motd
opsworks-init: Executing: ln -sf --backup /etc/motd.opsworks-static /etc/motd
opsworks-init: Using assets bucket from environment: 'opsworks-instance-assets-us-east-1.s3.amazonaws.com'.
opsworks-init: Installing Ruby for the agent
opsworks-init: Executing: /tmp/opsworks-agent-installer.ggXxYyMmBBH/opsworks-agent-installer/opsworks-agent/bin/installer_wrapper.sh -r -R opsworks-instance-assets-us-east-1.s3.amazonaws.com
У меня сложилось впечатление, что эта последняя команда молча терпит неудачу, потому что я ожидаю, что регистрация будет более многословной сразу после этого.
Убедившись, что все роли IAM и группы безопасности пересмотрены и все выглядят четко и без явных ошибок, отображаемых в журналах загрузки, экземпляр не будет регистрироваться вообще. Я уже пробовал следовать этому руководству по экземплярам AWS OpsWorks для автоматического масштабирования, но даже с приведенным ниже кодом, извлеченным оттуда (и после попытки многих вариантов), оно не будет зарегистрировано:
#!/bin/bash
sed -i'' -e 's/.*requiretty.*//' /etc/sudoers
pip install --upgrade awscli
/usr/bin/aws opsworks register --use-instance-profile --infrastructure-class ec2 --region us-east-1 --stack-id aaa-bbb-ccc-ddd --override-hostname $(tr -cd 'a-z' < /dev/urandom |head -c8) --local
Любые подсказки о том, что я могу упустить, чтобы зарегистрировать новые экземпляры для OpsWorks
стек?
Большое спасибо!
1 ответ
У меня была похожая проблема, и я обновил версию агента opsworks:
Стек-> Настройки стека-> Изменить-> Версия агента OpsWorks-> Использовать последнюю версию
после этого небольшого изменения все работало отлично