[AWS] 시스템매니저 사용하기(SSH 필요없이 원격 다중 서버관리) > AWS.클라우드
AWS.클라우드

[AWS] 시스템매니저 사용하기(SSH 필요없이 원격 다중 서버관리)

조회 337회 댓글 0건

원격의 서버에 업그레이드를 해야 하는데 1대씩 들어가서 관리하는 방법도 있겠고 오토스케일링에 의해서 EC2가 자동으로 생성된것도 있고 할때 전체 서버에 명령을 내리기 위한 관리 프로그램입니다.


AWS SSM(Systems Manager)

IP로 접속하는 방식이 아닌 EC2 인스턴스ID를 이용해서 접속을 하는 방식입니다. 접속하게 되면 유저는 ssm-user로 표시되며 sudo -i 명령으로 root 유저로 전환이 가능 합니다.
사용하기 위해선 IAM에서 역활을 생성하고. 이 역활이 EC2에 적용 되어 있어야 합니다.
그리고나서 EC2에 접속해서 SSM 서비스를 활성화 시키고. 클라이언트에선 SSM 플러그인을 설치하면 사용이 가능 합니다.


3a431b4e617b1cc09be8a09a9296fb78_1699531185_4251.png


IAM 역활 생성

EC2에 SSM 역활 부여하기 위해서 다음과 같은 순서로 생성하면 된다.

IAM > 액세스 관리 > 역활 > "역활 만들기" > "AWS 서비스" 선택
사용사례에서 "EC2" 선택
권한추가 목록이 나오면 "AmazonSSMManagedInstanceCore"를 선택
역활 이름을 입력한고 "역활 생성" 버튼을 클릭하여 생성 한다.

EC2에 적용

시작템플릿이 있으면 시작템플릿도 같이 변경을 해줘야 한다. 적용 시키는 위치는 다음과 같다.
EC2 생성된 인스턴스에선 요약에서 'IAM 역할' 부분을 보면 된다.

EC2 인스턴스 상세정보에서
작업 > 보안 > IAM 역활 수정
선택한 다음 나오는 화면에서 역활 추가한것을 선택해 주면 된다.

시작템플릿 수정
역활 생성한것을 선택해준다.
고급 세부정보 > IAM 인스턴스 프로파일

서버에 접속하여 SSM 활성화

서비스를 올린 다음 재부팅 시에도 적용이 되어야 하기 때문에 enable를 해준다. 그리고 상태를 확인해 보면 된다.
systemctl restart amazon-ssm-agent.service
systemctl enable amazon-ssm-agent.service
systemctl status amazon-ssm-agent.service

SSM CLI에서 사용할 플러그인 설치

최종적으로 플러그인을 설치하면 되는데 먼저 aws cli가 설치 되었는지 확인해 보는것이 좋다.

aws cli 설치

aws cli를 사용하기 때문에 설치 되어 있지 않다면 먼저 설치를 해야 한다.
우선 aws --version 해서 버전 정보가 나오면 설치가 된 것이다.

그렇지 않고 파일이 없다고 한다면 아래를 참고해서 설치를 하면 된다.
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html

처음이라면 환경 설정을 해줘야 한다.
aws configure

AWS Access Key ID [None]: AWS_ACCESS_KEY_ID
AWS Secret Access Key [None]: AWS_SECRET_ACCESS_KEY
Default region name [None]: ap-northeast-2
Default output format [None]:

실행하고 나면 아래 위치에 파일이 생성된 것을 볼 수 있다.
ll /root/.aws/
-rw------- 1 root root 34 9월 10 12:41 config
-rw------- 1 root root 116 9월 10 12:41 credentials

ssm 플러그인 설치

아마존리눅스2, Centos7 에서 최신버전 설치
wget https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.rpm
yum install -y session-manager-plugin.rpm

ssm 플러그인 삭제해야 된다면
yum erase session-manager-plugin -y

session-manager-plugin 명령을 실행해서 잘 되는지 확인 한다.
The Session Manager plugin was installed successfully. Use the AWS CLI to start a session.

ssm플러그인이 만약 안된다면 경로를 확인해 본다.
echo $PATH
whereis session-manager-plugin

ssm-user 유저로 접속하기
aws ssm start-session --target
aws ssm start-session --target i-01e7c9af6364b1667

전체서버에 명령 내리기 

EC2 SDK를 이용해서 현재 생성되어 있는 목록을 텍스트 파일로 만들어 놓은 다음 스크립트를 활용하는 예 입니다.


