본문 바로가기
DevOps/Terraform, Ansible

Ansible: 심플한 IT 자동화 도구 (앤서블 소개, 동작 과정, 특징, 설치 과정)

by 잉크드 2023. 7. 26.
반응형

앤서블(Ansible)은 Python으로 작성된 오픈소스 IT 자동화 도구입니다. 복잡한 작업을 간단하게 자동화하여 시스템 관리자의 일을 더욱 효과적이고 효율적으로 만들어 줍니다. 이번 글에서는 앤서블의 기본적인 구조, 동작하는 과정, 주요 특징을 알아보고 설치 과정까지 알아보겠습니다.

앤서블 소개

앤서블은 교차 플랫폼 컴퓨터 지원을 위해 간단하지만 강력한 자동화를 제공하는 소프트웨어 도구입니다. 주로 응용 프로그램 배포, 워크스테이션 및 서버 업데이트, 클라우드 프로비저닝, 구성 관리, 서비스 내 오케스트레이션 및 시스템 관리자가 매주 또는 매일 반복적으로 수행하는 거의 모든 작업을 대상으로 합니다. 앤서블은 에이전트 소프트웨어에 의존하지 않고 추가 보안 인프라가 없으므로 배포가 쉽습니다. 앤서블은 자동화에 관한 것이기 때문에 각 작업을 수행하려면 지침이 필요합니다. 모든 것이 간단한 스크립트 형식으로 작성되어 있어 버전 관리가 쉽습니다. 이러한 특징 덕분에 현대 IT의 "코드로서의 인프라" 움직임에 대한 크게 기여할 수 있습니다. 자체 문서화가 가능하고, 입증 및 실행 가능한 솔루션의 리포지토리는 직원 변경에 관계없이 조직을 운영할 수 있게 합니다. 앤서블은 자동화, 시스템 관리 및 DevOps에 관해서 주로 언급되지만, 일반 사용자에게도 유용합니다. 앤서블을 사용하면 한 대의 컴퓨터뿐만 아니라 전체 컴퓨터 네트워크를 한 번에 구성할 수 있으며 이를 사용하려면 프로그래밍 기술이 필요하지 않습니다. 앤서블용으로 작성된 지침은 사람이 읽을 수 있습니다. 컴퓨터를 처음 접하는 사람이든 전문가이든 관계없이 앤서블 파일은 이해하기 쉽습니다.

앤서블 동작 과정

인벤토리 설정

벤토리 파일에 호스트 그룹과 해당 호스트들의 정보를 정의합니다. 앤서블은 이 인벤토리를 사용하여 관리 대상 호스트들을 식별합니다.

플레이북 작성

앤서블은 작업들을 정의하는 플레이북으로 구성됩니다. 플레이북은 YAML 형식으로 작성되며, 어떤 작업을 어떤 호스트 그룹에 대해 수행할 것인지를 지정합니다.

모듈 사용

앤서블은 모듈을 사용하여 작업을 수행합니다. 모듈은 시스템 구성, 파일 복사, 패키지 설치 등 다양한 작업을 처리하는 기능을 제공합니다.

Play

앤서블은 플레이북을 실행하여 지정된 작업들을 관리 대상 호스트에 수행합니다. SSH를 통해 원격 시스템에 접속하고, 모듈을 사용하여 작업을 수행합니다.

변경 감지

앤서블은 상태 기반 관리 시스템이기 때문에, 대상 호스트의 현재 상태와 플레이북에 정의된 상태를 비교합니다. 변경이 필요한 항목들만 업데이트하고, 변경이 필요하지 않은 항목들은 건너뜁니다.

결과 리포팅

앤서블은 작업의 실행 결과를 리포트로 출력합니다. 이를 통해 어떤 작업이 성공적으로 수행되었고, 어떤 항목들이 변경되었는지 확인할 수 있습니다.

앤서블 특징

구분 Puppet Chef Salt Ansible
주요 목적 설정 관리 및 자동화 설정 관리 및 자동화 설정 관리 및 자동화 설정 관리 및 자동화
개발 언어 Ruby Ruby(Client)
Erlang(Server)
Python Python
에이전트 설치 필요 필요 선택 불필요
확장성
(높을수록 좋음)
Good Good Good Best
학습 요구치
(낮을수록 좋음)
Good Good Soso Best
정의 파일 독자 DSL
내장 Ruby
독자 DSL
(Ruby 기반)
YAML 독자 DSL
(Python 기반)
YAML

에이전트리스 (Agentless)

앤서블은 에이전트를 필요로하지 않는 도구입니다. 다른 구성 관리 도구들과는 달리 원격 노드에 에이전트를 설치할 필요가 없습니다. 대신 SSH를 통해 원격 노드와 통신하여 작업을 수행합니다. 이로 인해 구성 관리 대상 시스템에 추가 구성이 필요 없으며 구성이 간단해집니다.

멱등성 (Idempotent)

앤서블은 멱등성을 가진다는 특징이 있습니다. 멱등성은 동일한 작업을 여러 번 반복해도 결과가 동일하게 유지되는 특성을 의미합니다. 즉, 앤서블은 상태를 정의하고 그 상태에 도달하도록 시스템을 구성하는 방식으로 동작하며, 이미 원하는 상태에 있는 시스템에 대해서는 추가 작업을 수행하지 않습니다. 이는 자동화 작업을 더 안정적으로 만들어주고, 의도하지 않은 변화를 최소화하는 데 도움이 됩니다.

앤서블 설치 과정

사용하는 운영체제에 따라 설치 과정은 달라집니다. 자세한 내용은 공식 문서를 참조해보시기 바랍니다.

이 글에서는 'Amazon Linux 2'에 설치하는 과정에 대해서 다뤄보겠습니다.

아래 명령어를 실행하여 'Amazon Linux 2'에 앤서블을 설치합니다.

sudo amazon-linux-extras install ansible2 -y

명령 실행시 표시되는 화면 예시

설치 완료후 버전 확인을 통해서 검증합니다.

ansible --version

설치 검증 결과 예시

이 글에서는 Ansible 소개, 동작 과정, 특징, 설치 과정에 대해서 알아보았습니다. 다음 글에서는 앤서블을 이용하여 지난 글에서 테라폼을 이용해서 작성한 EC2 인스턴스를 구성하는 과정에 대해서 다뤄보겠습니다.

댓글