Cloud/IaC

IaC) Ansible

Adım Kim 2022. 9. 20. 15:40

Ansible 이란?

  • RedHat에서 개발하고, Python으로 작성함
  • 오픈소스 방식으로 서버의 프로비저닝, SW 배포등의 자동화를 관리해주는 도구


Ansible의 특징

  • Agentless
    • 타 자동화 도구(Puppet, Chef)들은 타겟 대상들에 agent 설치기반 pull 방식으로 동작
    • Ansible은 타겟 대상들에게 Agentless 기반의 push방식으로 동작하므로 기술적, 지리적 제한이 보다 넓은 장점
  • Idempotency
    • 어떤 연산이 여러번 수행되더라도 결과가 달라지지 않는 성질
    • Ansible은 동일한 모듈을 반복 실행해도 결과가 동일한 멱등성을 일관되게 수행할 수 있다
  • Reusability
    • 기준 시스템 구성 정보를 재사용하여 손쉽게 인프라 구성관리 수행


Ansible 구성요소

  • 제어 노드 [ Control node ]
    • Ansible을 실행하는 node
    • Ansible 제공 프로그램을 이용하여 매니지드 노드 관리
    • Ansible이 설치된 computer가 제어 노드가 된다.
  • 매니지드 노드 [ Managed node ]
    • Ansible로 관리하는 서버를 매니지드 노드 또는 host, target이라 한다.
    • 매니지드 노드에는 Ansible이 설치되지 않는다.
  • 인벤토리 [ Inventory ]
    • 매니지드 노드 목록
    • 인벤토리 파일은 호스트 파일이라고도 한다.
    • 인벤토리 파일은 각 매니지드 노드에 대한 IP address, 호스트정보, 변수와 같은 정보를 저장
  • 모듈 [ Module ]
    • Ansible이 실행되는 코드 단위
    • 미리 만들어진 동작관련 코드집합
    • 각 모듈은 데이터베이스 처리, 사용자관리, 네트워크장치관리 등 다양한 용도로 사용
    • 단위 모듈을 호출하거나 playbook에서 여러 모듈을 호출할 수 있다.
  • 테스크 [ Task ]
    • Ansible 작업단위
    • Ad -hoc 명령을 사용하여 단일 작업을 한번 실행할 수 있다.
  • 플레이북 [ Playbook ]
    •  YAML로 작성
    • 순서가 지정된 테스크 목록
    • 지정된 작업을 해당 순서로 반복적으로 실행할 수 있다.
    • 플레이북에는 변수와 작업이 포함될 수 있다.


Ansible 동작 과정

  • Ansible은 인벤토리 파일 내용을 참조하여 관리에 대한 매니지드 노드를 파악한다.
  • Ansible을 통한 매니지드 노드 관리방법
    • 모듈을 통한 매니지드 노드 관리방법
    • Ad-hoc 명령을 통한 매니지드 노드 관리
    • 테스크 단위로 매니지드 노드 관리
    • 플레이북을 이용한 매니지드 노드 관리