Ansible 개념

Ansible 개념 (Ansible concepts)

이 개념들은 Ansible을 쓰는 모든 곳에 공통으로 적용돼요. Ansible을 사용하거나 문서를 읽기 전에 먼저 이해해 두면 좋아요. 여기서는 컨트롤 노드, 관리 노드, 인벤토리, 플레이북, 모듈, 플러그인, 컬렉션 같은 기본 용어들을 하나씩 정리할게요.

출처: 문서

본문

컨트롤 노드 (Control node)

Ansible CLI 도구(ansible-playbook, ansible, ansible-vault 등)를 실행하는 머신이에요. 소프트웨어 요구사항을 충족하는 컴퓨터라면 무엇이든 컨트롤 노드로 쓸 수 있어요 — 노트북, 공용 데스크톱, 서버 모두 Ansible을 실행할 수 있어요. 또한 Execution Environments라고 하는 컨테이너 안에서도 Ansible을 실행할 수 있어요.

컨트롤 노드는 여러 개일 수도 있지만, Ansible 자체가 그 사이를 조정(coordinate)하지는 않아요. 그러한 기능이 필요하면 AAP를 참고하세요.

관리 노드 (Managed nodes)

'호스트(hosts)'라고도 불리며, Ansible로 관리하려는 대상 장치(서버, 네트워크 장비, 또는 아무 컴퓨터)를 말해요. Ansible은 보통 관리 노드에 설치되지 않아요. ansible-pull을 사용하는 경우는 예외지만, 이는 드물고 권장되는 구성도 아니에요.

인벤토리 (Inventory)

하나 이상의 '인벤토리 소스(inventory sources)'가 제공하는 관리 노드 목록이에요. 인벤토리는 IP 주소처럼 각 노드에 특화된 정보를 지정할 수 있어요. 또한 그룹을 지정하는 데도 쓰이는데, 그룹은 Play에서 노드를 선택하고 대량으로 변수를 할당하는 데 활용돼요.

인벤토리에 대해 더 배우려면 Working with Inventory 섹션을 참고하세요. 인벤토리 소스 파일을 'hostfile'이라고 부르기도 해요.

플레이북 (Playbooks)

플레이(Play, Ansible 실행의 기본 단위)를 담고 있어요. 이는 '실행 개념'이면서 동시에 ansible-playbook이 다루는 파일을 설명하는 방식이에요. 플레이북은 YAML로 작성되며 읽고, 쓰고, 공유하고, 이해하기 쉬워요. 플레이북에 대해 더 배우려면 Ansible playbooks 문서를 보세요.

플레이 (Plays)

Ansible 실행의 주요 컨텍스트로, 관리 노드(hosts)를 작업(tasks)에 매핑하는 플레이북 객체예요. Play는 변수, 역할(roles), 그리고 정렬된 작업 목록을 포함하며 반복 실행할 수 있어요. 기본적으로 매핑된 호스트와 작업에 대한 암시적 루프로 구성되어, 그 위를 어떻게 순회할지 정의해요.

역할 (Roles)

Play 안에서 사용하기 위한 재사용 가능한 Ansible 콘텐츠(작업, 핸들러, 변수, 플러그인, 템플릿, 파일)의 제한된 배포 단위예요. 역할의 리소스를 사용하려면 그 역할 자체를 Play로 가져와야 해요.

작업 (Tasks)

관리 호스트에 적용할 '액션(action)'의 정의예요. ansible이나 ansible-console로 ad hoc 명령을 사용해 단일 작업을 한 번 실행할 수 있어요(둘 다 가상 Play를 만듭니다).

핸들러 (Handlers)

작업의 특별한 형태로, 이전 작업이 'changed' 상태로 알렸을 때만 실행돼요.

모듈 (Modules)

각 작업에서 정의한 액션을 수행하기 위해 Ansible이 각 관리 노드에 복사해 실행하는 코드 또는 바이너리예요. 각 모듈은 특정 유형의 데이터베이스에서 사용자 관리를 하거나, 특정 유형의 네트워크 장치에서 VLAN 인터페이스를 관리하는 것처럼 특정 용도가 있어요. 작업 하나로 단일 모듈을 호출하거나, 플레이북에서 여러 모듈을 호출할 수 있어요.

Ansible 모듈은 컬렉션(collection)으로 묶여 있어요. Ansible이 포함하는 컬렉션이 얼마나 많은지 보려면 Collection Index를 참고하세요.

플러그인 (Plugins)

Ansible의 핵심 기능을 확장하는 코드 조각이에요. 플러그인은 관리 노드에 어떻게 연결할지(연결 플러그인), 데이터를 어떻게 조작할지(필터 플러그인), 콘솔에 무엇을 표시할지(콜백 플러그인) 등을 제어할 수 있어요. 자세한 내용은 Working with plugins 문서를 보세요.

컬렉션 (Collections)

플레이북, 역할, 모듈, 플러그인을 담을 수 있는 Ansible 콘텐츠 배포 형식이에요. 컬렉션은 Ansible Galaxy를 통해 설치하고 사용할 수 있어요. 컬렉션에 대해 더 배우려면 Using Ansible collections 문서를 참고하세요. 컬렉션 리소스는 서로 독립적이고 개별적으로 사용할 수 있어요.

더 알아보기 (Learn more)