Saltar al contenido

¿Cómo puedo ejecutar el agente de CodeDeploy con un perfil de usuario que no sea el perfil raíz?

5 minutos de lectura
0

Quiero ejecutar el agente de AWS CodeDeploy con un perfil de usuario que no sea el perfil raíz.

Resolución

La siguiente resolución es compatible con todas las distribuciones de RPM y Linux basadas en Debian compatibles del agente de CodeDeploy. Para iniciar una instancia de Amazon Elastic Compute Cloud (Amazon EC2) con una imagen de máquina de Amazon (AMI) de Amazon Linux, debes usar Amazon Linux 2023 (AL2023) o Amazon Linux 2 (AL2).

Requisito previo: Instala el agente de CodeDeploy en tu instancia de EC2 o comprueba que el agente de CodeDeploy se esté ejecutando en la instancia.

Cambio del usuario en el archivo de configuración del agente de CodeDeploy y concesión de los permisos necesarios al usuario

Sigue estos pasos:

  1. Usa SSH para conectarte a tu instancia de EC2.

  2. Para detener el agente host de CodeDeploy que está instalado en la instancia, ejecuta el siguiente comando:

    sudo service codedeploy-agent stop
  3. Para cambiar el usuario en el archivo de configuración del agente de CodeDeploy, ejecuta el siguiente comando del editor de secuencias sed:

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

    Nota: Sustituye ec2-user por el nombre de usuario en el que deseas que se ejecute el agente host de CodeDeploy. Para obtener más información sobre el comando sed, consulta la Introducción en el sitio web de GNU.

  4. Para volver a cargar la configuración del sistema, ejecuta los siguientes comandos:

    sudo sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service
    sudo systemctl daemon-reload
  5. Para conceder al nuevo usuario los permisos de acceso a los directorios necesarios, ejecuta los siguientes comandos:

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

    Nota: Sustituye ec2-user por el nombre de usuario en el que deseas que se ejecute el agente host de CodeDeploy.

  6. Para reiniciar el agente de CodeDeploy, ejecuta el siguiente comando:

    sudo service codedeploy-agent start
  7. Para confirmar que el archivo de configuración está actualizado, ejecuta el siguiente comando:

    sudo service codedeploy-agent status

    Resultado de ejemplo:

    The AWS CodeDeploy agent is running as PID ####
  8. Para comprobar qué procesos se están ejecutando y quién es el usuario que los ejecuta, ejecuta el siguiente comando:

    ps aux | grep codedeploy-agent

Crea una plantilla de configuración de inicio y un grupo de AWS Auto Scaling para automatizar el proceso de cambio de usuario

Sigue estos pasos:

  1. Abre la consola de Amazon EC2.

  2. En el panel de navegación, elige Configuraciones de inicio.

  3. Elige Crear configuración de inicio.

  4. Selecciona la AMI de Amazon Linux.

  5. Elige Siguiente: configurar detalles.

  6. En Rol de IAM, elige un rol de AWS Identity and Access Management (IAM) preconfigurado. El rol debe conceder permiso a tu instancia para acceder a los recursos de Amazon Simple Storage Service (Amazon S3).

  7. Selecciona Detalles avanzados.

  8. En la sección Datos de usuario del archivo de configuración del agente, introduce los comandos para instalar el agente de CodeDeploy. A continuación, actualiza el archivo para usar un usuario específico.
    Para IMDSv1, utiliza el siguiente 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

    Para IMDSv2, utiliza el siguiente 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: Sustituye ec2-user por el nombre de usuario en el que deseas que se ejecute el agente host de CodeDeploy. El código del ejemplo anterior se ejecuta automáticamente al iniciar una nueva instancia que usa la configuración de inicio definida.

  9. Completa los pasos restantes del asistente de inicio. A continuación, selecciona Crear configuración de inicio.

  10. Elige Crear un grupo de AWS Auto Scaling mediante esta configuración de inicio.

  11. En Nombre del grupo, introduce un nombre para tu grupo de escalamiento automático.

  12. En Subred, introduce una subred que permita a la instancia acceder a Internet.

  13. Elige Siguiente: configurar políticas de escalamiento y, a continuación, elige una política.

  14. Completa el resto de los pasos del asistente de inicio y, a continuación, elige Crear grupo de AWS Auto Scaling.

Verifica que el agente de CodeDeploy esté instalado y se esté ejecutando con el usuario correcto en una instancia nueva

En primer lugar, confirma que la instancia se esté ejecutando. A continuación, sigue estos pasos:

  1. Usa SSH para conectarte a tu instancia.
  2. Para comprobar que el agente de CodeDeploy se está ejecutando en la instancia, ejecuta el siguiente comando:
    sudo service codedeploy-agent status
    Si el comando devuelve un error, significa que no has instalado el agente de CodeDeploy. Instala el agente de CodeDeploy.
  3. Para comprobar que el agente de CodeDeploy se ejecuta con el nombre de usuario correcto, ejecuta el siguiente comando:
    ps aux | grep codedeploy-agent
    Resultado de ejemplo:
    The AWS CodeDeploy agent is running as PID ####
OFICIAL DE AWSActualizada hace un año