기존의 Amazon Web Service (AWS) EC2 인스턴스를 관리할 때 관리 콘솔에서 클릭하는 것은 잘 작동합니다. 그러나 인프라가 확장될수록 인스턴스 관리는 많은 시간이 소요되고 복잡해집니다. 인스턴스를 관리하는 더 나은 방법이 있습니까? 네! AWS Ansible EC2 모듈을 사용할 수 있습니다.
이 튜토리얼에서는 Ansible AWS EC2 모듈이 예제 중심 접근 방식으로 AWS EC2 인스턴스를 효과적으로 관리할 수 있도록 도와줍니다.
계속 읽고 시작하세요!
필수 사항
이 튜토리얼은 단계별 지침으로 구성됩니다. 따라 오려면 다음 사항이 준비되어 있는지 확인하십시오:
- Ansible 컨트롤러 호스트 – 이 튜토리얼은 Ubuntu 20.04.3 LTS 머신에서 Ansible v2.11.7을 사용합니다.
- A remote Linux computer to test out the amazon.aws.ec2_instance Ansible module. This tutorial uses Ubuntu 20.04.3 LTS as the remote node.
- AWS 계정.
- AWS IAM 사용자, 액세스 키 ID 및 비밀 키가 로컬 머신에 설정되어 있으며 EC2 인스턴스를 생성하고 관리할 수 있는 권한이 있어야 합니다. 이 튜토리얼은 ec2user라는 IAM 사용자를 사용합니다.
IAM 사용자가 프로그래밍 방식으로 액세스할 수 있도록 설정되어 있으며 AmazonEC2FullAccess의 기존 정책에 할당되었는지 확인하세요.
- Ansible 명령과 플레이북을 실행할 인벤토리 파일과 하나 이상의 호스트가 구성되어 있어야 합니다. 원격 Linux 컴퓨터의 이름은 myserver이며, 이 튜토리얼에서는 web이라는 인벤토리 그룹을 사용합니다.
- Ansible 컨트롤러 호스트와 원격 노드 머신에는 Python v3.6 이상이 설치되어 있어야 합니다. 이 튜토리얼에서는 Ubuntu 머신에 Python v3.8.10을 사용합니다.
- Python 모듈 boto3는 1.15.0보다 크고 botocore는 1.18.0보다 크게 Ansible 컨트롤러 호스트와 원격 노드 머신에 설치되어야 합니다.
EC2 인스턴스를 만들거나 다시 시작하기
AWS 계정에서 단일 EC2 인스턴스를 만들거나 다시 시작할 계획이 있다면 즉석 명령을 실행하는 것이 충분합니다. 즉석 명령은 EC2 인스턴스를 만들거나 수정하는 빠르고 효율적인 방법입니다.
Ansible 컨트롤러에 로그인하여 아래의 ansible
명령을 실행하여 호스트(web
)에 연결하십시오.
이 명령은 인수(-a
)를 전달하여 AWS EC2 인스턴스를 us-east-2
지역에서 instance_tags=Name=Tag1
로 다시 시작하도록 Ansible에 지시합니다. AWS 계정에 대한 연결을 인증하려면 즉석 명령에 aws_access_key
와 aws_secret_key
세부 정보를 추가하십시오.
튜토리얼은 모든 작업을 us-east-2 지역에서 수행하지만 원하는 AWS 지역에서 동일한 작업을 수행할 수 있습니다.
명령이 완료되면 아래와 같이 Ansible이 AWS EC2 인스턴스를 성공적으로 다시 시작했다는 변경됨 메시지가 표시됩니다.

EC2 인스턴스를 Ansible Playbook으로 시작하기
아마도 이미 Ansible ad hoc 명령을 실행하는 방법을 배웠을 것입니다. 그것은 일회성 작업에 훌륭합니다! 그러나 여러 작업을 수행해야 할 필요가 있을 수도 있습니다. 그렇다면 여러 작업을 실행할 Ansible playbook을 만듭니다. 이 playbook은 여러 작업을 실행할 EC2 인스턴스를 시작합니다.
1. Ansible 컨트롤러 호스트에서 터미널을 열고 다음 명령을 실행하여 ~/ansible_aws_ec2_module
이라는 디렉토리를 만들고 해당 디렉토리로 전환합니다.
이 디렉토리에는 Ansible AWS EC2 모듈을 호출하는 데 사용할 playbook 및 필요한 모든 구성 파일이 포함됩니다.
2. 다음으로, 좋아하는 텍스트 편집기를 열고 ~/ansible_aws_ec2_module 디렉토리에 main.yml이라는 파일을 만듭니다. main.yml 파일에 다음과 같은 YAML playbook 내용을 채웁니다.
아래 playbook에는 AWS 계정에서 특정 VPC 내의 공용 IP 주소를 가진 인스턴스를 시작하는 작업이 포함되어 있습니다.
이후 튜토리얼 전반에 걸쳐
aws_access_key
,aws_secret_key
값을 여러분 자신의 값으로 대체합니다.
3. 아래 명령을 실행하여 플레이북(main.yml
)을 호출합니다. 그러면 플레이북이 t2.micro로 인스턴스 유형을 설정하여 us-east-2
리전에 새 인스턴스를 생성하는 작업을 실행합니다.
아래에서 몇 가지 작업이 변경됨 상태를 보여줍니다. 이는 Ansible이 인스턴스를 성공적으로 생성하고 작업의 상태를 변경하여 명령을 실행했음을 나타냅니다. 반면에, 일부 작업은 변경이 필요하지 않아 ok 상태를 보입니다.

