Wie kann ich Startvorlagen verwenden, um den CodeDeploy-Agent automatisch auf einer Amazon-EC2-Instance zu installieren, auf der Amazon Linux oder Ubuntu ausgeführt wird?
Ich möchte den AWS-CodeDeploy-Agent automatisch auf einer Amazon Elastic Compute Cloud (Amazon EC2)-Instance installieren, auf der Linux oder Ubuntu ausgeführt wird.
Behebung
Wenn Sie eine Startvorlage erstellen, verwenden Sie das Feld Benutzerdaten, um ein Konfigurationsskript hinzuzufügen, das beim Start der Instance ausgeführt wird. Das Shell-Skript installiert den CodeDeploy-Agenten für alle AWS-Regionen und unterstützten Amazon-Linux- und Ubuntu-Distributionen.
Um CodeDeploy so zu konfigurieren, dass es beim Booten automatisch aktualisiert wird, setzen Sie die Variable AUTOUPDATE auf true. Fügen Sie beispielsweise das folgende Konfigurationsskript in das Amazon-EC2-Feld Benutzerdaten ein, das auf Ihrer Instance-Metadatenversion basiert.
Wichtig: Das folgende Skript funktioniert nur in EC2 für Linux. In Windows-Umgebungen schlägt das Skript fehl.
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
Ähnliche Informationen

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- Wie installiere ich eine GUI auf meiner Amazon-EC2-Instance, auf der Amazon Linux 2 ausgeführt wird?AWS OFFICIALAktualisiert vor einem Monat
- AWS OFFICIALAktualisiert vor 10 Monaten
- AWS OFFICIALAktualisiert vor 2 Jahren