본문 바로가기
지식

앤서블(Ansible) 개념 정리

by mingutistory 2022. 8. 19.
728x90

앤서블 (Ansible)

IT 자동화 도구로 시스템을 구성하고, 소프트웨어를 배포하고, 지속적인 배포 또는 제로 다운 타임 롤링 업데이트와 같은 고급 IT 작업을 조율 할 수 있는 도구입니다.

앤서블의 주요 목표는 단순성과 사용 편의성이다. 최소한의 변경만 이용하고, 데이터 전송을 위해서 OpenSSH를 이용하고 사람이 이해하기 편하도록 yaml 언어를 이용하여 작업한다.

자동 구축/관리하려는 원격 인프라에 명령을 전달하는 방식으로 동작한다.

 

레드햇 앤서블이 타 IaC 툴에 비해 강점을 보이는 부분은 바로 온프레미스와 클라우드 환경 모두를 아우를 수 있다는 점이다. 메타넷티플랫폼 김정한 이사는 “이미 ‘레드햇 앤서블’은 온프레미스에 대한 검증을 마쳤으며, HW 인프라 및 OS, 미들웨어 등 하단 인프라 종류에 관계없이 다양한 계층에서 여러 방식으로 운영 자동화를 구축할 수 있다”고 말했다. 그는 이어 “인프라 종류에 영향을 받지 않기 때문에 OS를 보유하고 있는 컨테이너를 IaC로 배포한다면 멀티‧하이브리드 클라우드 환경을 쉽게 구축할 수 있다. 또 이를 지원하기 위한 쿠버네티스 솔루션인 ‘오픈시프트’도 함께 제공하고 있다”고 설명했다.

- 아이티 데일리

 

장점

SSH를 이용하기 때문에 에이전트 설치가 필요 없다 (Agentless)

오픈소스이다.

여러번 수행해도 같은 결과를 뱉는 성질, yaml로 관리되는 명령어를 여러번 수행하더라도 언제나 같은 결과가 나올 수 있도록 여러가지 관리를 하는 멱등성을 가진다. 그러므로 환경의 일관성이 보장 된다.

 

IaC (Infrastructure as Code)

코드형 인프라, 프로그래밍형 인프라로 개별 하드웨어를 수동으로 구성하고 업데이트할 필요가 없어진다.

인프라 운영 관리 효율성을 높이고 개발과 운영 프로세스를 자동화 시켜준다. 기존 인프라 구축을 위해서는 관리자들이 다양한 IT 인프라들에 직접 접속하여 필요한 프로그램을 설치하고 세팅 하였다.

 


기본 개념

제어 노드

앤서블 실행 노드로 /usr/bin/ansible 이나 /usr/bin/ansible-playbook 명령을 이용하여 제어 노드에서 관리 노드들을 관리한다. 앤서블이 설치 되어 있으면 노트북이나, 서버급 컴퓨터를 제어 노드로 이용할 수 있다

 

매니지드 노드

앤서블로 관리하는 서버를 매니지드 노드라고 한다. 매니지드 노드는 호스트라고도 한다. 매니지드 노드에는 앤서블이 설치 되지 않는다.

 

인벤토리

매니지드 노드 목록을 인벤토리라고 하며 인벤토리는 각 매니지드 노드에 대한 IP 주소, 호스트 정보, 변수와 같은 정보를 지정 할 수 있다. 인벤토리 파일은 호스트 파일이라고도 한다.

 

모듈

앤서블이 실행하는 코드 단위로 각 모듈은 데이터베이스 처리, 사용자 관리, 네트워크 장치 관리 등 다양한 용도로 사용된다. 단일 모듈을 호출하거나 플레이북에서 여러 모듈을 호출 할 수도 있다.

 

테스크

앤서블의 작업 단위로 애드훅(ad-hoc) 명령을 사용하여 단일 작업을 한 번 실행 할 수 있다.

 

플레이북

순서가 지정된 테스크 목록이 저장되어 지정된 작업을 해당 순서로 반복적으로 실행 할 수 있다. 미리 정의된 작업을 수행하는 것으로 플레이 북에는 변수와 작업이 포함 될 수 있다. 플레이 북은 YAML로 작성된다.

플레이북은 호스트(매니지드 노드)와 태스크를 연결하고 호스트는 인벤토리에서 가져오고, 플레이북에서 태스크를 지정하여 작업을 진행할 수 있다.

 

구성

Role

테스크(Task)를 묶어서 롤(Role)로 만들어 놓고 반복 사용하는 형태로 구성할 수 있다.

 

When
특정 상황에서만 작업을 처리할 수 있게 하기 위해서 작업을 처리할 수 있게 하는 조건문을 이용할 수 있다.

 

Tag
플레이북은 태그를 이용하여 필요한 작업만 처리하거나, 제외할 수 있다. 태그는 태스크, 플레이북, 롤 등 어디에나 추가 할 수 있다.

 

앤서블 플레이북 실습 영상

https://youtu.be/yT8QFKqcSBg

 

Ansible playbook을 통해서 Docker mysql 실행해보기
기계 2개 구성
1. 192.168.145.146 [testservers] - docker - 매니지드 노드
2. 127.0.0.1 - 제어 노드

제어 노드에서 단일 명령어를 사용해서 다른 매니지드 노드(호스트)들에 명령을 내릴 수 있음.

 

참고

https://wikidocs.net/130109
https://docs.ansible.com/ansible/2.9/user_guide/index.html
https://cumulus.tistory.com/42
https://5equal0.tistory.com/entry/Ansible-%EC%95%A4%EC%84%9C%EB%B8%94Ansible-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%84%A4%EC%B9%98%EC%82%AC%EC%9A%A9%EB%B2%95-w-CentOS-76

300x250

댓글