Cloud/IaC
IaC) Ansible
Adım Kim
2022. 9. 20. 15:40
Ansible 이란?
- RedHat에서 개발하고, Python으로 작성함
- 오픈소스 방식으로 서버의 프로비저닝, SW 배포등의 자동화를 관리해주는 도구
Ansible의 특징
- Agentless
- 타 자동화 도구(Puppet, Chef)들은 타겟 대상들에 agent 설치기반 pull 방식으로 동작
- Ansible은 타겟 대상들에게 Agentless 기반의 push방식으로 동작하므로 기술적, 지리적 제한이 보다 넓은 장점
- Idempotency
- 어떤 연산이 여러번 수행되더라도 결과가 달라지지 않는 성질
- Ansible은 동일한 모듈을 반복 실행해도 결과가 동일한 멱등성을 일관되게 수행할 수 있다
- Reusability
- 기준 시스템 구성 정보를 재사용하여 손쉽게 인프라 구성관리 수행
Ansible 구성요소
- 제어 노드 [ Control node ]
- Ansible을 실행하는 node
- Ansible 제공 프로그램을 이용하여 매니지드 노드 관리
- Ansible이 설치된 computer가 제어 노드가 된다.
- 매니지드 노드 [ Managed node ]
- Ansible로 관리하는 서버를 매니지드 노드 또는 host, target이라 한다.
- 매니지드 노드에는 Ansible이 설치되지 않는다.
- 인벤토리 [ Inventory ]
- 매니지드 노드 목록
- 인벤토리 파일은 호스트 파일이라고도 한다.
- 인벤토리 파일은 각 매니지드 노드에 대한 IP address, 호스트정보, 변수와 같은 정보를 저장
- 모듈 [ Module ]
- Ansible이 실행되는 코드 단위
- 미리 만들어진 동작관련 코드집합
- 각 모듈은 데이터베이스 처리, 사용자관리, 네트워크장치관리 등 다양한 용도로 사용
- 단위 모듈을 호출하거나 playbook에서 여러 모듈을 호출할 수 있다.
- 테스크 [ Task ]
- Ansible 작업단위
- Ad -hoc 명령을 사용하여 단일 작업을 한번 실행할 수 있다.
- 플레이북 [ Playbook ]
- YAML로 작성
- 순서가 지정된 테스크 목록
- 지정된 작업을 해당 순서로 반복적으로 실행할 수 있다.
- 플레이북에는 변수와 작업이 포함될 수 있다.
Ansible 동작 과정
- Ansible은 인벤토리 파일 내용을 참조하여 관리에 대한 매니지드 노드를 파악한다.
- Ansible을 통한 매니지드 노드 관리방법
- 모듈을 통한 매니지드 노드 관리방법
- Ad-hoc 명령을 통한 매니지드 노드 관리
- 테스크 단위로 매니지드 노드 관리
- 플레이북을 이용한 매니지드 노드 관리