¿Cómo utilizo las plantillas de lanzamiento para instalar de forma automática el agente de CodeDeploy en una instancia de Amazon EC2 que ejecute Amazon Linux o Ubuntu?

3 minutos de lectura
0

¿Cómo instalo automáticamente el agente de AWS CodeDeploy en una instancia de Amazon Elastic Compute Cloud (Amazon EC2) que ejecute Linux o Ubuntu?

Resolución

Al crear una plantilla de lanzamiento, puede usar el campo User data (Datos de usuario) para agregar un script de configuración que se ejecute cuando se inicie la instancia. Este script de shell instala el agente CodeDeploy para todas las regiones de AWS y las distribuciones de Amazon Linux y Ubuntu compatibles.

Nota: Puede configurar CodeDeploy para que se actualice automáticamente al arrancar configurando la variable AUTOUPDATE a true.

Por ejemplo, puede agregar el siguiente script de configuración en el campo de User data (Datos de usuario) de Amazon EC2:

Importante: El siguiente script solo funciona en EC2 para Linux. En entornos Windows, el script falla.

#!/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

Información relacionada

Crear una plantilla de lanzamiento para un grupo de Auto Scaling

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año