Wie führe ich den CodeDeploy-Agent mit einem Benutzerprofil aus, das nicht das Stammprofil ist?

Lesedauer: 5 Minute
0

Ich möchte den AWS-CodeDeploy-Agent mit einem Benutzerprofil ausführen, das nicht das Stammprofil ist.

Lösung

Amazon Linux 2 und Amazon Linux 2023 haben das Amazon Linux 1 Amazon Machine Image (AMI) ersetzt. Du kannst Amazon Linux 1 AMIs nicht mehr als Amazon Elastic Compute Cloud (Amazon EC2)-Instance starten. Die folgende Lösung ist mit allen unterstützten RPM- und Debian-basierten Linux-Distributionen des CodeDeploy-Agent kompatibel.

Voraussetzung: Installiere den CodeDeploy-Agent auf deiner EC2-Instance oder überprüfe, ob der CodeDeploy-Agent auf der Instance ausgeführt wird.

Ändere den Benutzer in deiner CodeDeploy-Agent-Konfigurationsdatei und gewähre dem Benutzer die erforderlichen Berechtigungen

Führe die folgenden Schritte aus:

  1. Verwende SSH, um eine Verbindung zu deiner EC2-Instance herzustellen.

  2. Um den CodeDeploy-Host-Agent, der auf der Instance installiert ist, zu stoppen, führe den folgenden Befehl aus:

    sudo service codedeploy-agent stop
  3. Um den Benutzer in der Konfigurationsdatei des CodeDeploy-Agent zu ändern, führe den folgenden sed-Stream-Editor-Befehl aus:

    sudo sed -i 's/""/"ec2-user"/g' /etc/init.d/codedeploy-agent

    Hinweis: Ersetze ec2-user durch den Benutzernamen, mit dem der CodeDeploy-Host-Agent ausgeführt werden soll. Weitere Informationen über den Befehl sed findest du unter Einführung auf der GNU-Website.

  4. Um die systemd-Konfiguration neu zu laden, führe die folgenden Befehle aus:

    sudo sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service
    sudo systemctl daemon-reload
  5. Führe die folgenden Befehle aus, um dem neuen Benutzer Berechtigungen für die erforderlichen Verzeichnisse zu erteilen:

    sudo chown ec2-user:ec2-user -R /opt/codedeploy-agent/
    sudo chown ec2-user:ec2-user -R /var/log/aws/

    Hinweis: Ersetze ec2-user durch den Benutzernamen, mit dem der CodeDeploy-Host-Agent ausgeführt werden soll.

  6. Führe den folgenden Befehl aus, um den CodeDeploy-Agent zu starten:

    sudo service codedeploy-agent start
  7. Führe den folgenden Befehl aus, um zu bestätigen, dass deine Konfigurationsdatei aktualisiert wurde:

    sudo service codedeploy-agent status

    Beispielausgabe:

    The AWS CodeDeploy agent is running as PID ####
  8. Um zu überprüfen, welche Prozesse ausgeführt werden und welcher Benutzer die Prozesse ausführt, führe den folgenden Befehl aus:

    ps aux | grep codedeploy-agent

Eine Startkonfigurationsvorlage und eine AWS Auto-Scaling-Gruppe erstellen, um den Prozess der Benutzeränderung zu automatisieren

