귀염둥이의 메모

[Ansible] Ansible이란? 본문

Infra & Devops/Ansible

[Ansible] Ansible이란?

겸둥이xz 2021. 9. 6. 17:38
반응형

개념

  • IaC (Infrastructure as Code)를 지향하는 오픈소스 기반 자동화 도구
  • 시스템 구성 및 소프트웨어  배포 기능을 제공
  • 지속적인 배포와 다운 타임 없는 롤링 업데이트 지원
  • 주요 목적은 단순성과 사용의 용의성, 보안과 신뢰성 중점
  • 사람이 이해하기 편하도록 YAML 언어를 사용
  • 다양한 유형의 사용자(개발자, 시스템 관리자, IT 관리자 등)를 위한 디자인
  • 소규모 환경부터 엔터프라이즈 환경까지 지원
  • 분산 구조로 설계
  • Kerberos / LDAP 등 인증 관리 시스템에 연결이 쉬움

 

장점

  • ssh를 통한 구성으로 Agentless ➡️ 구성 관리가 편리하다
  • YAML 언어 사용으로 접근성이 높고, 쉽고 단순한 구조로 가독성이 높다
  • 변수 기능 사용으로 재사용성 증가
  • 다른 도구보다 훨씬 간소화, 다양한 플랫폼 지원
  • 멱등성(indempotence)
    • 동일한 기능을 수행했을 때 이전의 수행한 결과값이 있으면 변경하지 않고, 작업도 실행되지 않는다
    • YAML로 작성된 Playbook을 여러 차례 반복을 해도 결과를 동일하게 출력시킴
    • 결과가 달라지지 않도록 구성되어, 멱등성을 일관되게 수행할 수 있음

 

단점

  • DSL을 통한 로직 수행 - 수시로 문서 확인이 필요
  • 변수 등록으로 인한 복잡성
  • 변수 값 확인의 어려움
  • 입력/출력/구성 파일 간의 형식 일관성이 없다
  • 때때로 성능 속도가 저하된다

 

Ansible 아키텍처

  • 제어 노드 (Control node)
    • 원격으로 관리 노드를 제어한다
    • /usr/bin/ansbile 이나 /usr/bin/ansible-playbook 명령을 이용하여 관리한다
    • Linux / Unix 시스템만 가능 (windows 시스템은 지원❌)
    • Python 2.6 이상 
    • RHEL8 에서는 platform-python으로 대체

 

  • 관리 대상노드 = 매니지드 노드 (Managed node)
    • Linux / Unix
      • Python 2.6 이상
      • SSH 및 SFTP 필요 (SCP로 대체 가능)
    • Windows
      • PowerShell 3.0 이상 원격 작업 구성 필요
      • .Net Framework 4.0 이상
    • Network 장비
      • Cisco IOS, IOS XR, NX-OS; Juniper Junos; Arista EOS 및 VyOS 기반 네트워킹 장치 지원
      • SSH를 통한 CLI or XML or HTTP를 통한 API를 사용 

 

  • 인벤토리 (Inventory)
    • 관리 대상노드 목록 = 인벤토리
    • 인벤토리 파일 = 호스트 파일
    • 각 대상 노드에 대한 IP 주소, 호스트 정보, 변수와 같은 정보를 지정 가능

 

  • 모듈 (Module)
    • Ansible이 실행하는 코드 단위
    • 데이터베이스 처리, 사용자 관리 등 다양한 용도로 사용
    • 단일 모듈 호출 또는 플레이북에서 여러 모듈 호출 가능

 

  • 태스크 (Task)
    • Ansible의 작업 단위
    • ad-hoc 명령을 사용하여 단일 작업을 한번에 실행

 

  • 플레이북 (Playbook)
    • 순서가 지정된 태스크 목록이 지정되어, 지정된 작업을 해당 순서로 반복적으로 실행 가능
    • 변수와 작업이 포함될 수 있음
    • YAML로 작성됨

참고자료

https://wikidocs.net/book/6350

https://youngmind.tistory.com/entry/Ansible-기본-개념-및-설치

반응형
Comments