Ansible
동작구조
- SSH을 이용한 통신
- Master Server가 존재하지 않지만 Master 처럼 동작한다 (추후 Centos7-1(cont))
- Server에 Agent가 불필요함
- YAML 파일을 이용해서 구성한다
자동화
- Provisioning
- Sofrware Install
- 구성/설정 변경
- 파일전송
- Orchestration
- 다양한 서버와 장비에 대해서 자동으로 순서 실행
- Server, Router, Switch, Firewall, LoadBalancer, Storage, Database, Cloud etc
- 구성 관리
- 상태 확인
- Batch 처리
- Update 실행
- 보안 패치
특징
Agentless
- chef,puppet과는 다르게 Agent설치가 필요없음
접근 용이성
- 명령어를 한 줄씩 입력하는 것이 아니라 모아서 yaml 파일로 처리를 함
- playbook(스크립트와 유사)을 yaml형식의 파일로 관리
- yaml 파일의 뛰어난 가독성으로 인한 진입 장벽이 낮다
멱등성
- 어떤 실행을 해도 같은 결과를 출력하는 설징
비용 절감
- 사람의 노력적인 측면에서 인프라를 인력으로 수동으로 관리하지 않음으로 다른 생산적인 일에 더욱 집중을 할 수 있다
안정성
- Human Error 제거
재사용성
- 인프라를 코드화 하고 관련 리소스 그룹 및 모듈화 하여 필요 시 필요한 부분을 재사용이 가능하다
용어
Controller 서버 or Core
- 명령 전달 주체 또는 Ansible이 설치된 Hosts를 말함
인벤토리(Inventory = Ansible Hosts)
- 명령을 전달받는 객체 or 원격 서버
- /etc/ansible/hosts
Module
- Ansible 실행하는 Python Code 단위를 말한다
- https://docs.ansible.com/ansible/2.9/modules/list_of_all_modules.html
Task
- Ansible 작업 실행 단위
- 하나의 모듈이 하나의 작업을 한다
- Ad-hoc 명령을 통해 단일 작업을 수행 or Playbook을 작성해 여러 작업 실행
Ad-hoc
- Ansible 명령을 이용하여 단일 작업 수행
ex.
ansible -i inven.lst -m shell -a "/etc/passwd | grep root"