Führe die folgenden Schritte aus:

  1. Öffne die Amazon-EC2-Konsole.

  2. Wähle im Navigationsbereich Startkonfigurationen aus.

  3. Wähle Startkonfiguration erstellen aus.

  4. Wähle das Amazon Linux AMI aus.

  5. Wähle Weiter: Details konfigurieren aus.

  6. Wähle für die IAM-Rolle eine vorkonfigurierte AWS Identity and Access Management (IAM)-Rolle aus. Die Rolle muss deiner Instance die Berechtigung gewähren, auf Amazon Simple Storage Service (Amazon S3)-Ressourcen zuzugreifen.

  7. Wähle Erweiterte Details aus.

  8. Gib im Abschnitt Benutzerdaten der Konfigurationsdatei des Agent die Befehle zur Installation des CodeDeploy-Agent ein. Aktualisiere dann die Datei, um einen bestimmten Benutzer zu verwenden.
    Verwende für IMDSv1 das folgende Skript:

    #!/bin/bash
    REGION=$(curl 169.254.169.254/latest/meta-data/placement/availability-zone/ | sed 's/[a-z]$//')
    yum -y update
    yum install ruby wget -y
    cd /home/ec2-user
    wget https://aws-codedeploy-$REGION.s3.amazonaws.com/latest/install
    chmod +x ./install
    ./install auto
    service codedeploy-agent stop
    #adduser username <--- this is only required if you use a username that does not already exist
    sed -i 's/""/"ec2-user"/g' /etc/init.d/codedeploy-agent
    sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service
    systemctl daemon-reload
    chown ec2-user:ec2-user -R /opt/codedeploy-agent/
    chown ec2-user:ec2-user -R /var/log/aws/
    service codedeploy-agent start

    Verwende für IMDSv2 das folgende Skript:

    #!/bin/bash
    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" http://169.254.169.254/latest/meta-data/placement/availability-zone/ | sed 's/[a-z]$//')
    yum -y update
    yum install ruby wget -y
    cd /home/ec2-user
    wget https://aws-codedeploy-$REGION.s3.amazonaws.com/latest/install
    chmod +x ./install
    ./install auto
    service codedeploy-agent stop
    #adduser username <--- this is only required if you use a username that does not already exist
    sed -i 's/""/"ec2-user"/g' /etc/init.d/codedeploy-agent
    sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service
    systemctl daemon-reload
    chown ec2-user:ec2-user -R /opt/codedeploy-agent/
    chown ec2-user:ec2-user -R /var/log/aws/
    service codedeploy-agent start

    Hinweis: Ersetze ec2-user durch den Benutzernamen, mit dem der CodeDeploy-Host-Agent ausgeführt werden soll. Der vorangehende Beispielcode wird automatisch ausgeführt, wenn du eine neue Instance startest, die die definierte Startkonfiguration verwendet.

  9. Führe die restlichen Schritte im Launch Wizard aus. Wähle dann Startkonfiguration erstellen aus.

  10. Wähle Mit dieser Startkonfiguration eine AWS Auto-Scaling-Gruppe erstellen aus.

  11. Gib unter Gruppenname einen Namen für deine Auto-Scaling-Gruppe ein.

  12. Gib für Subnetz ein Subnetz ein, das deiner Instance den Zugriff auf das Internet ermöglicht.

  13. Wähle Weiter: Skalierungsrichtlinien konfigurieren und dann eine Richtlinie aus.

  14. Führe die restlichen Schritte des Startassistenten aus und wähle dann AWS Auto-Scaling-Gruppe erstellen aus.

Überprüfen, ob der CodeDeploy-Agent installiert ist und mit dem richtigen Benutzer auf einer neuen Instance ausgeführt wird

Zunächst musst du sicherstellen, dass deine Instance ausgeführt wird. Führe danach die folgenden Schritte aus:

  1. Verwende SSH, um eine Verbindung zu deiner Instance herzustellen.
  2. Um zu überprüfen, ob der CodeDeploy-Agent auf der Instance ausgeführt wird, führe den folgenden Befehl aus:
    sudo service codedeploy-agent status
    Wenn der Befehl einen Fehler zurückgibt, hast du den CodeDeploy-Agent nicht installiert. Installiere den CodeDeploy-Agent.
  3. Um zu überprüfen, ob der CodeDeploy-Agent mit dem richtigen Benutzernamen ausgeführt wird, führe den folgenden Befehl aus:
    ps aux | grep codedeploy-agent
    Beispielausgabe:
    The AWS CodeDeploy agent is running as PID ####
AWS OFFICIAL
AWS OFFICIALAktualisiert vor 4 Monaten