Configuration Management tools 로 Puppet, Chef, Ansible, Saltstack 대표적이다.
Ansible은 IaC (Infrastructure as Code)를 지향하는 자동화 관리 도구로 오픈 소스 기반으로 제작되었다.
Ansible을 구동하는 모듈 및 라이브러리는 Python을 기반으로 하며, YAML 포맷을 기반으로 플레이북을 실행시켜서 원하는 자동화를 구현하거나, Ad hoc 모드로 모듈을 실행시켜 상태를 조회해 볼 수 있다.
또한 기존 Chef/Puppet 처럼 기존에 알려진 IaC 솔루션들이 Target Host들에 Agent를 반드시 설치해야 하는 것과 비교해서, Ansible은 SSH를 기반으로 Target Host에 Agentless방식으로 자동화를 구성 관리한다.
이러한 동작방식은 기존의 Pull방식에서 , Agentless 기반의 Push 방식으로 동작하기 때문에 설치와 구성관리가 편리한 장점을 가지고 있다.
아키텍쳐
1.구조
- 2개의 주요 컴포넌트는 Ansible Controller와 Ansbile Target이다.
- 컨트롤러는 Target에 대해 어떤 구성을 내려 보낼지에 대한 Task들을 정의한다.
- YAML, ini 파일형식 모두 지원한다.
- 각 그룹에 대한 환경변수를 별도로 지정하려면 디렉토리 내부에 환경변수와 인벤토리 파일을 분리해서 지정해 주면 좀 더 체계화된 관리가 가능하다.
2.Module
Ansible은 Python Code를 호출해서 실행하는 방식이다. 따라서 많은 모듈이 설치되어 있는 것을 확인 할 수 있다.
이러한 이유로 Ansible은 제공되는 모듈에 따라 Python version 에 따라 일부 종속성이 생기며, 기본 Python이 설치되어 있어야 한다.
3.Playbook
Ansible Target에 구성정보를 내리거나, 정보를 가져올 때 사용할 수 있는 2가지 방법이 있다.
하나는 Playbook기반으로 Task를 정의하는 것이고, 다른 하나는 Adhoc 기반으로 단일 Task를 모듈과 함께 사용하는 방법이 있다.
여러 Task를 수행하거나, 서로 다른 역할을 기반으로 Config를 Target에 전달할 때는 , Playbook을 통해 별도 플레이북을 만들어서 사용하면 유용하다
Adhoc은 단일 모듈과 Task를 수행하는 일로 단순 작업이나 정보를 Gathering 할 때 사용하는 것이 유용하다.
Playbook은 YAML로 구성되어야 한다.
# Restart_Firewalld_Service.yml Playbook을 실행합니다.
Ansible-playbook --check --inventory=hosts Restart_Firewalld_Service.yml
#설명
--check : test로 수행합니다. 실제 작업이 수행되지 않습니다
--inventory=hosts : 작업 대상 서버의 목록이 들어 있는 파일의 위치입니다
Restart_Firewalld_Service.yml : 해당 playbook 파일을 실행합니다
!! 실행 user가 대상 서버들에 접속할 수 있도록 SSH pub key가 배포되어 있어야 하고, 실행하는 서버에 private key를 가지고 있어야 합니다. 옵션으로 SSH Key위치를 지정하거나 패스워드를 입력받을 수 있습니다.
!! 권한 변경을 위한 become이나 실행할 Inventory group 정보는 Playbook 내부에 정의되므로 별도로 옵션을 줄 필요는 없습니다
'Ansible' 카테고리의 다른 글
Ansible Variables (0) | 2023.06.27 |
---|---|
Ansible Module - Package (0) | 2023.06.27 |
Ansible Module - Setup (0) | 2023.06.27 |
Ansible Module - File (0) | 2023.06.27 |
Ansible Inventory (0) | 2023.06.27 |