Ansible 개요
1. Ansible 이란?
Ansible은 애플리케이션 및 IT 인프라를 자동화할 수 있는 도구입니다. Ansible을 사용하여 호스트 구성, 지속적인 소프트웨어 배포, 다운타임 없는 롤링 업데이트 등과 같은 고급 IT 작업을 조율할 수 있습니다.
Ansible의 주요 목적은 간결성과 사용의 용이성입니다. 또한 보안과 신뢰성을 바탕으로 한 OpenSSH를 기본 전송 방법으로 사용합니다. 그리고 프로그래밍 언어에 익숙하지 않은 사람도 쉽게 사용할 수 있습니다.
Ansible은 개발자, 시스템 관리자, 엔지니어, IT 관리자 등 모든 유형의 사용자와, 소규모의 인스턴스부터 수천 개의 인스턴스가 있는 개발 및 엔터프라이즈 환경까지 모든 규모를 아우르는 환경을 위해 설계되었습니다.
Ansible은 에이전트 없이 호스트를 관리합니다. 또한 관리 대상의 호스트에 데몬이 없기 때문에, 데몬에 문제가 발생하여 호스트를 관리할 수 없는 문제가 발생하지 않습니다. OpenSSH는 보안 및 신뢰성을 바탕으로 가장 많이 사용하는 오픈소스 요소 중 하나로 보안 노출에 대한 위협이 크게 줄어듭니다. 또한 Ansible은 기존 OS 자격 증명을 사용하여 원격 호스트에 대한 접근을 제어하며, 필요한 경우 Kerberos, LDAP 및 중앙 집중식 인증 관리 시스템에 쉽게 연결할 수 있습니다.
Ansible은 1년에 두 번 정도 새로운 릴리즈를 배포합니다. 핵심 애플리케이션은 언어 디자인 및 설정의 간결성을 중요시하면서 다소 보수적으로 발전합니다.
2. 용어
1) 제어 노드(Control Node)
제어 노드(Control Node)는 Ansible이 설치된 모든 호스트입니다. 제어 노드에서는 ansible 또는 ansible-playbook 명령을 이용하여 작업을 실행할 수 있습니다. Python이 설치된 모든 호스트를 제어 노드로 사용할 수 있으며, 노트북, 데스크탑 및 서버 모두 Ansible을 실행할 수 있습니다. 그러나 Windows 호스트는 제어 노드로 사용할 수 없습니다.
2) 관리 노드(Managed Node)
관리 노드(Managed Node)는 Ansible로 관리하는 호스트 및 네트워크 장치입니다. 관리 노드에는 Ansible이 설치되지 않습니다.
3) 인벤토리(Inventory)
인벤토리(Inventory)는 관리 노드의 목록으로, 관리 노드에 대한 호스트 이름이나 IP주소와 같은 정보를 지정합니다. 여러 관리 노드를 그룹으로 조직화할 수 있고, 중첩 그룹을 사용할 수 있습니다.
4) 플러그인(Plugin)
Ansible의 핵심 기능을 확장할 수 있도록 아래와 같은 다양한 플러그인(Plugin)이 제공됩니다.
Action | Become | Cache | Callback | Cliconf | Connection | Httpapi |
Inventory | Netconf | Lookup | Shell | Strategy | Vars |
5) 모듈(Module)
모듈(Module)은 Ansible을 실행하는 Python 코드 단위입니다. 각 모듈은 호스트에 패키지를 설치하거나 관리하고, 데이터베이스의 사용자를 관리하고, 네트워크 장치의 VLAN 인터페이스를 관리하는 등 약 3000개의 모듈이 있습니다. 기본적으로 하나의 모듈은 하나의 작업을 실행할 수 있으나, 플레이북(Playbook)을 이용하면 여러 모듈을 선언하여 여러 작업을 수행할 수 있습니다.
6) 작업(Task)
작업(Task)은 Ansible의 작업 실행 단위입니다. 하나의 모듈이 하나의 작업이 되며, Ad-hoc 명령을 통해 단일 작업을 실행하거나, 플레이북(Playbook)을 작성해 여러 작업을 실행할 수 있습니다.
7) Ad-hoc 명령
ansible 명령을 이용하여 단일 작업을 실행할 수 있습니다.
8) 플레이(Play)
플레이(Play)는 특정 관리 노드를 대상으로 한 순서가 지정된 작업 목록입니다.
9) 플레이북(Playbook)
플레이북(Playbook)은 하나 이상의 플레이를 가지고 있는 YAML 파일입니다. ansible-playbook 명령을 이용해 플레이북을 실행할 수 있습니다.
3. 아키텍처
'IaC > Ansible 이론' 카테고리의 다른 글
Ansible 모듈 및 플러그인 | 모듈 종류, 플러그인 종류, 확인 (0) | 2021.07.28 |
---|---|
Ansible 관리 노드 연결 | 인증, SSH, 권한 상승, 연결 플러그인 (0) | 2021.07.28 |
Ansible 구성 파일 | 우선 순위, 설정 확인, ansible-config (0) | 2021.07.28 |
Ansible 인벤토리(Inventory) | 정적 인벤토리, 동적 인벤토리, INI, YAML, 패턴 (0) | 2021.07.28 |
Ansible 설치 | 설치 전 요구사항, 명령 쉘 자동 완성, Ansible Lint 설치 (0) | 2021.07.28 |