1. Ansible 이란?
- Ansible (앤서블)은 여러 개의 서버를 효율적으로 관리할 수 있게 해주는 환경 구성 자동화 도구이다.
- IaC (Infrastrictire as Code) 를 지향하는 오픈소스
2. Ansible (앤서블) 요소
- 인벤토리 (Inventory)
- 어디서 수행할 것인지
- 플레이북 (Playbook)
- 무엇을 수행할 것인지
- 모듈 (Module)
- 어떻게 수행할 것인지
2.1. 인벤토리(Inventory)
인벤토리는 앤서블에 의해 제어될 대상을 정의한다. ini 형식과 yaml 형식이 있으니 편한 문법을 선택하여 사용하면된다. 여러 서버들의 SSH 접근 IP, 포트 , 리눅스 사용자와 같은 접속정보를 아래와 같이 정의한다.
ini 형식
master ansible_host=192.168.0.201 ansible_user=ubuntu
worker1 ansible_host=192.168.0.202 ansible_user=ubuntu
worker2 ansible_host=192.168.0.203 ansible_user=ubuntu
[all_nodes]
master
worker1
worker2
Ansible 설치시 기본 인벤토리는 /etc/ansible/hosts 이고, 인벤토리를 따로 만들어서 관리할 수 도 있다.
2.2. 플레이북 (Playbook)
플레이북은 인벤토리 파일에서 정의한 대상들이 무엇을 수행할 것인지 정의하는 역할을 하며 yaml 포맷으로 설정한다.
#!/usr/bin/env ansible-playbook
---
- hosts: all_nodes
become: true
tasks:
- name: Install Required System Packages
apt:
name: "{{ packages }}"
state: present
update_cache: yes
vars:
packages:
- apt-transport-https
- ca-certificates
- curl
- software-properties-common
- 위 yaml 파일은 system 설치를 수행하는 tasks 를 갖고있다.
- sudo apt-get install apt-transport-https \
ca-certificates \
curl \
software-properties-common -y 과 같은 역할을 한다.
2.3. 모듈 (Module)
모듈은 플레이북에서 task가 어떻게 수행될지를 정의하는 요소이다.
Ansible은 원격 호스트에서 또는 플레이북을 통해 직접 실행할 수 있는 모듈 라이브러리를 제공합니다.
공식 홈페이지에서 소개한 것과 같이 모듈은 일종의 라이브러리 플러그인 입니다.
- OS 작업 (패키지 설치 등)
- 파일 작업 (복사 등)
- 데이터베이스 작업 (테이블 관리 등)
'DevOps, Infra' 카테고리의 다른 글
vagrant multi machine (multi vm) (0) | 2023.02.24 |
---|---|
베이그런트 (Vagrant) Cheat Sheet (0) | 2023.01.24 |
[k6] 성능테스트 도구 (0) | 2023.01.10 |
[Keycloak] MSA 인증/인가 Open Source Solution Keycloak ? (0) | 2023.01.05 |
[ArgoCD]카나리 배포 (Canary Deployment) (0) | 2022.12.30 |