4. 이제, 좋아하는 웹 브라우저를 열고 AWS 관리 콘솔에 로그인합니다.
5. 마지막으로, 콘솔 상단의 검색 창을 클릭하고 EC2를 검색한 후 EC2 메뉴 항목을 클릭합니다. 이렇게 하면 브라우저가 EC2 페이지로 리디렉션됩니다.

EC2 페이지에서 아래와 같이 새로 생성된 인스턴스를 볼 수 있습니다.

여러 AWS EC2 인스턴스 중지
아마도 일부 AWS EC2 인스턴스는 더 이상 사용되지 않을 것입니다. 그렇다면 Ansible 플레이북을 실행하여 여러 인스턴스를 중지하거나 종료할 수 있습니다. 인스턴스 ID를 지정하고 작업에 값을 선언하여 Ansible EC2 AWS 모듈의 동작을 설정하세요.
1. stop.yml이라는 Ansible 플레이북을 만들고 아래 코드를 플레이북에 복사/붙여넣기하세요.
아래 플레이북은 두 개의 인스턴스(i-0d8c7eb4eb2c643a1 및 i-0dbc17a67c0f7577c)를 중지합니다.
인스턴스를 중지하는 대신 종료하려면
state
값을absent
로 변경하세요.
2. 이제 아래 명령을 실행하여 플레이북(stop.yml
)을 실행하세요. 이렇게 하면 플레이북에서 지정한 인스턴스가 중지됩니다. ansible-playbook stop.yml

3. 마지막으로 웹 브라우저에서 AWS 인스턴스로 이동하면 아래에 표시된 것처럼 성공적으로 중지된 두 개의 인스턴스가 표시됩니다.

태그, 볼륨 및 클라우드 워치 모니터링이 포함된 인스턴스 생성
아마도 태깅, 클라우드 워치 알람으로 모니터링 및 저장 용량을 위한 별도 구성 요소로 인스턴스를 프로비저닝해야 할 것입니다. 그 경우에는 앤서블 EC2 AWS 모듈을 플레이북에서 사용하면 됩니다.
태그는 AWS 리소스를 구성하고 AWS 관리 콘솔에서 리소스의 비용을 효율적으로 계산하는 훌륭한 방법입니다.
1. advanced.yml이라는 새로운 앤서블 플레이북을 만들고 아래 코드로 플레이북을 채웁니다.
아래 플레이북은 AWS EC2 인스턴스를 (volumes
—> /dev/sdb
)로 시작하고 모니터링하며 Instance1
로 인스턴스에 태그를 지정합니다.
2. 이제 아래 명령을 실행하여 플레이북(advanced.yml
)을 실행합니다. 이 명령은 태그, 볼륨 및 클라우드 워치 모니터링이 있는 AWS EC2 인스턴스를 시작합니다. ansible-playbook advanced.yml

3. AWS EC2 콘솔의 인스턴스 저장소 탭으로 이동합니다. 블록 장치 아래에서 목록에서 볼륨 ID를 클릭하여 인스턴스의 상세 정보를 확인합니다.

4. 마지막으로, 인스턴스 요약 정보 페이지에서 태그 탭을 클릭합니다. 플레이북(단계 하나)에서 인스턴스에 설정한 태그를 아래와 같이 볼 수 있습니다.

결론
이 튜토리얼에서는 Ansible AWS EC2 모듈을 활용하여 단일 명령으로 AWS EC2 인스턴스를 관리했습니다. 또한 AWS EC2 인스턴스를 다시 시작, 종료, 태그 추가 등으로 조정하는 방법을 배웠습니다.
이제 Ansible AWS EC2 모듈에 대한 탄탄한 지식을 갖게 되었으니, Ansible EC2 AWS 모듈을 인스턴스 관리 루틴의 일부로 만들고 싶으신가요? 아마도 크론 작업을 추가하여 작업을 자동화하고 싶을 것입니다.