Como faço para executar o agente do CodeDeploy com um perfil de usuário que não é o perfil raiz?

5 minuto de leitura
0

Quero executar o agente do AWS CodeDeploy com um perfil de usuário que não seja o perfil raiz.

Resolução

O Amazon Linux 2 e o Amazon Linux 2023 substituíram a imagem de máquina da Amazon (AMI) do Amazon Linux 1. Não é mais possível executar AMIs do Amazon Linux 1 como uma instância do Amazon Elastic Compute Cloud (Amazon EC2). A resolução a seguir é compatível com todas as distribuições Linux baseadas em RPM e Debian suportadas do agente do CodeDeploy.

Pré-requisito: Instale o agente do CodeDeploy em sua instância do EC2 ou verifique se o agente do CodeDeploy está em execução na instância.

Altere o usuário em seu arquivo de configuração do agente do CodeDeploy e conceda ao usuário as permissões necessárias

Conclua as etapas a seguir:

  1. Use o SSH para se conectar à sua instância do EC2.

  2. Para parar o agente host do CodeDeploy que está instalado na instância, execute o seguinte comando:

    sudo service codedeploy-agent stop
  3. Para alterar o usuário no arquivo de configuração do agente do CodeDeploy, execute o seguinte comando de editor de fluxos sed:

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

    Observação: Substitua ec2-user pelo nome de usuário no qual você deseja que o agente host do CodeDeploy seja executado. Para obter mais informações sobre o comando sed, consulte Introdução no site do GNU.

  4. Para recarregar a configuração do systemd, execute os seguintes 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 ao novo usuário permissões para os diretórios necessários, execute os comandos a seguir:

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

    Observação: Substitua ec2-user pelo nome de usuário no qual você deseja que o agente host do CodeDeploy seja executado.

  6. Para reiniciar o agente do CodeDeploy, execute o seguinte comando:

    sudo service codedeploy-agent start
  7. Para confirmar que seu arquivo de configuração está atualizado, execute o seguinte comando:

    sudo service codedeploy-agent status

    Exemplo de saída:

    The AWS CodeDeploy agent is running as PID ####
  8. Para verificar quais processos estão em execução e o usuário que está executando os processos, execute o seguinte comando:

    ps aux | grep codedeploy-agent

Criar um modelo de configuração de execução e um grupo do AWS Auto Scaling para automatizar o processo de mudança de usuário

Conclua as etapas a seguir:

  1. Abra o console do Amazon EC2.

  2. No painel de navegação, escolha Configurações de execução.

  3. Escolha Criar configuração de execução.

  4. Selecione a AMI do Amazon Linux.

  5. Selecione Avançar: Configure os detalhes.

  6. Para o perfil do IAM, escolha um perfil pré-configurado do AWS Identity and Access Management (AWS IAM). O perfil deve conceder permissão à sua instância para acessar os recursos do Amazon Simple Storage Service (Amazon S3).

  7. Escolha Detalhes avançados.

  8. Na seção Dados do usuário do arquivo de configuração do agente, digite os comandos para instalar o agente do CodeDeploy. Em seguida, atualize o arquivo para usar um usuário específico.
    Para IMDSv1, use o seguinte 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, use o seguinte 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

    Observação: Substitua ec2-user pelo nome de usuário no qual você deseja que o agente host do CodeDeploy seja executado. O código de exemplo anterior é executado automaticamente quando você executa uma nova instância que usa a configuração de execução definida.

  9. Conclua as etapas restantes no assistente de inicialização. Em seguida, escolha Criar configuração de execução.

  10. Escolha Criar um grupo do AWS Auto Scaling usando essa configuração de execução.

  11. Em Nome do grupo, insira um nome para seu grupo do Auto Scaling.

  12. Em Sub-rede, insira uma sub-rede que permita que sua instância acesse a internet.

  13. Selecione Avançar: Configure políticas de escalabilidade e, em seguida, escolha uma política.

  14. Conclua o restante das etapas no assistente de inicialização e escolha Criar grupo do AWS Auto Scaling.

Verificar se o agente do CodeDeploy está instalado e em execução com o usuário correto em uma nova instância

Primeiro, confirme se sua instância está em execução. Em seguida, conclua as seguintes etapas:

  1. Use SSH para conectar-se à sua instância.
  2. Para verificar se o agente do CodeDeploy está em execução na instância, execute o seguinte comando:
    sudo service codedeploy-agent status
    Se o comando retornar um erro, significa que você não instalou o agente do CodeDeploy. Instale o agente do CodeDeploy.
  3. Para verificar se o agente do CodeDeploy está sendo executado com o nome de usuário correto, execute o seguinte comando:
    ps aux | grep codedeploy-agent
    Exemplo de saída:
    The AWS CodeDeploy agent is running as PID ####
AWS OFICIAL
AWS OFICIALAtualizada há 3 meses