본문 바로가기
설치 및 기술 자료/Linux

[Linux] 앤서블 (Ansible) 시작하기

by 주식회사 서버몬 2023. 7. 18.

 

안녕하세요. 주식회사 서버몬 입니다.

이번 포스트는 앤서블(Ansible) 의 개념과 동작 방식에 대해서 다루도록 하겠습니다.

 

 

Ansible 이란?

 Ansible은 오픈 소스 IT 자동화 도구로 프로비저닝, 시스템 설정, 애플리케이션 배포, 오케스트레이션 작업 자동화 등 다양한 IT 작업을 자동화하는 데 사용됩니다.

Ansible 자동화를 사용해 소프트웨어를 설치하고, 일상적인 태스크를 자동화하고, 인프라를 프로비저닝하고,  컴플라이언스를 개선하고, 시스템에 패치를 적용하고, 조직 전체에 자동화를 공유할 수 있습니다.

 

 

Ansible 도입배경

  • 인프라스트럭처 자동화 요구 : IT 인프라스트럭처는 계속해서 커지고 복잡해지며, 수많은 서버, 네트워크 장치, 클라우드 리소스 등을 관리해야 합니다. 이에 따라 인프라스트럭처 자동화의 필요성이 대두되었습니다. Ansible은 이러한 요구에 부합하는 간단하고 강력한 자동화 도구로서 도입되었습니다.
  • 작업 일관성과 안정성 : 많은 IT 조직에서는 작업 일관성과 안정성을 달성하기 위해 수동으로 수행되던 반복적인 작업을 자동화하려는 요구가 있었습니다. Ansible은 선언적인 언어와 상태 기반 접근 방식을 통해 일관성을 유지하고 안정성을 향상시킬 수 있는 솔루션으로써 도입되었습니다.
  • 복잡한 배포 및 구성 관리 요구 : 애플리케이션 및 서비스의 배포, 구성 및 관리는 복잡한 작업이며, 일일히 수동으로 수행하는 것은 비효율적입니다. Ansible은 간단하고 유연한 플레이북을 통해 배포 및 구성 관리 작업을 자동화할 수 있는 도구로 도입되었습니다.
  • 확장성과 유연성 : 조직은 다양한 환경과 플랫폼을 운영하고 있으며, 이를 효과적으로 관리하기 위해 유연하고 확장 가능한 자동화 도구가 필요합니다. Ansible은 다양한 통합 모듈과 확장성이 뛰어난 아키텍처를 제공하여 다양한 시스템과 서비스를 자동화할 수 있는 환경을 제공합니다.
  • 비용 절감: 수동으로 작업을 수행하면 인력과 시간이 많이 소요됩니다. Ansible을 도입하여 반복적인 작업을 자동화하고 일관성을 유지함으로써 작업 효율성을 향상시키고 비용을 절감할 수 있습니다.

 

Ansible 특징

  • 멱등성 : 멱등성은 작업을 여러 번 반복해도 동일한 결과를 보장하는 속성을 의미합니다. 상태 기반 접근성 Ansible은 상태 기반 접근 방식을 채택하여 작업을 수행합니다. 이는 Ansible이 시스템의 현재 상태와 정의된 상태 간의 차이를 계산하고 필요한 작업을 적용하여 원하는 상태로 수렴하도록 합니다. 따라서 이미 원하는 상태에 있는 시스템에 대해 Ansible을 실행하더라도 추가 작업이 필요하지 않습니다.
  • Agentless 아키텍처 :  Ansible은 에이전트 없이 동작하는 에이전트리스 아키텍처를 가지고 있습니다. 따라서 대상 시스템에 에이전트 소프트웨어를 설치할 필요가 없으며, SSH 또는 WinRM과 같은 표준 프로토콜을 사용하여 관리 대상 시스템에 접근합니다. 이는 배포 및 관리 프로세스를 단순화하고 구성 관리를 용이하게 합니다.
  • 간결하고 선언적인 언어 : Ansible Playbook은 YAML 형식으로 작성되며, 간결하고 읽기 쉬운 선언적인 언어를 사용합니다. Playbook은 시스템 구성 및 배포를 위한 작업 단위를 정의하는 여러 장면으로 구성되어 있으며, 호스트 그룹, 변수, 태스크 등의 요소를 포함합니다.
  • 인프라스트럭처 상태 관리 : Ansible은 상태 기반 접근 방식을 채택하여 정의된 상태를 유지하기 위해 필요한 작업을 수행합니다. 이를 통해 반복적인 작업을 최소화하고 인프라스트럭처의 상태를 일관되게 유지할 수 있습니다.
  • 다양한 통합 모듈 : Ansible은 다양한 통합 모듈을 제공하여 네트워크 장치, 클라우드 서비스, 컨테이너, 데이터베이스 등 다양한 시스템 및 서비스를 자동화할 수 있습니다. 이를 통해 다양한 환경에서 일관된 방식으로 작업을 자동화할 수 있습니다.
  • 확장성과 커뮤니티 : Ansible은 확장성이 우수하며, 기존 모듈을 사용하여 사용자 정의 모듈을 작성할 수 있습니다. 또한 Ansible은 활발한 커뮤니티를 가지고 있어 다양한 플레이북, 모듈, 로열티 등을 공유하고 지원받을 수 있습니다

 

