Come posso eseguire l'agente CodeDeploy con un profilo utente diverso dal profilo root?

5 minuti di lettura
0

Desidero eseguire l'agente AWS CodeDeploy con un profilo utente diverso dal profilo root.

Risoluzione

Amazon Linux 2 e Amazon Linux 2023 hanno sostituito l'Amazon Machine Image (AMI) Amazon Linux 1. Non puoi più avviare le AMI Amazon Linux 1 come istanza Amazon Elastic Compute Cloud (Amazon EC2). La seguente risoluzione è compatibile con tutte le distribuzioni Linux RPM e basate su Debian supportate dell'agente CodeDeploy.

Prerequisito: installa l'agente CodeDeploy sull'istanza EC2 o verifica che l'agente CodeDeploy sia in esecuzione sull'istanza.

Cambia l'utente nel file di configurazione dell'agente CodeDeploy e concedi all'utente le autorizzazioni richieste

Completa i seguenti passaggi:

  1. Utilizza SSH per connetterti all'istanza EC2.

  2. Per arrestare l'agente host CodeDeploy installato sull'istanza, esegui il seguente comando:

    sudo service codedeploy-agent stop
  3. Per cambiare l'utente nel file di configurazione dell'agente CodeDeploy, esegui il seguente comando sed dell’editor di flusso:

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

    Nota: sostituisci ec2-user con il nome utente su cui desideri eseguire l'agente host CodeDeploy. Per ulteriori informazioni sul comando sed, consulta Introduction (Introduzione) sul sito web di GNU.

  4. Per ricaricare la configurazione di systemd, esegui i seguenti comandi:

    sudo sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service
    sudo systemctl daemon-reload
  5. Per concedere al nuovo utente le autorizzazioni per le directory richieste, esegui i seguenti comandi:

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

    Nota: sostituisci ec2-user con il nome utente su cui desideri eseguire l'agente host CodeDeploy.

  6. Per riavviare l'agente CodeDeploy, esegui il seguente comando:

    sudo service codedeploy-agent start
  7. Per verificare se il file di configurazione è aggiornato, esegui il seguente comando:

    sudo service codedeploy-agent status

    Esempio di output:

    The AWS CodeDeploy agent is running as PID ####
  8. Per verificare quali processi sono in esecuzione e l'utente che esegue i processi, esegui il seguente comando:

    ps aux | grep codedeploy-agent

Crea un modello di configurazione di avvio e un gruppo AWS Auto Scaling per automatizzare il processo di modifica degli utenti

Completa i seguenti passaggi:

  1. Apri la console Amazon EC2.

  2. Nel pannello di navigazione, scegli Configurazioni di avvio.

  3. Seleziona Crea configurazione di avvio.

  4. Seleziona l'AMI Amazon Linux.

  5. Scegli Avanti: Configura i dettagli.

  6. Per Ruolo IAM, scegli un ruolo AWS Identity and Access Management (AWS IAM) preconfigurato. Il ruolo deve concedere all'istanza S3 l'autorizzazione ad accedere alle risorse di Amazon Simple Storage Service (Amazon S3).

  7. Scegli Dettagli avanzati.

  8. Nella sezione Dati utente del file di configurazione dell'agente, inserisci i comandi per installare l'agente CodeDeploy. Quindi aggiorna il file per utilizzare un utente specifico.
    Per IMDSv1, utilizza il seguente script:

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

    Per IMDSv2, utilizza il seguente script:

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

    Nota: sostituisci ec2-user con il nome utente su cui desideri eseguire l'agente host CodeDeploy. L'esempio di codice precedente viene eseguito automaticamente quando si avvia una nuova istanza che utilizza la configurazione di avvio definita.

  9. Completa i passaggi rimanenti della procedura guidata di avvio. Quindi scegli Crea configurazione di avvio.

  10. Scegli Create an AWS Auto Scaling group using this launch configuration (Crea un gruppo AWS Autoscaling utilizzando questa configurazione di avvio).

  11. In Nome gruppo, inserisci un nome per il tuo gruppo Auto Scaling.

  12. In Sottorete, inserisci una sottorete che consenta alla tua istanza di accedere a Internet.

  13. Scegli Avanti: Configura le policy di dimensionamento, quindi scegli una policy.

  14. Completa il resto dei passaggi della procedura guidata di avvio, quindi scegli Create AWS Auto Scaling group (Crea gruppo AWS Auto Scaling).

Verifica che l'agente CodeDeploy sia installato e sia in esecuzione con l'utente corretto su una nuova istanza

Innanzitutto, verifica che l'istanza sia in esecuzione. Quindi completa i seguenti passaggi:

  1. Utilizza SSH per connetterti all'istanza.
  2. Per verificare che l'agente CodeDeploy sia in esecuzione sull'istanza, esegui il seguente comando:
    sudo service codedeploy-agent status
    Se il comando restituisce un errore, significa che l'agente CodeDeploy non è stato installato. Installa l'agente CodeDeploy.
  3. Per verificare che l'agente CodeDeploy sia in esecuzione con il nome utente corretto, esegui il seguente comando:
    ps aux | grep codedeploy-agent
    Esempio di output:
    The AWS CodeDeploy agent is running as PID ####
AWS UFFICIALE
AWS UFFICIALEAggiornata 2 mesi fa