Como atualizar automaticamente a AMI no Amazon EC2 Auto Scaling Launch Configuration

3

Como posso atualizar a AMI em uma configuração do Auto Scaling depois de atualizar o código em uma instância do EC2? Não preciso usar o AWS CodeDeploy.

Eu tenho um script simples, mas ainda é necessário que eu digite manualmente o ID da imagem:

1) Crie uma AMI

aws ec2 create-image --instance-id i-0b09axxx --name "My server" --no-reboot

2) Criar nova configuração de inicialização do Auto Scaling

aws autoscaling create-launch-configuration --launch-configuration-name "new-launch-configuration-name" --image-id "new-AMI-id"

3) Atualize a configuração de inicialização do Auto Scaling com a nova AMI

aws autoscaling update-auto-scaling-group --auto-scaling-group-name "current-autoscaling-group-name" --launch-configuration-name "new-launch-configuration-name"

4) Excluir a configuração antiga de inicialização do Auto Scaling

aws autoscaling delete-launch-configuration --launch-configuration-name "old-launch-configuration-name"
    
por Abdi Darmawan 26.06.2017 / 11:36

1 resposta

2

Tente algo assim (supondo que você esteja usando o Linux):

#Define parameters
INSTANCE=i-abcd1234
ASG_NAME="current-autoscaling-group-name"
OLD_LC="old-launch-configuration-name"
NEW_LC="new-launch-configuration-name"

# Create AMI
IMAGE='aws ec2 create-image --instance-id $INSTANCE --name NEW-IMAGE --output text'

# Create Launch Configuration
aws autoscaling create-launch-configuration --launch-configuration-name $NEW_LC --image-id $IMAGE --instance-type t2.micro

# Update Auto Scaling Group to use new Launch Configuration
aws autoscaling update-auto-scaling-group --auto-scaling-group-name $ASG_NAME --launch-configuration-name $NEW_LC

# Delete old Auto Scaling Group
aws autoscaling delete-launch-configuration --launch-configuration-name $OLD_LC
    
por 03.07.2017 / 13:54