¿Cómo puedo utilizar las plantillas de lanzamiento para instalar automáticamente el agente de CodeDeploy en una instancia de Amazon EC2 que ejecute Amazon Linux o Ubuntu?
Quiero instalar 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 para añadir un script de configuración que se ejecute cuando se inicie la instancia. El script de shell instala el agente CodeDeploy en todas las regiones de AWS y en las distribuciones de Amazon Linux y Ubuntu compatibles.
Para configurar CodeDeploy para que se actualice automáticamente al arrancar, defina la variable AUTOUPDATE como true. Por ejemplo, añada el siguiente script de configuración en el campo User data de Amazon EC2 en función de la versión de metadatos de la instancia.
Importante: El siguiente script solo funciona en EC2 para Linux. En entornos Windows, el script falla.
IMSDv1:
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT-0 #!/bin/bash -xe ## CodeDeploy Agent Bootstrap Script## exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1AUTOUPDATE=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
IMSDv2:
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT-0 #!/bin/bash -xe ## CodeDeploy 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 TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` REGION=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/dynamic/instance-identity/document | jq -r ".region") execute
Información relacionada
Contenido relevante
- OFICIAL DE AWSActualizada hace 3 años
- OFICIAL DE AWSActualizada hace 3 años
- OFICIAL DE AWSActualizada hace 3 años
- OFICIAL DE AWSActualizada hace 3 años