AWS Systems Manager 사용을 위해 EC2/온프레미스 서버의 SSM 에이전트의 설치 및 확인해보기

2022.04.28

안녕하세요, 임채정입니다.
AWS Systems Manager 의 사용을 위해서는 서버안에 SSM 에이전트를 설치해주고 AWS Systems Manager 를 사용할 수 있도록 권한을 줘야 합니다.
이번 블로그에서는 EC2 인스턴스와 온프레미스 서버를 AWS Systems Manager 서비스가 사용 가능하도록 만들어 보겠습니다.

아젠다

  1. EC2 인스턴스
  2. 온프레미스 서버

1. EC2 인스턴스

먼저 EC2 인스턴스입니다.
일단 EC2 인스턴스에는 기본적으로 SSM 에이전트가 설치되어 있는 경우가 많습니다.
다음 공식 페이지에 기본적으로 SSM 에이전트가 사전 설치된 인스턴스 목록이 나와있습니다.

1-1. IAM 역할 생성

Systems Manager 에서 EC2에 작업을 할 수 있도록 권한을 부여해줘야 합니다.
그 권한 설정을 EC2 인스턴스에 할당하기 위해 IAM 역할을 생성하겠습니다.
먼저, [역할 만들기]를 클릭합니다.

신뢰할 수 있는 엔터티를 AWS 서비스를 선택하고, 사용 사례를 EC2로 선택합니다.

정책 중에서 AmazonSSMManagedInstanceCore를 채크해서 할당해줍니다.

이때, AmazonSSMManagedInstanceCore정책은 EC2 인스턴스가 SSM에서의 접근을 허용하는 권한이 정의되어 있습니다.

정책 할당이 끝나면 마지막 단계에서 이름을 입력하고 역할을 생성합니다.
이번 블로그에서는 정책이름을 AmazonSSMManagedRole로 지정했지만 이름은 임의로 입력하면 됩니다.

그러면 다음과 같이 역할이 생성되었습니다.

1-2. EC2 인스턴스에 IAM 역할 할당

다음으로 대상 EC2 인스턴스에 위에서 작성한 IAM 역할을 할당하겠습니다.
먼저 IAM 역할을 할당할 인스턴스를 선택합니다.
[작업]버튼을 클릭하고 [보안] -> [IAM 역할 수정]을 클릭합니다.

그러면 IAM 역할을 수정할 수 있는 페이지로 이동합니다.
여기서 위에서 생성한 IAM 역할을 선택하고 보존합니다.

그러면 EC2 페이지에서도 IAM 역할이 잘 할당되어 있는것을 확인할 수 있습니다.

1-3. Systems Manager 및 서버에서 확인

Systems Manager 에서도 확인을 해보겠습니다.
Systems Manager 콘솔 페이지에서 [플릿 관리자]태그에 들어가보면 다음과 같이 에이전트가 설치되있고 권한이 허용된 인스턴스의 목록을 확인할 수 있습니다.

이번에는 다시 EC2 인스턴스 페이지로 돌아가봅시다.
인스턴스에서 연결을 눌러서 [EC2 인스턴스 연결]태그에서 [연결]을 클릭합니다.

그러면 인스턴스가 켜지는데 다음 명령어를 실행해서 SSM 에이전트가 잘 실행하고 있는지도 확인할 수 있습니다.

sudo systemctl status amazon-ssm-agent

2. 온프레미스 서버

이번에는 온프레미스 서버입니다.
위의 EC2 인스턴스와 달리 온프레미스 서버는 SSM 에이전트가 설치되어 있지 않습니다.

2-1. 온프레미스 서버 생성

이번에는 먼저 온프레미스 서버를 생성하겠습니다.
블로그에서는 SSM 에이전트가 설치되어 있지 않은 Red Hat 서버를 생성해서 온프레미스 서버 환경에서 테스트하는 것으로 가정하겠습니다.

이 때, IAM 인스턴스 프로파일에는 별다른 설정을 하지 않습니다.

SSM 에이전트가 설치되지 않은 온프레미스 서버같은 환경이 생성되었습니다. (가정)

2-2. 하이브리드 활성화

다음으로는 Systems Manager 에서 [하이브리드 활성화] 태그에서 [정품 인증 생성] 을 클릭합니다.

IAM 역할이 필요한 권한을 가진 시스템 기본 명령 실행 역할을 생성합니다.인지 확인하고 [정품 인증 생성]을 합니다.

그렇게 되면 Activation CodeActivation ID가 표시되는데 이 정보가 에이전트 설치시에 필요하기 때문에 기억해둡니다.

2-3. 서버 접속 및 에이전트 설치

그럼 이제 서버에 에이전트를 설치하겠습니다.
먼저 서버에 접속합니다.

ssh -i .ssh/lim-tokyo-key.pem ec2-user@35.78.112.34
# [ec2-user@ip-172-31-13-179 ~]$

그 다음 SSM 에이전트가 설치되어 있는지 확인합니다.

sudo systemctl status amazon-ssm-agent
# Unit amazon-ssm-agent.service could not be found.

없는 게 확인이 되면 다음 명령어의 실행을 통해 에이전트를 설치를 합니다.

mkdir /tmp/ssm
curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm -o /tmp/ssm/amazon-ssm-agent.rpm
#   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
#                                  Dload  Upload   Total   Spent    Left  Speed
# 100 25.4M  100 25.4M    0     0  3076k      0  0:00:08  0:00:08 --:--:-- 3810k

sudo yum install -y /tmp/ssm/amazon-ssm-agent.rpm
sudo systemctl stop amazon-ssm-agent

2-2. 하이브리드 활성화 에서 획득한 정보를 입력해서 명령어를 실행합니다.

# sudo amazon-ssm-agent -register -code "Activation Code" -id "Activation ID" -region "region"
sudo amazon-ssm-agent -register -code "Tklx+WTDv2K4ohmBVLc4" -id "4292640d-55af-4946-9ed1-8c1bd5f75c17" -region "ap-northeast-1"
# Error occurred fetching the seelog config file path:  open /etc/amazon/ssm/seelog.xml: no such file or directory
# Initializing new seelog logger
# New Seelog Logger Creation Complete
# 2022-04-27 15:55:27 WARN Could not read InstanceFingerprint file: InstanceFingerprint does not exist.
# 2022-04-27 15:55:27 INFO No initial fingerprint detected, generating fingerprint file...
# 2022-04-27 15:55:27 INFO Successfully registered the instance with AWS SSM using Managed instance-id: mi-0c7e8e445a1e69425

결과에 instance-id: mi-0c7e8e445a1e69425가 Systems Manager에 표시되는 인스턴스ID가 됩니다.
이 때, EC2 인스턴스는 i-로 시작되는데 온프레미스 서버의 경우 mi-로 시작하는 걸 알 수 있습니다.

그 후에 SSM 에이전트를 다시 시작하면 에이전트 설치가 완료됩니다.

sudo systemctl start amazon-ssm-agent

2-4. Systems Manager에서 확인

[하이브리드 활성화] 태그에서 작성한 정품인증을 다시 한 번 확인하면 인스턴스를 하나 등록했기 때문에 아까와 달리 등록된 인스턴스에 1이 표시되어 있습니다.

또한, [플릿 관리자] 태그를 확인해보면 에이전트를 설치한 인스턴스가 잘 추가되어 있는 것을 확인할 수 있습니다.