Ansible 시작하기: 제로부터 AWS에 Apache 설치까지
Source: Dev.to
Configuration Management란?
Configuration Management는 컴퓨터 시스템과 소프트웨어를 원하는 일관된 상태로 유지하는 실천입니다. 수십 대의 서버를 하나씩 수동으로 업데이트하는 대신, 설정을 한 번 작성하고 모든 서버에 적용합니다.
Agent vs. Agentless
Agent‑based (Chef/Puppet)
대상 서버마다 에이전트를 설치해야 관리할 수 있습니다.
Agentless (Ansible)
Ansible은 SSH를 통해 연결합니다. 서버에 SSH 접속이 가능하면 별도의 소프트웨어 없이도 Ansible로 관리할 수 있습니다.
인벤토리 파일 (inventory.ini)
Ansible은 명령을 실행할 위치를 알아야 합니다. 이는 inventory.ini 파일에 정의되며, 여기서 서버를 그룹화하여 타깃 작업을 지정할 수 있습니다.
# inventory.ini
[dbservers]
# example host entry
ubuntu@172.23.24.3
비밀번호 없는 인증 (자동화의 핵심)
Ansible은 SSH를 사용하므로 매 명령마다 비밀번호를 입력하는 것은 비현실적입니다. SSH 키를 이용해 비밀번호 없는 인증을 설정합니다:
- 제어 노드(예: VirtualBox Ubuntu 머신)에서 키를 생성합니다.
ssh-copy-id -i key.pem user@ip_address명령으로 공개 키를 AWS EC2 인스턴스에 복사합니다.
이후 Ansible은 수동 비밀번호 입력 없이 AWS 서버와 통신할 수 있습니다.
Ansible Ad‑Hoc 명령
Ad‑hoc 명령은 전체 플레이북을 작성하기 전에 빠르게 한 줄로 실행할 수 있는 작업입니다.
-
모든 서버에 ping 보내기:
ansible all -m ping -
webservers그룹의 디스크 사용량 확인:ansible webservers -a "df -h"
프로젝트: EC2에 Apache 설치
실습을 위해 로컬 Ubuntu 머신(VirtualBox에서 실행)을 AWS EC2 인스턴스에 연결하고, ad‑hoc 명령을 사용해:
- 패키지 인덱스를 업데이트합니다.
- 원격으로 Apache 웹 서버를 설치합니다.
EC2 인스턴스의 퍼블릭 IP에서 기본 Apache 페이지가 로드되는 것을 확인하면 성공입니다.
다음 단계는?
플레이북을 간단히 살펴보았습니다. 플레이북은 다수의 인스턴스를 구성하고 복잡한 워크플로를 처리하는 데 필수적입니다. 다음 목표는 Ansible으로 전체 플레이북을 작성하고 실행하는 것입니다.