루트 프로필이 아닌 사용자 프로필로 CodeDeploy 에이전트를 실행하려면 어떻게 해야 합니까?

4분 분량
0

루트 프로필이 아닌 사용자 프로필로 AWS CodeDeploy 에이전트를 실행하려고 합니다.

해결 방법

Amazon Linux 2 및 Amazon Linux 2023이 Amazon Linux 1 Amazon Machine Image(AMI)를 대체했습니다. 더 이상 Amazon Linux 1 AMI를 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스로 시작할 수 없습니다. 다음 해결 방법은 CodeDeploy 에이전트의 지원되는 모든 RPM 및 Debian 기반 Linux 배포판과 호환됩니다.

전제 조건: EC2 인스턴스에 CodeDeploy 에이전트를 설치하거나 해당 인스턴스에서 CodeDeploy 에이전트가 실행되고 있는지 확인하십시오.

CodeDeploy 에이전트 구성 파일에서 사용자를 변경하고 해당 사용자에게 필요한 권한 부여

다음 단계를 완료하십시오.

  1. SSH를 사용하여 EC2 인스턴스에 연결합니다.

  2. 인스턴스에 설치된 CodeDeploy 호스트 에이전트를 중지하려면 다음 명령을 실행합니다.

    sudo service codedeploy-agent stop
  3. CodeDeploy 에이전트 구성 파일에서 사용자를 변경하려면 다음 sed 스트림 편집기 명령을 실행합니다.

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

    참고: ec2-user를 CodeDeploy 호스트 에이전트를 실행할 사용자 이름으로 바꾸십시오. sed 명령에 대한 자세한 내용은 GNU 웹사이트에서 소개를 참조하십시오.

  4. systemd 구성을 다시 로드하려면 다음 명령을 실행합니다.

    sudo sed -i 's/#User=codedeploy/User=ec2-user/g' /usr/lib/systemd/system/codedeploy-agent.service
    sudo systemctl daemon-reload
  5. 필요한 디렉터리에 대한 권한을 새 사용자에게 부여하려면 다음 명령을 실행합니다.

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

    참고: ec2-user를 CodeDeploy 호스트 에이전트를 실행할 사용자 이름으로 바꾸십시오.

  6. CodeDeploy 에이전트를 다시 시작하려면 다음 명령을 실행합니다.

    sudo service codedeploy-agent start
  7. 구성 파일이 업데이트되었는지 확인하려면 다음 명령을 실행합니다.

    sudo service codedeploy-agent status

    출력 예시:

    The AWS CodeDeploy agent is running as PID ####
  8. 실행 중인 프로세스와 해당 프로세스를 실행 중인 사용자를 확인하려면 다음 명령을 실행합니다.

    ps aux | grep codedeploy-agent

시작 구성 템플릿과 AWS Auto Scaling 그룹을 생성하여 사용자 변경 프로세스 자동화

다음 단계를 완료하십시오.

  1. Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 시작 구성을 선택합니다.

  3. 시작 구성 생성을 선택합니다.

  4. Amazon Linux AMI를 선택합니다.

  5. 다음: 세부 정보 구성을 선택합니다.

  6. IAM 역할에서 사전 구성된 AWS Identity and Access Management(IAM) 역할을 선택합니다. 역할은 Amazon Simple Storage Service(Amazon S3) 리소스에 액세스할 수 있는 권한을 인스턴스에 부여해야 합니다.

  7. 고급 세부 정보를 선택합니다.

  8. 에이전트 구성 파일의 사용자 데이터 섹션에서 CodeDeploy 에이전트를 설치하기 위한 명령을 입력합니다. 그런 다음, 특정 사용자를 사용하도록 파일을 업데이트합니다.
    IMDSv1의 경우 다음 스크립트를 사용하십시오.

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

    IMDSv2의 경우 다음 스크립트를 사용하십시오.

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

    참고: ec2-user를 CodeDeploy 호스트 에이전트를 실행할 사용자 이름으로 바꾸십시오. 위의 예제 코드는 정의된 시작 구성을 사용하는 새 인스턴스를 시작할 때 자동으로 실행됩니다.

  9. 시작 마법사의 나머지 단계를 완료합니다. 그런 다음, 시작 구성 생성을 선택합니다.

  10. 이 시작 구성을 사용하여 AWS Auto Scaling 그룹 생성을 선택합니다.

  11. 그룹 이름에 Auto Scaling 그룹의 이름을 입력합니다.

  12. 서브넷에 인스턴스가 인터넷에 액세스할 수 있는 서브넷을 입력합니다.

  13. 다음: 조정 정책 구성을 선택한 다음, 정책을 선택합니다.

  14. 시작 마법사의 나머지 단계를 완료하고 AWS Auto Scaling 그룹 생성을 선택합니다.

CodeDeploy 에이전트가 설치되어 있고 새 인스턴스에서 올바른 사용자로 실행되고 있는지 확인

먼저 인스턴스가 실행되고 있는지 확인합니다. 그리고 다음 단계를 완료합니다.

  1. SSH를 사용하여 인스턴스에 연결합니다.
  2. CodeDeploy 에이전트가 인스턴스에서 실행되고 있는지 확인하려면 다음 명령을 실행합니다.
    sudo service codedeploy-agent status
    명령에서 오류가 반환되면 CodeDeploy 에이전트를 설치하지 않은 것입니다. CodeDeploy 에이전트를 설치하십시오.
  3. CodeDeploy 에이전트가 올바른 사용자 이름으로 실행되고 있는지 확인하려면 다음 명령을 실행합니다.
    ps aux | grep codedeploy-agent
    출력 예시:
    The AWS CodeDeploy agent is running as PID ####
AWS 공식
AWS 공식업데이트됨 한 달 전