воскресенье, 8 октября 2017 г.

Выполнить несколько команд в докер контейнерах AWS ECS в ASG

Есть AWS ASG с ECS. Там не понятно сколько инстансев.
Задача - выполнить очистку opcache на каждом php5-fpm через sock.

Получить все адреса активных инстансев в ASG я уже описывал как. Кратко:

ASGName="awseb-xxxxxx-stack-AWSEBAutoScalingGroup-YYYYYYYYYY"
aws ec2 describe-instances --filters "Name=tag:aws:autoscaling:groupName,Values=${ASGName}" "Name=instance-state-name,Values=running" --region us-west-2 | jq "
.Reservations[].Instances[].PrivateIpAddress"|cut -d "\"" -f 2 >/tmp/origins.lst

далее такой скрипт:
#!/bin/sh
for host in $(cat /tmp/origins.lst);
 do ssh -i my_key.pem ec2-user@$host  << EOF
sudo -i
docker exec \$(docker ps -aqf "name=ecs-aws") bash -c 'cd /tmp; curl -sO http://gordalina.github.io/cachetool/downloads/cachetool.phar; /usr/bin/php cachetool.phar o
pcache:reset --fcgi=/var/run/php5-fpm.sock'
EOF
done

PS:
docker ps -aqf "name=ecs-aws" - у меня был Beanstalk с преконфигурённым MultiDocker container platform. Это означает, что у меня запущено как минимум два контейнера. первый - это ecs-agent а второй уже мой рабочий php5-fpm. По фильтру ecs-aws выбирается как раз НЕ agent, то есть мой контейнер.

PSS: 
очистить memcache полностью:
telnet memcache 11211
flush_all
quit



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