[AWS] 시스템매니저 사용하기(SSH 필요없이 원격 다중 서버관리)
원격의 서버에 업그레이드를 해야 하는데 1대씩 들어가서 관리하는 방법도 있겠고 오토스케일링에 의해서 EC2가 자동으로 생성된것도 있고 할때 전체 서버에 명령을 내리기 위한 관리 프로그램입니다.
AWS SSM(Systems Manager)
IP로 접속하는 방식이 아닌 EC2 인스턴스ID를 이용해서 접속을 하는 방식입니다. 접속하게 되면 유저는 ssm-user로 표시되며 sudo -i 명령으로 root 유저로 전환이 가능 합니다.
사용하기 위해선 IAM에서 역활을 생성하고. 이 역활이 EC2에 적용 되어 있어야 합니다.
그리고나서 EC2에 접속해서 SSM 서비스를 활성화 시키고. 클라이언트에선 SSM 플러그인을 설치하면 사용이 가능 합니다.
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를 이용해서 현재 생성되어 있는 목록을 텍스트 파일로 만들어 놓은 다음 스크립트를 활용하는 예 입니다.
./run_command.sh 'sudo yum update -y'