Ansible 이란?
- Ansible은 네트워크, 서버 등 시스템을 코드로 관리하기 위한 자동화 도구 중 하나로, 시스템 구성, 배포 등을 위한 오픈 소스 소프트웨어입니다.
- IaC(Infrastructure as a Code) 개념을 내포하는 자동화 도구로 인프라의 상태를 코드로 선언하고 이를 모든 서버에 배포함으로써 특정 환경을 동일하게 유지할 수 있도록 합니다.
- Ansible은 다른 IT 자동화 도구와 비교하여 사용하기 쉽고 배우기 쉬운 구성 관리 도구입니다.
- Ansible은 에이전트가 필요하지 않으며, SSH 접속만 가능하면 제어할 수 있다는 장점이 있습니다.
Ansible 구조
Ansible은 다음과 같은 구조로 이루어져 있습니다.
- Control Node: 엔서블을 실행하는 노드입니다. 사용자의 PC 또는 서버가 이 역할을 합니다.
- Managed Node : 앤서블로 관리되는 서버를 Managed Node라고 합니다. Managed Node는 호스트라고도 합니다. 매니지드 노드에는 앤서블이 설치 되지 않고 SSH만 설치되어 있으면 됩니다.
- Inventory : Ansible이 제어할 호스트 및 호스트 그룹 정보가 들어있는 파일입니다.
- Playbook : YAML 파일로 작성된 파일로, Ansible이 실행하는 작업 단위입니다. 시스템을 정의하거나 명령을 수행하는 일련의 작업을 나열하며 Task와 Module로 구성하여 수행됩니다.
- Task : playbook 내에서 수행할 작업을 나열하는 것이며 플레이북에서 가장 중요한 부분입니다. 태스크는 작성하는 것에 따라 단일 또는 다중으로 작성할 수 있습니다. 각 태스크는 실제 수행할 작업 단위로 특정 모듈을 사용하고, 해당 모듈에 전달할 매개 변수를 지정합니다.
- Modules : Ansible 모듈은 시스템에서 수행할 수 있는 단일 작업을 나타냅니다. 각 모듈은 특정 기능을 수행하도록 설계되었으며, 모듈을 사용하여 명령을 실행하거나 파일을 복사하는 등 다양한 작업을 수행할 수 있습니다. 터미널로 단일 모듈을 호출하거나 플레이북에서 여러 모듈을 호출 할 수도 있습니다.

- Ad-hoc command : playbook을 작성하지 않고 command-line에서 직접 엔서블 모듈을 호출해 사용하는 방식입니다. 특정 호스트 그룹에서 한 번에 하나의 명령을 실행하는 데 사용됩니다. playbook 과 달리 복잡한 명령보다는 간단한 테스트용 모듈을 구동할 때 많이 사용합니다. 예를 들어 ping module로 인벤토리의 저장된 호스트들을 체크할 수 있습니다
일반적으로 엔서블을 사용할 시 플레이북 + 인벤터리 조합의 ansible-playbook [inventory-file] [playbook-file] 명령어 형태로 사용하게 됩니다.
- inventory : host_list -
[Host]
Host-1 ansible_host=192.168.100.1
Host-2 ansible_host=192.168.100.2
Host-3 ansible_host=192.168.100.3
Host-4 ansible_host=192.168.100.4
==============================================================================
- playbook : add_user.yaml -
---
- name: user_add
hosts: all
gather_facts: no
collections:
- dellemc.os9
tasks:
- name: configuration user add
dellos9_config:
lines:
- username ansibleUser privilege 15 secret ansiblePW
save: yes
==============================================================================
- ansible command -
ansible-playbook -i /etc/ansible/inventory/host_list add_user.yaml
인벤터리 파일로 어디(where)에 작업을 할지를 정하고 플레이북 파일로 어떤 작업(what)을 수행할지 정의하여 정의된 작업을 각 호스트 별로 진행합니다.
[참고사이트]
'IaC > Ansible' 카테고리의 다른 글
| [Ansible] Ansible, AWS SES 연동으로 이메일 보내기 (0) | 2025.09.25 |
|---|---|
| [Ansible] F5 VIP, Pool Member 상태 출력하기 (1) | 2024.09.19 |
| [Ansible] Ansible에서 현재 날짜, 시간 값 얻기 (2) | 2024.09.03 |