Ansible 요소

Ansible은 다음과 같이 세 가지 핵심 요소로 구성됩니다

Inventory (인벤토리)
 인벤토리는 Ansible이 관리 대상이 되는 호스트(서버, 네트워크 장치 등)의 목록을 정의하는 파일입니다. 인벤토리 파일은 일반적으로 INI 또는 YAML 형식으로 작성되며, 호스트 그룹, 호스트명, IP 주소 또는 도메인 등의 정보를 포함합니다. 인벤토리를 사용하여 Ansible은 작업을 수행할 대상 시스템을 식별하고 구성합니다.
아래는 Ansible 인벤토리 파일의 간단한 예입니다

[web]
webserver1 ansible_host=192.168.1.10
webserver2 ansible_host=192.168.1.11

[database]
dbserver1 ansible_host=192.168.1.20

위의 예시에서 web 그룹에는 webserver1과 webserver2 호스트가 속하고, database 그룹에는 dbserver1 호스트가 속합니다.

 

Playbook (플레이북)
플레이북은 Ansible에서 작업을 정의하고 실행하는 데 사용되는 파일입니다. 플레이북은 YAML 형식으로 작성되며, 하나 이상의 장면(Scene)으로 구성됩니다. 장면은 호스트 그룹, 변수, 태스크(Task) 등의 요소로 구성됩니다.
플레이북은 작업 단위를 정의하고 각 작업을 수행할 대상 호스트 그룹을 지정합니다. 또한 플레이북은 필요에 따라 변수를 정의하여 작업의 유연성을 높이고 재사용성을 향상시킵니다.

아래는 간단한 Ansible 플레이북의 예입니다

- name: Configure web servers
  hosts: web
  tasks:
    - name: Install Apache
      yum:
        name: httpd
        state: present
      become: true

    - name: Start Apache service
      service:
        name: httpd
        state: started
      become: true

위의 예시에서 플레이북은 web 그룹에 속한 호스트들에게 Apache를 설치하고 서비스를 시작하도록 지시합니다.

 

Module (모듈)
Ansible 모듈은 Ansible이 작업을 수행하기 위해 사용하는 코드 블록입니다. 모듈은 특정 작업을 수행하기 위한 함수 또는 명령어를 나타내며, 호스트에게 명령을 전달하고 결과를 가져올 수 있습니다. Ansible은 수백 개의 내장 모듈을 제공하며, 파일 관리, 패키지 설치, 서비스 제어, 네트워크 구성 등 다양한 작업에 대해 모듈을 사용할 수 있습니다.
예를 들어, yum 모듈은 패키지 관리자를 사용하여 리눅스 시스템에 패키지를 설치하거나 제거할 수 있습니다. service 모듈은 시스템 서비스를 관리하는 데 사용될 수 있습니다. 모듈은 Ansible 플레이북에서 tasks 섹션 내에서 사용됩니다.

 

 

Ansible 구성 개념

 

제어 노드 (ManageMent Node) 

Ansible은 작업을 지시하는 호스트를 관리 노드라고 합니다.

이 노드에는 Ansible이 설치되어 있어야 합니다. 제어 노드 대상 노드에 작업을 배포하고 실행합니다.

 

