본문 바로가기
Ansible

Ansible

by 코딩+아빠 2023. 6. 27.

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