본문 바로가기

Ryu's Tech

Ansible 개념 및 기본적인 내용 정리

Table of Contents

특징

 - YAML 코드 > Ansible Playbook

 - 순서대로 실행(위->아래)

 - 앱배포, 설정관리, 오케스트레이션

 - Agentless

 - SSH만 사용

설치

yum install -y ansible

모듈

 - 직접 코드 작성 없이 모듈을 통해 동작 제어

 - 자동화 코드의 API 느낌?

 - 참고 사이트

구성

인벤토리

호스트 정보를 가지고 있으며 변수 형태로 값 설정 가능

[web]
node-[1:3] ansible_host=10.42.0.[6:8]

[haproxy]
haproxy ansible_host=10.42.0.100 ansible_connection=ssh ansible_ssh_user=root ansible_ssh_pass=qwe123

[web:vars]
ansible_connection=ssh
ansible_ssh_user=root
ansible_ssh_pass=qwe123

Playbook

TASK

실제 스크립트 및 모듈의 실행.

모듈이 존재할 경우 모듈로 간단하게 실행이 가능

tasks:
- name: Ensure httpd package is present
yum:
name: httpd
state: latest
notify: restart httpd

- name: Ensure latest index.html file is present
copy:
src: files/index.html
dest: /var/www/html/

Handler

작업의 마지막에 위치하여 다른 작업이 성공(changed)되었을때만 호출되는 작업.

httpd restart와 같이 변경상황이 있을 때만 재시작 시키기 위해 핸들러 사용    

tasks:
- name: Ensure httpd package is present
yum:
name: httpd
state: latest
notify: restart httpd

- name: Ensure latest index.html file is present
copy:
src: files/index.html
dest: /var/www/html/

handlers:
- name: Restart httpd
service:
name: httpd
state: restarted

Roles

플레이북을 패키지 형태로 구성

아래와 같은 디렉토리 구조로 구성

공유하기 쉬운 형태로 구성. galaxy 홈페이지에서 공유됨.

playbook에 들어갈 내용을 roles로 정의하게 되면서 task의 재활용/공유 등에 이점

site.yml
roles/
common/
files/
templates/
tasks/
handlers/
vars/
defaults/
meta/
apache/
files/
templates/
tasks/
handlers/
vars/
defaults/
meta/

site.yaml

playbook이 아래와 같이 roles로 정의되고 playbook 자체는 단순해짐.

---
- name: Execute common and apache role
hosts: web
roles:
- common
- apache

Ansible Tower

Enterprise

user/organization/teams 로 구분해 그룹을 만들고 RBAC 제공

LDAP 연동

HA 제공

로그/감사

기업 내 운영에 필요한 요건들 제공 

멀티 플레이북 워크플로우

플레이북 조합을 통한 워크플로우 관리를 GUI로 구현

동영상 소개