대상 노드 (Target Node)

Ansible은 작업 대상의 호스트를 대상 노드라 합니다.

이 노드에는 Python 인터프린터가 설치 되어야 합니다.

 

플레이 실행 (Play Execution)

제어 노드에서 작성한 플레이북을 실행합니다.

Ansible은 인벤토리 파일에서 정의한 대상 노드 그룹에 포함된 호스트들에게 플레이북을 적용합니다.

대상 노드 접근 (Target Node Access)

Ansible은 SSH 프로토콜을 사용하여 제어 호스트와 대상 노드 사이에 연결을 설정합니다. 이를 통해 Ansible은 대상 노드에 로그인하여 작업을 수행할 수 있습니다. 

결과 리포팅 (Result Reporting)

Ansible은 작업 실행 결과를 제어 호스트에 리포팅합니다. 이를 통해 사용자는 작업의 성공, 실패 또는 변경 사항을 확인할 수 있습니다. Ansible은 이러한 결과를 사용자에게 제공하고 로깅하여 추적 가능성과 디버깅을 지원합니다.

 

Ansbile 구성도

 

 

이상으로 Ansbile 의 개념과 동작 방식에 대해 알아 봤습니다.

 

참고 출처

https://dev.to/rahulku48837211/ansible-architecture-and-setup-2355

https://www.redhat.com/ko/technologies/management/ansible/what-is-ansible

