궁금한게 많은 개발자 노트

[ Ansible ] Ansible이란? 본문

DevOps

[ Ansible ] Ansible이란?

궁금한게 많은 개발자 2023. 1. 7. 22:20

Ansible이란?

Ansible은 Open Source SW Provisioning, Configuration, Application Deployment 역할을 하는 자동화 Tool로 사용됩니다.

기존에는 동일한 환경의 리눅스를 구축하기 위해 쉘스크립트에 패키지 설치, configuration파일 수정 등을 나열하고 스크립트를 실행시키는 것이 일반적이었다면, 클라우드 환경에서 관리 및 배포해야할 서버의 숫자가 급격하게 증가하는 요즘, 동시에 많은 서버에 동일한 환경을 배포하는 상황이 발생하고 쉘 스크립트로는 어려운 상황이 되었습니다.

 

이를 해결하기 위해 나온 개념이 IaC(Infrastructure as a Code)입니다. 이 개념은 쉽게 말해 컴퓨터의 인프라 구성을 코드로 작성하는 것을 의미합니다. Ansible 또한 IaC개념이 도입되어 인프라 설정을 코드로 작성하고 이를 모든 서버에 배포하는 등 특정 환경을 동일하게 유지할 수 있도록 도와줍니다.

 

Ansible의 특징

  • 시스템 구성 및 소프트웨어 배포 기능을 제공
  • 지속적인 배포와 다운 타임 없는 롤링 업데이트 지원
  • 주요 목적은 단순성과 사용의 용이성
  • YAML 언어를 사용하여 가독성 재고
  • 보안과 신뢰성을 중점
  • Idenmpotency(멱등성): 어떠한 연산이 여러번 수행되어도 그 결과가 달라지지 않는 성질. Ansible에서도 같은 모듈을 반복해서 실행해도 결과가 동일하게 출력됨으로써 멱등성을 일관되게 수행할 수 있다.

Ansible의 장점

  • SSH를 통한 구성으로 agentess:다른 자동화 도구들은 타겟 대상들에 Agent 설치를 기반으로한 PULL 방식으로 동작하지만 Ansible은 타겟 대상들에 Agent설치를 하지 않고 PUSH 방식으로 동작하기 때문에 기술적, 지리적 제한이 상대적으로 넓다.
  • YAML언어 사용으로 높은 접근성
  • 쉽고 단순한 구조로 높은 가독성
  • 변수 기능 사용으로 재 사용성 증가 (inventories)
  • 다양한 플랫폼을 지원

Ansible의 단점

  • DSL을 통한 로직 수행: 수시로 문서 확인이 필요 (Domain Specific Language)
  • 변수 값 확인의 어려움
  • 입출력/구성파일 간의 형식 일관성이 없음

 

Ansible의 기본 개념

1. Inventory: Inventory는 ansible에 의해 제어되어 Infrastructure as a Code의 대상이 될 Host또는 Client들의 목록을 정의하는 파일로 Host별로 적을 수도 있고 임의로 그룹화 할 수도 있습니다.

2. Playbook: Inventory파일에서 정의된 호스트에서 해야할 일들을 정의해둔 파일로 YAML format으로 구성되어 있습니다.

실제로 여러개의 Playbook을 생성해둔 뒤 Role요소를 활용하여 여러 Playbook을 묶어서 사용하기도 합니다.

3. Module: Playbook에서 정의한 명령들이 어떻게 수행될지 나타낸 요소입니다. Module은 일반적으로 사용 방법이 정의되어 있으므로 각 Module들의 option들을 미리 숙지할 필요가 있습니다. 

'DevOps' 카테고리의 다른 글

[ Ansible ] Ansible SSH Setting  (0) 2023.01.08
[ Ansible ] Ansible Vault  (0) 2023.01.08
[ Docker ] Docker란?  (0) 2023.01.07
[ AWS ] EC2 Instance Storage Section - 2  (0) 2022.12.09
[ AWS ] EC2 Instance Storage Section  (0) 2022.12.08
Comments