Ansible이란?
Ansible은 여러 시스템에 코드를 동일하게 실행하는 도구입니다. 시스템 상태 체크, 시스템 구축 등 여러 시스템에 동일한 작업을 할 때 사용합니다.
아키텍처
Ansible은 control-node가 ansible을 실행하여 managed-node에 코드를 실행하는 구조입니다. control-node는 ssh프로콜을 사용하여 managed-node에 ansible모듈을 복사합니다. managed-node는 전달받은 ansible모듈을 파이썬으로 실행합니다.
Ansible이 실행되는 동안 managed-node 프로세스 상태를 확인하면, 파이썬이 Ansible모듈을 실행하고 있는 것이 보입니다.
Terrform과 비교
첫 번째 차이는 상태관리 입니다. Ansible은 상태가 없고 Terraform은 상태를 관리합니다. Ansible은 상태를 관리하지 않기 때문에 상태 비교과정이 없습니다. 그러므로 Ansible은 시스템이 이미 코드가 반영되어 있더라도 실행(Ansible 모듈에 따라 실행안할 수 있음)합니다. 반면 Terraform은 상태를 관리하므로 테라폼 코드가 이미 반영되어 있다면 코드를 실행하지 않습니다.
두 번째 차이는 코드 실행구조입니다. Ansible은 ssh프로토콜을 사용하여 코드를 실행하지만 terraform은 provider가 제공하는 API를 사용하여 코드를 실행합니다.
세 번째 차이는 사용목적입니다. Anisble은 여러 시스템에 동일한 작업을 할 때 사용합니다. 반면 Terraform은 주로 한 시스템(예: AWS, 솔루션)의 설정 또는 리소스 관리에 사용합니다.
Ansible을 운영할 때 장단점
장점
Ansible은 코드를 node에 복사해서 실행하기 때문에, Agent설치가 필요없는 Agentless입니다.
단점
ssh프로토콜을 사용하기 위한 설정이 필요합니다. 또한 control-node와 managed-node모드 파이썬 설치가 필요합니다. 따라서 파이썬 단점을 가지고 있습니다. 운영체제 종류와 버전에 민감하며 파이썬 버전에 따라 실행이 안되는 Ansible모듈이 있습니다.
'연재 시리즈' 카테고리의 다른 글
Ansible playbook (0) | 2024.01.14 |
---|---|
Ansible 사용방법 (0) | 2024.01.12 |
게임으로 배우는 AWS IAM(부제목: bigiamchallenge) (0) | 2023.09.03 |
S3 공개(public) 설정 - 버킷 policy 설정편 (1) | 2023.09.02 |
S3 공개(public) 설정 - ACL 설정편 (0) | 2023.09.02 |