1u서버 / APC / DB / defog / DEFOG랙 / dell5820 / dell5820t / dell7920 / dellpoweredge / dellr240 / dellr340 / dellr350 / dellr450 / dellr540 / dellr630 / dellr640 / dellr740 / dellr750 / dellserver / dellt40 / dellt440 / dellt5820 / dell서버 / DELL서버CPU / DELL서버RAID컨트롤러 / DELL서버SAS하드디스크 / DELL서버가격비교 / DELL서버가격비교견적 / DELL서버견적 / DELL서버구매 / DELL서버디스크교체 / DELL서버메모리 / DELL서버펌웨어 / DELL서버하드디스크구매 / dell워크스테이션 / dl20 / dl20gen10 / dl360 / dl360gen10 / dl380 / dl380g10 / dl380gen10 / ECC메모리 / EDFOG랙가격 / ESTSOFT / FIRMWARE / gpu서버 / gpu타워형서버 / HA솔루션 / hpdl20 / hpdl360 / hpdl360gen10 / hpdl380 / hpdl380g10 / HPE / HPE Service Pack for Proliant / HPE SPP / hpedl20 / hpedl20gen10 / hpedl360gen10 / hpe서버 / HPE서버CPU / HPE서버RAID컨트롤러 / HPE서버SAS하드디스크 / HPE서버가격비교 / HPE서버가격비교견적 / HPE서버견적 / HPE서버구매 / HPE서버드라이버설치 / HPE서버디스크교체 / HPE서버메모리 / HPE서버비용 / HPE서버펌웨어 / HPE서버하드디스크구매 / hpgen10 / hpml30 / hpserver / hpz2 / hpz4 / hpz420 / hpz440 / hpz4g4 / hpz640 / hpz6g4 / hpz8g4 / hp마이크로서버 / hp서버 / hp서버800 / hp서버800w / hp서버cto / hp서버pc / HP서버메모리 / hp서버컴퓨터 / HP서버펌웨어 / HP서버하드디스크 / hp워크스테이션 / hp프로라이언트 / HYPER BACKUP / ibm서버 / Intelligent Provisioning / KVM / KVM 기술지원비(비용) / KVM 설치비 / L2스위치 / L3스위치 / LENONO서버SAS하드디스크 / lenovop620 / lenovor650 / LENOVO서버 / LENOVO서버CPU / LENOVO서버RAID컨트롤러 / LENOVO서버가격비교 / LENOVO서버가격비교견적 / LENOVO서버견적 / LENOVO서버구매 / LENOVO서버디스크교체 / LENOVO서버메모리 / LENOVO서버하드디스크구매 / LENOVO펌웨어업데이트 / Linux / ML30 / ml30gen10 / ML350GEN10 / ML360 / MSSQL / MSSQL 기술지원비(비용) / MSSQL 설치비 / MYSQL / MySQL 기술지원비(비용) / MySQL 설치비 / OS설치 / p17079-b21 / poweredger740 / poweredger750 / precision5820 / QUADRO / QUADRO그래픽카드 / r240 / r340 / r440 / r740 / RHEL설치 / RMS랙 / server / serverpc / SOPHOS / SPP / sr250 / sr650 / SYNOLOGY / SYNOLOGY나스 / UPS / UPS기술지원 / UPS납품 / UPS설치 / V3 / Windows서버설치 / z420 / z620 / z840 / z8g4 / 기술지원비(비용) / 나스기술지원 / 나스설치지원 / 네트워크스위치 / 네트워크장비 / 더블테이크 / 데이터베이스 / 델5820 / 델서버 / 델서버비용 / 델서버펌웨어업데이트 / 델워크스테이션 / 델컴퓨터워크스테이션 / 디포그 / 디포그랙 / 디포그랙가격 / 딥러닝pc / 딥러닝서버 / 랙 / 랙(RACK) 기술지원비(비용) / 랙(RACK) 설치비 / 랙납품설치 / 랙설치 / 레노버p620 / 레노버서버 / 레노버워크스테이션 / 레노보서버 / 레노보서버펌웨어 / 레드헷설치 / 리눅스 기술지원비(비용) / 리눅스 설치비 / 리눅스서버 / 리눅스서버설치 / 리눅스서버트러블슈팅 / 리눅스트러블슈팅 / 리욱스 / 미니서버 / 미니서버랙 / 방화벽 / 방화벽 기술지원비(비용) / 방화벽 설치비 / 방화벽엔지니어 / 백업 / 보안솔루션 / 보안솔루션구매 / 보안솔루션설치 / 서버 / 서버 기술지원비(비용) / 서버 랙마운트비용 / 서버 설치비 / 서버 장애조치비용 / 서버CPU / 서버MEMORY / 서버OS설치 / 서버pc / 서버가격 / 서버구매 / 서버기술지원 / 서버납품 / 서버디스크장애처리 / 서버랙 / 서버렉마운트 / 서버메모리 / 서버몬 / 서버몬기술지원 / 서버백업 / 서버보안 / 서버엔지니어 / 서버용pc / 서버용그래픽카드 / 서버용메모리 / 서버용컴퓨터 / 서버용하드디스크 / 서버컴 / 서버컴퓨터 / 서버트러블슈팅 / 서버호스팅 / 소포스 / 스위치 / 스위치 기술지원비(비용) / 스위치 설치비 / 스토리지 / 스토리지 기술지원비(비용) / 스토리지 랙마운트비용 / 스토리지 설치비 / 스토리지 장애조치비용 / 스토리지납품설치 / 스토리지서버 / 시놀로지DS918 / 시놀로지HyperBackup / 시놀로지나스 / 시놀로지나스백업 / 시놀로지하이퍼백업 / 시큐어디스크 / 안랩 / 알약 / 왼도우서버설치 / 우분투설치 / 워크스테이션 / 워크스테이션pc / 워크스테이션컴퓨터 / 윈도우서버 / 윈도우서버2016 / 윈도우서버2019 / 윈도우서버트러블슈팅 / 윈도우즈 기술지원비(비용) / 윈도우즈 설치비 / 이스트소프트 / 이중화솔루션 / 이중화솔루션구매 / 이중화솔루션설치 / 인터넷디스크 / 작업장컴퓨터 / 제온서버 / 젠서버 / 중고서버 / 중고워크스테이션 / 카보나이트 / 카스퍼스키 / 컴퓨터서버 / 쿼드로P400 / 타워형서버 / 페도라설치 / 프로라이언트 / GPU서버 / 미니서버렉 / 서버용PC / 젠서버 / AI서버 / 제온서버 / 서버가격 / 1U서버 / HPDL20Gen10 / HP서버8SFF800W / 가상서버 / 타워형서버 / HPDL360 / HPDL380Gen10 / 컴퓨터서버 / 미디어서버 / 타워서버 / DB서버 / HP서버580 / HP서버파워 / HPDL360Gen10 / 윈도우서버컴퓨터 / XEON서버 / 881457-B21

댓글