instance_ids.txt
  i-0abcd1234efgh5678
  i-0abcd1234efgh5679
  i-0abcd1234efgh5680
 


  #!/bin/bash

  # File containing instance IDs
  INSTANCE_FILE="instance_ids.txt"

  # AWS region
  REGION="ap-northeast-2"

  # Command to run on instances
  COMMAND=$1

  if [ -z "$COMMAND" ]
  then
    echo "No command specified"
    exit 1
  fi

  while IFS= read -r INSTANCE_ID
  do
    echo "Running command on $INSTANCE_ID"
   
    aws ssm send-command \
        --document-name "AWS-EC2 RunShellScript" \
        --instance-ids "$INSTANCE_ID" \
        --parameters commands="$COMMAND" \
        --region $REGION
   
  done < "$INSTANCE_FILE"
 

 

./run_command.sh 'sudo yum update -y'




  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
전체 61건 1 페이지
  • profile_image 페이지를 가져오지 못하니 404인가 아니면 서버쪽 설정 문제 이므로 500번때 코드가 나올까?결론은 아래 처럼 502 오류가 발생 합니다.ELB에서 리스너가 없을 경우 서버로 접속해서 데이터를 가져오지 못하는 상황에선 아래와 같은 메시지를 만나게 됩니다.포트지정 설정을 잘못해도 동일 하겠지요. 학술적으로 정리를 해보면 아래와 같이 말을 할 수 있다. HTTP 502 코드는 "Bad Gateway" 오류로 웹 서버가 게이트웨이나 프록시 서버를 통…
  • profile_image https용도로 사용할 수 있는 AWS Cerificate Manager 페이지에서의 인증서 생성하는 것에 대한 것입니다.이곳에선 외부에서 받은 인증서 파일을 올리거나 무료로 인증서를 생성 할 수 있습니다.AWS 무료인증서는 속도가 빠른 장점이 있고 무료이지만 문제는 이것을 다른곳에선 사용하지 못한 다는것입니다.예를 들면 EC2의 웹서버에서 https 용도로 사용하지 못합니다.그럼 EC2에선 외부에서 생성한 인증서를 가져와 사용하던가. 아니면 …
  • profile_image 클라우드 와치 수동으로 내보내기 하려 하는데 아래와 같은 메시지를 보게 되면GetBucketAcl call on the given bucket failed. Please check if CloudWatch Logs has been granted permission to perform this operation."S3 버킷에 대한 GetBucketAcl 호출 실패" 오류는 CloudWatch Logs가 지정된 S3 버킷에 대한 접근 권한이 없음을…
  • profile_image 온프레미스 환경에선 주기적으로 압축하여 보관하거나 복사하거나 해서 관리 후 삭제 하기도 하는데. 오토스케일링 사용으로 EC2가 없어지는 경우 이런 방식이 필요하다. 물론 EFS를 사용하는 방법도 있겠지만 난 그러고 싶지 않다. ● 클라우드와치 Agent를 설치 한다.yum -y install amazon-cloudwatch-agent▷ 아래는 테스트 하기 위한 로그를 2초에 한번 씩 발생 시킨다.while true; do (curl http:/…
  • profile_image NAT(Network Address Translation) 게이트웨이 구성으로 VPC(Virtual Private Cloud) 환경에서 프라이빗 서브넷에 있는 인스턴스들이 인터넷이나 AWS의 다른 공개 서비스에 접근할 수 있게 된다. ● NAT 게이트웨이NAT 게이트웨이는 AWS에서 관리하는 서비스로, 높은 가용성과 자동 확장 기능을 제공합니다. NAT 게이트웨이를 사용하면 별도의 관리 없이도 프라이빗 서브넷의 인스턴스가 인터넷에 접근할 수 있…
  • profile_image 아마존리눅스2에서 기본적으로 mysql 클라이언트가 없어서 접속을 하지 못하는 문제가 있어서 설치 하는 도중에 발생한 문제를 다음에는 쉽게 해결하기 위해서 적습니다.이게 없으면 덤프받은것 올리지도 못하고 해당 서버에서 디비서버로 접속도 못하네요~● mysql 클라이언트 설치 시도amazon-linux-extras install epel -ywget https://dev.mysql.com/get/mysql80-community-release-el…
  • profile_image S3에서 올린 본인 이외에 제 3자도 읽을 수 있도록 올린 것이 아닌 경우 클라우드 프론트에서만 읽을 수 있는 권한을 주는 방법에 대한 것이다. 프로그램으로 하나 씩 올리면서 권한을 줬으면 문제 되지 않는다.그렇지 않고. 아래 처럼 올린 경우 권한이 없어서 오류가 발생 한다. s3cmd sync /로컬/디렉토리 s3://버킷이름 아래처럼 배포를 생성할때 설정 해도 되고 다 설정한 다음 후에 수정을 해도 됩니다.<Error><Co…