Ryu's Tech
Ansible 개념 및 기본적인 내용 정리
Ryusstory
2018. 2. 27. 14:56
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로 구현