베하~~! 안녕하세요!
하 씨 가문의 영광 팀입니다! :)
이번에는 저번 주에 예.고! 한 것처럼 Ansible의 개념을 다뤄보도록 하겠습니다!
그럼 출발합니다~부릉부릉
※ 목차
▶ Ansible
Ansible은 IaC(Infrastructure Code)를 지향하는 자동화 관리 도구로 오픈 소스 기반으로 제작되었습니다.
Python을 기반으로 하며, YAML 포맷을 기반으로 Playbook을 실행시켜 원하는 자동화를 구현하거나, Ad hoc 모드로 모듈을 실행시켜 상태를 조회해 볼 수 있습니다.
*IaC는 앞에 내용에서 다뤄본것처럼 프로그래밍 코드로 Infra 구조를 관리하는 개념입니다.
<참고>
무선랜에는 Ad-hoc Mode와 Infrastructure Mode로 2가지 모드가 존재합니다.
💡 Ad-hoc Mode
- 독립된 device가 다른 device의 도움 없이 네트워크 망을 구성하는 것
- device의 LAN Card가 다른 device LAN Card로 직접 데이터 전송 가능
- Peer-to-Peer (P2P) Network
- 노트북을 무선 공유기로 만들기로 노트북과 휴대폰을 연결하여 노트북의 네트워크를 휴대폰에서 사용할 수 있습니다.
💡 Infrastructure Mode
- Access Point(AP) 중계기를 통하여 무선 LAN Card와 데이터 통신
- device들은 모든 데이터를 AP에게 보내고, AP가 전달하고자 하는 device나 다른 AP로 데이터를 보냅니다.
- 아래의 두 가지 모드의 서비스 방식이 존재합니다.
- Basic Service Set(BSS) : AP 1대를 이용하여 네트워크 구성. 소규모 지역에서 사용
- Extend Service Set(ESS) : 최소 2개의 BSS가 만나서 네트워크 구성. BSS로 구성하기엔 너무 범위가 넓은 경우 사용
Ansible 주요 특징
이제는 Ansible이 자랑하는 주요 특징에 대해 한번 알아보도록 하겠습니다.
Agentless
- 기존 Chef/Puppet처럼 기존에 알려진 IaC 솔루션들은 Target Host들에 Agent를 반드시 설치해줘야합니다.
- 하지만, Ansible은 SSH를 기반으로 원격 서버에 명령을 전달하기 때문에, 각 원격 서버에 접속해서 Agent를 설치해줄 필요가 없습니다.
- Agent 설치 단계를 제거함으로써 인프라 구축을 더 자동화에 가깝게 만들어줍니다.
접근 용이성
- 진정한 의미의 자동화를 위해서는 쉘 스크립트 파일을 실행만 시키면 쉘 스크립트 파일내에 있는 모든 명령이 주르륵 실해되듯이, 명령어들을 모아서 한번에 처리할 수 있어야합니다.
- 이러한 면에서 Ansible은 명령 모음집(Playbook)을 YAML형식의 파일로 관리합니다
- YAML파일의 휼룡한! 가독성 덕분에 사용자들이 느끼는 Ansible의 진입장벽이 낮습니다.
다양한 모듈 지원
- 버전이 지속적으로 패치되고, 넓은 사용자 층을 확보하게 되면서 많은 모듈들을 지원하고 있습니다.
- IaC 도구들 가운데, Ansible보다 훨씬 오래된 역사를 가지고 있는 툴들 보다도 많은 커뮤니티, 지원 모듈과 플러그 인을 가지고 있습니다.
멱등성
- Ansible하면 가장 먼저 떠오르는 주요특징인 멱등성은 연산을 여러번 수행하더라도 결과가 달라지지 않는 성질을 말합니다.
- Ansible에서는 YAML 스크립트 파일로 작성된 Playbook을 여러 차례 반복을 해도 결과를 동일하게 출력시켜, 결과가 달라지지 않도록 구성되어 있습니다.
- 또한, Task를 수행하기 전에 모듈의 상태를 먼저 체크하고, Task를 수행할 때도 추가된 것과 변화된 부분에 대한 정보들을 제공하여 일관성 있는 결과를 제공할 수 있습니다.
- 이러한 특징 덕분에 오동작이나 설정 오류 등으로 문제가 발생하는 것에 대해 우려할 수 있는 부분들을 해소하도록 도와줍니다.
Ansible 구성요소
마지막으로 Ansible이 어떻게 구성이 되어있는지 알아보겠습니다!
Ansible Control Node
"Ansible이 실행되고 있는 Server" 입니다.
Control Node를 통해 원격으로 다수의 Managed Node로 관리할 수 있습니다.
Managed Node
"Ansible을 통해 관리하고자 하는 Server" 입니다.
앤서블은 Agentless로 동작하기 때문에, Managed Node에는 Ansible이 설치되지 않습니다.
또한, Inventory에 작성되어 있는 대상입니다!
Inventory (host file)
- 자동화 관리 대상인 Managed Node 즉, Server목록이 작성되어 있습니다.
- /etc/ansible/hosts 파일에 이 원격 서버들 목록이 저장되어 있으며, 이 파일을 인벤토리라고 합니다.
- 여기에는 Managed Node의 IP Address, host 정보, 변수와 같은 정보들이 저장되어있습니다.
- 또한, Managed Nodes는 그룹화하여 관리할 수 있습니다. 그룹은 하위 그룹을 포함할 수 있으며, 한 호스트는 여러 그룹에 포함될 수 있습니다.
Module
- Ansible이 실행하는 코드 단위로써, 자동화 기능 내장 패키지로 하나의 완전한 단위 기능을 제공합니다.
- Ansible은 멱등성이 보장되는 다양한 기능의 모듈을 제공하며, 운영자는 모듈을 직접 실행하거나, 또는 Playbook을 통해서 체계적으로 실행할 수 있습니다.
💡 내장되어있는 Ansible 목록 참고
- Ansible version 2.9 기준
공식문서 : https://docs.ansible.com/ansible/2.9/modules/list_of_all_modules.html
API
Ansible Python API를 사용하여 Managed Node를 제외하고, Ansible을 확장하여 다양한 Python 이벤트에 응답하고, 다양한 플러그인을 작성할 수 있습니다.
Plugin
- 사용자가 직접 작성한 Module로 Ansible의 핵심 기능을 보강하는 역할 입니다
- Ansible은 Plugin 아키텍처를 사용하여 풍부하고 유연하며 확장 가능한 기능 세트를 활성화 합니다.
💡 공식적으로 지원하고 있는 Ansible Plugin 목록 참고
- https://docs.ansible.com/ansible/latest/plugins/plugins.html
- http://people.cs.uchicago.edu/~kauffman/brocade/icx/ansible_modules/plugins/lookup.html
추가적인 부분
Ansible tower
- 한마디로! Ansible GUI라고 보시면 됩니다
- Ansible의 불만 사항 중 하나는 적절한 GUI가 제공되지 않다는 것이였습니다.
- Ansible Tower는 Ansible을 위한 Web기반 UI이자 REST API로 실시간 노드 모니터링을 그래픽 기반으로 보여주는 Tool입니다.
- 기존 Command로 하던 작업을 UI로도 진행을 할 수 있음으로써 접근하기 쉬워졌습니다.
이로써 오늘은 Ansible 개념, 특징, 구성요소에 대한 내용을 한번 다루어보았습니다!
긴글을 읽어주셔서 감사하고 도움이 되셨으면 좋겠습니다~ >,<
다음시간에는 Terraform 과 Ansible의 관계에 대한 내용으로 찾아뵙겠습니다~ 뿅!
'INFRA > Operation' 카테고리의 다른 글
Linux Terraform & Ansible 설치 방법 (0) | 2022.05.10 |
---|---|
참고 : Terraform & Ansible외의 도구 개념 및 관계 - 2 (0) | 2022.05.02 |
참고 : terraform & Ansible외의 도구 개념 및 관계 - 1 (0) | 2022.04.28 |
Terraform & Ansible 관계 (0) | 2022.04.20 |
테라폼(Terraform)이란? - 개념, 장점, 관리툴 (0) | 2022.04.06 |
댓글