Comment puis-je utiliser les modèles de lancement pour installer l'agent CodeDeploy automatiquement sur une instance Amazon EC2 exécutant Amazon Linux ou Ubuntu ?

Lecture de 3 minute(s)
0

Comment puis-je installer automatiquement l’agent AWS CodeDeploy sur une instance Amazon Elastic Compute Cloud (Amazon EC2) exécutant Linux ou Ubuntu ?

Solution

Lorsque vous créez un modèle de lancement, vous pouvez utiliser le champ User data (Données utilisateur) pour ajouter un script de configuration qui s'exécute lorsque l'instance démarre. Ce script shell installe l'agent CodeDeploy pour toutes les régions AWS, mais aussi pour les distributions Amazon Linux et Ubuntu prises en charge.

Remarque : vous pouvez configurer la mise à jour automatique de CodeDeploy au démarrage en définissant la variable « AUTOUPDATE » (Mise à jour automatique) sur « true » (vrai).

Par exemple, vous pouvez ajouter le script de configuration suivant dans le champ User data (Données utilisateur) Amazon EC2 :

Important : Le script suivant fonctionne uniquement dans EC2 pour Linux. Dans les environnements Windows, le script échoue.

#!/bin/bash -xe

## Code Deploy Agent Bootstrap Script##


exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
AUTOUPDATE=false

function installdep(){

if [ ${PLAT} = "ubuntu" ]; then

  apt-get -y update
  # Satisfying even ubuntu older versions.
  apt-get -y install jq awscli ruby2.0 || apt-get -y install jq awscli ruby



elif [ ${PLAT} = "amz" ]; then
  yum -y update
  yum install -y aws-cli ruby jq

fi

}

function platformize(){

#Linux OS detection#
 if hash lsb_release; then
   echo "Ubuntu server OS detected"
   export PLAT="ubuntu"


elif hash yum; then
  echo "Amazon Linux detected"
  export PLAT="amz"

 else
   echo "Unsupported release"
   exit 1

 fi
}


function execute(){

if [ ${PLAT} = "ubuntu" ]; then

  cd /tmp/
  wget https://aws-codedeploy-${REGION}.s3.amazonaws.com/latest/install
  chmod +x ./install

  if ./install auto; then
    echo "Installation completed"
      if ! ${AUTOUPDATE}; then
            echo "Disabling Auto Update"
            sed -i '/@reboot/d' /etc/cron.d/codedeploy-agent-update
            chattr +i /etc/cron.d/codedeploy-agent-update
            rm -f /tmp/install
      fi
    exit 0
  else
    echo "Installation script failed, please investigate"
    rm -f /tmp/install
    exit 1
  fi

elif [ ${PLAT} = "amz" ]; then

  cd /tmp/
  wget https://aws-codedeploy-${REGION}.s3.amazonaws.com/latest/install
  chmod +x ./install

    if ./install auto; then
      echo "Installation completed"
        if ! ${AUTOUPDATE}; then
            echo "Disabling auto update"
            sed -i '/@reboot/d' /etc/cron.d/codedeploy-agent-update
            chattr +i /etc/cron.d/codedeploy-agent-update
            rm -f /tmp/install
        fi
      exit 0
    else
      echo "Installation script failed, please investigate"
      rm -f /tmp/install
      exit 1
    fi

else
  echo "Unsupported platform ''${PLAT}''"
fi

}

platformize
installdep
REGION=$(curl -s 169.254.169.254/latest/dynamic/instance-identity/document | jq -r ".region")
execute

Informations connexes

Créer un modèle de lancement pour un groupe Auto Scaling

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an